首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何以相反的顺序执行XSL:for-each

如何以相反的顺序执行XSL:for-each
EN

Stack Overflow用户
提问于 2011-05-04 19:16:28
回答 3查看 16.6K关注 0票数 25

我希望在XSL/FO中反转一个for-each循环。

例如,xml

代码语言:javascript
运行
复制
<data>
  <record id="1"/>
  <record id="2"/>
  <record id="3"/>
  <record id="4"/>
  <record id="5"/>
  <record id="6"/>
</data>

使用xsl

代码语言:javascript
运行
复制
<xsl:for-each select="descendant-or-self::*/record">
   <xsl:value-of select="@id"/>
</xsl:for-each>

我正在寻找输出654321,而不是123456

这怎麽可能?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-05-04 19:28:20

使用xsl:sort不是用于按@id排序,而是用于按position()排序

代码语言:javascript
运行
复制
<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>
票数 37
EN

Stack Overflow用户

发布于 2011-05-04 19:25:55

是的,Alexander是对的-尽管忘记了数据类型:

代码语言:javascript
运行
复制
<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的排序问题)

票数 5
EN

Stack Overflow用户

发布于 2011-05-04 19:25:02

xsl:sort是你的朋友;

代码语言:javascript
运行
复制
<xsl:for-each select="descendant-or-self::*/record">
   <xsl:sort select="@id" order="descending" />
   <xsl:value-of select="@id"/>
</xsl:for-each>
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5882519

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档