J'ai un ensemble de nœuds Sitecore:XSL au groupe article
<item>
<item>
<item />
</item>
<item /> <!-- (1) -->
<item />
</item>
<item>
<item />
<item />
</item>
je peux obtenir le chemin de ces utilisant une fonction sc: (.) Chemin, qui retourne quelque chose comme «/article/article » pour le point marqué (1).
Ce que je veux être en mesure de faire est de regrouper l'élément en fonction de leur chemin.
Donc ma sortie serait quelque chose comme:
<ul>
<li>in item
<ul>
...
</ul>
</li>
<li>in item/item
<ul>
...
</ul>
</li>
</ul>
Je joue avec les axes précédents en ce moment, comme dans le code suivant:
<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>
... mais sc: chemin (précédent) ne renvoie rien. D'où mon chèque ne fonctionne pas.
Qu'est-ce que je fais mal?
où vient processedResult $ de? Avez-vous accès aux- s sous la forme d'un document ou sont-ils renvoyés en tant que RTF par une sorte de fonction? –
Tomalak
Désolé, $ processedResult est la structure- . C'est le résultat d'une opération d'ensemble de nœuds. Cela produit le XML prévu. –