Extension methods 从Sitecore XSLT帮助函数返回项目列表

Extension methods 从Sitecore XSLT帮助函数返回项目列表,extension-methods,sitecore,Extension Methods,Sitecore,我想从Sitecore中的XSLT助手函数返回一个项目列表。这些项可能来自内容树中的多个不同位置,因此不能使用简单的XPath表达式 我怀疑我需要对XPathNodeIterator类做些什么,但是我不太清楚如何创建一个公开列表而不是内容树的连续部分的类 我知道我可以返回一个ID列表,然后在XSLT中迭代这些ID(我目前正在做的事情),但是它很混乱,我想把它去掉。有人知道怎么做吗 我正在使用Sitecore 6.2。是。根据您想要进行的项目选择的性质,有许多方法可以实现这一点 下面的内容应该可以

我想从Sitecore中的XSLT助手函数返回一个项目列表。这些项可能来自内容树中的多个不同位置,因此不能使用简单的XPath表达式

我怀疑我需要对XPathNodeIterator类做些什么,但是我不太清楚如何创建一个公开列表而不是内容树的连续部分的类

我知道我可以返回一个ID列表,然后在XSLT中迭代这些ID(我目前正在做的事情),但是它很混乱,我想把它去掉。有人知道怎么做吗


我正在使用Sitecore 6.2。

是。根据您想要进行的项目选择的性质,有许多方法可以实现这一点

下面的内容应该可以做到这一点

公共XPathNodeIterator MyFunction(Item[]itemsToReturn)
{
XmlDocument doc=新的XmlDocument();
doc.LoadXml(@“);
foreach(itemsToReturn中的项目i)
doc.DocumentElement.AppendChild(XmlUtil.NavigatorToNode(Factory.CreateItemNavigator(i),doc,true,新字符串[]{“item”},新字符串[0]);
XPathNavigator nav=doc.CreateNavigator();
返回导航选择(“/items/*”);
}

我没有时间完全测试这一点,但它应该会给您带来正确的方向:-)

是的。根据您想要进行的项目选择的性质,有许多方法可以实现这一点

下面的内容应该可以做到这一点

公共XPathNodeIterator MyFunction(Item[]itemsToReturn)
{
XmlDocument doc=新的XmlDocument();
doc.LoadXml(@“);
foreach(itemsToReturn中的项目i)
doc.DocumentElement.AppendChild(XmlUtil.NavigatorToNode(Factory.CreateItemNavigator(i),doc,true,新字符串[]{“item”},新字符串[0]);
XPathNavigator nav=doc.CreateNavigator();
返回导航选择(“/items/*”);
}

我没有时间完全测试这一点,但它应该给您提供正确的方向:-)

我会坚持使用ID,但可能会将它们作为XML结构而不是字符串返回以进行解析。XPathNodeIterator方法可能会干扰页面编辑器中的内联编辑,以及其他XSL扩展,如生成URL


.

我会坚持使用ID,但可能会将它们作为XML结构返回,而不是作为要解析的字符串返回。XPathNodeIterator方法可能会干扰页面编辑器中的内联编辑,以及其他XSL扩展,如生成URL


.

谢谢您提供的额外信息。。。我知道我不会为子项等获取附加项XML。页面编辑器和URL生成功能是否依赖于这些项目的存在?感谢您提供的额外信息。。。我知道我不会为子项等获取附加项XML。页面编辑器和URL生成功能是否依赖于这些项目的存在?