我想从Sitecore中的一个XSLT助手函数返回一个项目列表。可以想象,这些项可能来自内容树中的多个不同位置,因此不能使用简单的XPath表达式。
我怀疑我需要对XPathNodeIterator类做些什么,但是我不太清楚如何创建一个公开列表而不是内容树的连续部分的类。
我知道我可以返回一个rid列表,然后在XSLT中迭代这些rid(我目前正在做的事情),但是它很混乱,我想摆脱它。有人知道怎么做吗?
我正在使用Sitecore 6.2。
发布于 2010-08-06 07:06:44
是。根据你想要做的项目选择的性质,有很多方法可以实现这一点。
下面的代码应该可以解决这个问题
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/*" );
}
我没有时间完全测试它,但它应该会将您带到正确的方向:-)
发布于 2010-08-08 16:13:33
我会坚持使用I,但可能会将它们作为XML结构返回,而不是以字符串的形式进行解析。XPathNodeIterator方法可能会干扰页面编辑器中的内联编辑,以及其他XSL扩展(如生成URL)。
https://stackoverflow.com/questions/3417481
复制相似问题