我想對我的xml文件進行兩個不同的字段排序: 標識符和影響。 我想通過標識符排列元素,除了必須出現最後一個XX產品的元素外。xslt在兩個不同的字段中進行雙重排序
我的XML文件是
<evolutionlist>
<date>
<object>
<identifier>id5</identifier>
<impact>
<product>AA</produit>
</impact>
</objet>
<object>
<identifier>id2</identifier>
<impact>
<product>XX</produit>
</impact>
</objet>
<object>
<identifier>id4</identifier>
<impact>
<product>BB</produit>
</impact>
</objet>
<object>
<identifier>id3</identifier>
<impact>
<product>XX</produit>
</impact>
</objet>
<object>
<identifier>id1</identifier>
<impact>
<product>CC</produit>
</impact>
</objet>
</date>
</evolutionlist>
的expceted結果將是:
<evolutionlist>
<date>
<object>
<identifier>id1</identifier>
<impact>
<product>CC</produit>
</impact>
</objet>
<object>
<identifier>id4</identifier>
<impact>
<product>BB</produit>
</impact>
</objet>
<object>
<identifier>id5</identifier>
<impact>
<product>AA</produit>
</impact>
</objet>
<object>
<identifier>id2</identifier>
<impact>
<product>XX</produit>
</impact>
</objet>
<object>
<identifier>id3</identifier>
<impact>
<product>XX</produit>
</impact>
</objet>
</date>
</evolutionlist>
我的XSLT代碼(不工作,雖然)是
<xsl:for-each select="//date">
<tr>
<td>
<xsl:value-of select="./@id"/>
</td>
</tr>
<xsl:for-each select="./object">
<xsl:choose>
<xsl:when test="impact/produit = 'XX'">
<xsl:sort select="impact/produit" order="descending"/>
</xsl:when>
<xsl:otherwise>
<xsl:sort select="identifiant"/>
</xsl:otherwise>
</xsl:choose>
...
</xsl:for-each>
感謝您的幫助,更加清楚,不幸的是,我可以有ZZ產品,它根據自己的ID排序,只有XX產品必須出現在最後,對不起,我沒有足夠精確 – stackSaru
這就是爲什麼我使用「when」條件 – stackSaru
你不需要'when'。您可以選擇模板和謂詞,這也更有效。我添加了一個將'XX'元素放在最後的解決方案。 – helderdarocha