我想对我的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