Попытка выяснить, как выбрать следующий узел XSLT-узла, когда узел был отсортирован в XSLT 1.0. Я искал, но не могу найти ничего для отсортированных узлов, так как он выбирает только брата из несортированного узла.Выбор следующего собора отсортированного узла
данных
<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
Можно попробовать использовать число мод (позиция()) 2 = 1 внутри теста. Поскольку position() вернет string.im не уверен, будет ли это работать, просто попробуйте –