XSLT:如何在不按内容排序的情况下反转输出

2024-01-31

我有一个项目清单:

<item>a</item>
<item>x</item>
<item>c</item>
<item>z</item>

我想要作为输出

z
c
x
a

我的文件中没有订单信息,我只想反转这些行。源文件中的最后一行应该是输出中的第一行。如何使用 XSLT 解决此问题,而不按项目内容排序,这会给出错误的结果?


我将介绍两个 XSLT 解决方案:

I. 带递归的 XSLT 1.0 请注意,此解决方案适用于任何节点集,而不仅仅是在节点是兄弟节点的情况下:

这种转变:

<xsl:stylesheet version="1.0"
 xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 <xsl:output omit-xml-declaration="yes" indent="yes"/>

    <xsl:template match="/*">
     <xsl:call-template name="reverse">
       <xsl:with-param name="pList" select="*"/>
     </xsl:call-template>
    </xsl:template>

    <xsl:template name="reverse">
      <xsl:param name="pList"/>

      <xsl:if test="$pList">
        <xsl:value-of
         select="concat($pList[last()], '&#xA;')"/>

        <xsl:call-template name="reverse">
          <xsl:with-param name="pList"
            select="$pList[not(position() = last())]"/>
        </xsl:call-template>
      </xsl:if>
    </xsl:template>
</xsl:stylesheet>

当应用于此 XML 文档时:

<t>
    <item>a</item>
    <item>x</item>
    <item>c</item>
    <item>z</item>
</t>

产生想要的结果:

z
c
x
a

二. XSLT 2.0 解决方案 :

<xsl:stylesheet version="2.0"
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:xs="http://www.w3.org/2001/XMLSchema">
    <xsl:output method="text"/>

  <xsl:template match="/*">
   <xsl:value-of select="reverse(*)/string(.)"
    separator="&#xA;"/>
  </xsl:template>
</xsl:stylesheet>

当此转换应用于同一个 XML 文档时, 产生相同的正确结果。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

XSLT:如何在不按内容排序的情况下反转输出 的相关文章

随机推荐

  • 将列添加到 SQL 查询结果

    我正在 SSRS 中整理一份报告 该数据集由 MS SQL 服务器的 SQL 查询填充 它使用 Union All 查询几个相似的表 问题是存在一些信息丢失 不同的表对应不同的工作地点 但这些表中没有一列包含该地点的名称 识别站点的唯一方法
  • Vue中,template、render、VNode是什么关系?

    在开发vue项目的过程中 遇到一些疑问template render VNode 阅读文档后https v2 vuejs org v2 guide syntax html https v2 vuejs org v2 guide syntax
  • 如何从 Yahoo! 抓取关键统计数据使用 R 进行财务? [复制]

    这个问题在这里已经有答案了 不幸的是 我还不是一个经验丰富的爬虫 然而 我需要使用 R 从雅虎财经抓取多只股票的关键统计数据 我对使用 rvest 包中的 read html html nodes 和 html text 直接从 html
  • 内嵌文本 - 带填充的背景颜色

    我需要制作一个背景颜色不是块的标题 只有文本背景是彩色的 Here is an image of what I have to archieve 这是我到目前为止所得到的 http jsbin com tiwuquze 1 edit htt
  • Textmate 中的自动完成

    有时我会观看有人使用文本伴侣的屏幕截图 我是一名 Rails 开发人员 所以这些是 Rails 屏幕截图 他们会输入如下内容 def 例如 并且 end 会自动出现在下面 我确实启用了 Rails 捆绑包 为什么我没有发生这种情况 Than
  • 使用 R 绘制二次回归线

    我对 R 很陌生 而且对 R 也很陌生plotly 我正在尝试绘制二次 即二次多项式 回归线 一旦一些价格与年份 以及相同的价格与某些整数列表 可以相同 比方说分数 本例中的数据是 price c 995 675 690 600 612 7
  • 如何强制 r optim 运行更多迭代?

    R Optim 比我想要的更早停止迭代 我使用 method L BFGS B 因为我需要不同参数的不同界限 我知道我可以通过 control gt maxit 设置最大迭代次数 但 optim 没有达到最大值 我想 control gt
  • Emacs - Ubuntu 初始化

    在 ubuntu 上加载 emacs 的行为很奇怪 似乎发生了一些初始化 这些初始化不在 emacs 中 也不在 emacs 报告通过 emacs debug init 加载的任何文件中 我发现了一些与字体相关的调整大小的参考 但这种行为似
  • 依赖注入架构设计——服务类循环引用

    我有以下服务类别 public class JobService private UserService us public JobService UserService us this us us public void addJob J
  • Objective C - 访问 zip 中的文件而不解压 zip

    我正在寻找一种访问 zip 文件中的文件而不提取整个文件的方法 我在互联网上找到的所有 zip 解决方案似乎都提取了整个 zip 有谁知道解决方案吗 Google 有一个基于 minizip 的 Objective C 库 http cod
  • 如何从事件中删除所有事件处理程序?

    我有以下课程 Public Class SimpleClass Public Event SimpleEvent Public Sub SimpleMethod RaiseEvent SimpleEvent End Sub End Clas
  • 如何处理 csv 列表中的单词[重复]

    这个问题已经存在了 我遇到了基于以下程序的问题 Code Download the helper library from https www twilio com docs python install import os from tw
  • 如何使用 python 的 cassandra-driver 将地图类型插入 cassandra

    因为 cassandra 支持地图类型 我想将 python 字典插入 cassandra 中 我试过这个 cql Insert into table name my key name my dict values s s s my key
  • 具有水平滚动功能的 SVG

    我正在尝试用 D3 制作 SVG 图表 https cdnjs cloudflare com ajax libs d3 3 5 17 d3 min js https cdnjs cloudflare com ajax libs d3 3 5
  • jQuery 延迟方法和 ajax beforeSend()

    通过使用 ajax 中的延迟对象 成功回调可以替换为deferred method done 错误回调 acn 替换为deferred method fail 完整回调可以替换为always 通过使用 var jqxhr ajax url
  • Android 和 BouncyCastle 的 IllegalAccessError

    我正在尝试实现时间戳请求 如下所示 http bouncy castle 1462172 n4 nabble com Timestamp request and response td1558231 html http bouncy cas
  • Flask 中 AJAX 身份验证的 CSRF 保护

    我想在网站上使用 AJAX 化登录和注册表单 到目前为止 我一直使用 WTForms 主要是为了它内置的 CSRF 保护 但对于这个项目 我觉得不值得 额外的抽象层 因此令人沮丧 对于一些应该漂亮的东西简单的 所以我遇到了这个片段 http
  • 如何参数化 xunit 类装置?

    xUnit 提供了 共享 类装置的概念 如中所述测试之间共享上下文 https xunit net docs shared context 到目前为止我还没有弄清楚是否有一种方法可以对此类装置进行参数化 例如 如果DatabaseFixtu
  • VB.NET:为 IF 条件内的变量赋值?

    是否有可能为 VB NET 中 IF 条件内的变量赋值 像这样的东西 Dim customer As Customer Nothing If IsNothing customer GetCustomer id Then Return Fal
  • XSLT:如何在不按内容排序的情况下反转输出

    我有一个项目清单