我希望在XSL/FO中反转一个for-each循环。
例如,xml
<data>
<record id="1"/>
<record id="2"/>
<record id="3"/>
<record id="4"/>
<record id="5"/>
<record id="6"/>
</data>
使用xsl
<xsl:for-each select="descendant-or-self::*/record">
<xsl:value-of select="@id"/>
</xsl:for-each>
我正在寻找输出654321,而不是123456
这怎麽可能?
发布于 2011-05-04 19:28:20
使用xsl:sort不是用于按@id
排序,而是用于按position()
排序
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:template match="/data">
<xsl:for-each select="descendant-or-self::*/record">
<xsl:sort select="position()" data-type="number" order="descending"/>
<xsl:value-of select="@id"/>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
发布于 2011-05-04 19:25:55
是的,Alexander是对的-尽管忘记了数据类型:
<xsl:for-each select="descendant-or-self::*/record">
<xsl:sort select="@id" order="descending" data-type="number" />
<xsl:value-of select="@id"/>
</xsl:for-each>
(如果不这样做,您将遇到数字大于9的排序问题)
发布于 2011-05-04 19:25:02
xsl:sort是你的朋友;
<xsl:for-each select="descendant-or-self::*/record">
<xsl:sort select="@id" order="descending" />
<xsl:value-of select="@id"/>
</xsl:for-each>
https://stackoverflow.com/questions/5882519
复制相似问题