2010-08-05 6 views
1

Sitecore의 XSLT 도우미 함수에서 항목 목록을 반환하고 싶습니다. 항목은 내용 트리 안의 여러 다른 위치에서 온 것일 수 있으므로 간단한 XPath 표현식을 사용할 수 없습니다.Sitecore XSLT 도우미 함수에서 항목 목록 반환

XPathNodeIterator 클래스를 사용하여 무언가를해야한다고 생각하지만 콘텐츠 트리의 인접 부분이 아닌 목록을 표시하는 방법을 알아낼 수 없습니다.

나는 ID 목록을 반환하고 XSLT (현재 내가하고있는 것)에 대해 반복 할 수 있음을 알고 있지만, 지저분하고 제거하려고합니다. 누구든지이 작업을 수행하는 방법을 알고 있습니까?

Sitecore 6.2를 사용하고 있습니다.

답변

1

예. 원하는 항목 선택의 성격에 따라 여러 가지 방법이 있습니다.

다음은 트릭

public XPathNodeIterator MyFunction(Item[] itemsToReturn) 
{ 
    XmlDocument doc = new XmlDocument(); 
    doc.LoadXml(@"<items />"); 
    foreach (Item i in itemsToReturn) 
     doc.DocumentElement.AppendChild(XmlUtil.NavigatorToNode(Factory.CreateItemNavigator(i), doc, true, new string[] { "item" }, new string[ 0 ])); 
    XPathNavigator nav = doc.CreateNavigator(); 
    return nav.Select("/items/*"); 
} 

나는 이것을 완전히 테스트하는 시간이 아니라,하지만 그것은 :-)

+0

작동하는 것 같습니다. 매우 감사합니다! – Matt

0

내가 ID를 사용하여 부착 할 올바른 방향을 보내야을해야 다음 ,하지만 구문 분석 할 문자열 대신 XML 구조로 반환 할 수도 있습니다. XPathNodeIterator 방식은 페이지 편집기에서 인라인 편집과 URL 생성과 같은 다른 XSL 확장을 방해 할 수 있습니다.

See also.

+0

추가 정보를 가져 주셔서 감사합니다 ... 나는 아이 항목 등을위한 추가 항목 XML을 얻지 못할 것이라는 것을 알고 있습니다. 페이지 편집기와 URL 생성 기능은 이러한 항목이있는 것에 의존합니까? – Matt