【发布时间】:2016-07-22 00:25:02
【问题描述】:
当节点已在 XSLT 1.0 中排序时,尝试解决如何选择 XSLT 节点的下同兄弟节点。我已经搜索但找不到任何排序节点,因为它只选择 unsorted 节点的兄弟节点。
数据
<data>
<number order='4'>Four</number>
<number order='1'>One</number>
<number order='3'>Three</number>
<number order='2'>Two</number>
</data>
代码
<xsl:for-each select="/data/number">
<xsl:sort select="@order"/>
<xsl:if test="position() mod 2 = 1">
<xsl:value-of select="text()"/>
<xsl:text> - </xsl:text>
<xsl:value-of select="following-sibling::*/text()"/>
</xsl:if>
</xsl:for-each>
预期输出
One - Two
Three - Four
实际输出
One - Three
Three - Two
【问题讨论】:
-
可以尝试在测试中使用 number(position()) mod 2 = 1。因为 position() 将返回一个字符串。我不确定它是否会起作用,只是试一试