У меня есть набор узлов Sitecore:XSL к пункту группы
<item>
<item>
<item />
</item>
<item /> <!-- (1) -->
<item />
</item>
<item>
<item />
<item />
</item>
Я могу получить путь их, используя функцию СБН: (.) Путь, который возвращает что-то вроде «/ пункт/пункт» для точка отмечена (1).
Что я хочу, чтобы сделать, это группировать элемент на основе их пути.
Так что мой результат будет что-то вроде:
<ul>
<li>in item
<ul>
...
</ul>
</li>
<li>in item/item
<ul>
...
</ul>
</li>
</ul>
Я играл с предыдущими осями в данный момент, как показано в следующем коде:
<xsl:for-each select="exsl:node-set($processedResult)/item">
<xsl:sort
select="substring-before(substring-after(sc:path(.),'/sitecore/media library/'),'.aspx')"
data-type="text"
order="ascending" />
<xsl:variable
name="path"
select="search:GetFriendlyPath('/sitecore/media library/',sc:path(.))" />
<!-- returns: item/item from /sitecore/media library/item/item/item.aspx -->
<xsl:variable name="lastPath">
<xsl:choose>
<xsl:when test="sc:path(preceding)">
<xsl:value-of
select="search:GetFriendlyPath('sitecore/media library',sc:path(preceding))" />
</xsl:when>
<xsl:otherwise>none</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:if test="$path != $lastPath"> <!-- grouping test -->
<li>
<strong>in <xsl:value-of select="$path" /></strong>
</li>
</xsl:if>
<li>
<!-- render detail -->
</li>
</xsl:for-each>
... но СБН: путь (previous) ничего не возвращает. Поэтому мой чек не работает.
Что я делаю неправильно?
откуда $ processedResult взялось? У вас есть доступ к- s в виде документа или они возвращаются как RTF с помощью какой-либо функции? –
Tomalak
Извините, $ обработанный результат - структура- . Это результат операции с набором узлов. Это создает целевой XML. –