按输出的特定顺序对属性进行排序

2023-12-07

如何在不显式编写的情况下按特定顺序编写元素属性?

考虑:

<xsl:template match="Element/@1|@2|@3|@4">
    <xsl:if test="string(.)">
        <span>
            <xsl:value-of select="."/><br/>
        </span>
    </xsl:if>
</xsl:template>

属性应该按顺序出现1, 2, 3, 4。不幸的是,您无法保证 XML 中属性的顺序,它可能是<Element 2="2" 4="4" 3="3" 1="1">

因此上面的模板将生成以下内容:

<span>2</span>
<span>4</span>
<span>3</span>
<span>1</span>

理想情况下,我不想测试每个属性是否有值。我想知道是否可以以某种方式设置显示顺序?或者我是否需要明确地执行此操作并重复 if 测试,如下所示:

<xsl:template match="Element">

    <xsl:if test="string(./@1)>
        <span>
            <xsl:value-of select="./@1"/><br/>
        </span>
    </xsl:if>
    ...
    <xsl:if test="string(./@4)>
        <span>
            <xsl:value-of select="./@4"/><br/>
        </span>
    </xsl:if>
</xsl:template>

在这种情况下可以做什么?


在之前的问题中,您似乎使用了 XSLT 2.0,因此我希望这次也可以使用 XSLT 2.0 解决方案。

顺序不是在模板的匹配模式中确定的,而是在执行 xsl:apply-templates 时确定的。因此(使用 XSLT 2.0)您可以简单地按照您想要的顺序编写属性序列,例如<xsl:apply-templates select="@att2, @att1, @att3"/>将按该顺序处理属性。

XSLT 1.0 没有序列,只有节点集。要产生相同的结果,请使用xsl:apply-templates按要求的顺序,例如:

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

按输出的特定顺序对属性进行排序 的相关文章

随机推荐

  • java中如何将字符串转换为运算符

    我想转换一些String对于这样的操作员 int value 1 int valueToCompare 3 String operation lt if value operation valueToCompare some operati
  • 我需要使用多个using 语句吗?

    出于实用性考虑 这两个类都是一次性的 我了解 using 块的作用 但我不确定它可以或需要使用的所有方式 例如 这是正确的吗 using MyClass myClass new MyClass params myClass name Ste
  • Numpy:我应该使用 newaxis 还是 None?

    在 numpy 中 可以使用切片语法中的 newaxis 对象来创建长度为 1 的轴 例如 import numpy as np print np zeros 3 5 np newaxis shape shape will be 3 1 5
  • Internet Explorer 页面上的 SendMessage user32dll

    我的桌面上打开了一个 Internet Explorer 页面 网页名称为TEST 使用 user32 dll 中的 FindWindow 我可以在窗口上获取处理程序 在此页面中 我有一个名为 Go 的按钮 还有两个名为 Name 和 Su
  • 自动从 Google AppMaker 数据源导出数据

    有谁知道我们怎样才能生成报告从数据中数据源在 Google AppMaker 中自动地 例如 在凌晨 12 点生成报告 而不是每次用户需要报告时手动单击部署中的导出数据 我在上面看到过类似的东西从 Google AppMaker 导出数据但
  • 使用 CData 部分包装属性 - XML 序列化 C#

    我需要以这样的方式序列化我的对象 即我想要的属性将包裹在 CData 部分中 我希望我能做这样的事情 public class Order JsonProperty public int OrderId get set JsonProper
  • 如何在 WCF 服务中同步数据库访问?

    我以前使用过 WCF 服务 现在我有一个新项目即将开始 我仍处于设计阶段 我想知道处理以下场景的最佳方法是什么 我将让多个客户端同时连接到我的 WCF 服务 在服务上触发不同的方法 操作合约 A 触发的一些方法只是纯粹的 读取 方法 例如
  • C# 从 XE 获取当前汇率

    我需要在我的应用程序上显示当前汇率 是否可以检索汇率http www xe com XE转换器 这是我尝试过的 public string CurrencyConversion decimal amount string fromCurre
  • 如何将 Elasticsearch 与 MongoDB 结合使用?

    我浏览过许多关于配置 Elasticsearch for MongoDB 以索引 MongoDB 中的集合的博客和网站 但没有一个是简单的 请向我解释一下安装elasticsearch的逐步过程 其中应包括 配置 在浏览器中运行 我将 No
  • 使用批处理检查路径是文件还是文件夹[重复]

    这个问题在这里已经有答案了 我试图使用批处理文件检查程序中定义的路径是文件还是文件夹 一切工作正常 但是当我尝试提供不是文件或文件夹或无权访问它的路径时 它会给出输出 它是一个文件 这是代码 ECHO off SETLOCAL ENABLE
  • 调整 HTML 地图图像的大小

    在一个小型网站中 页面仅由使用 html 地图的单个图像和多个链接组成 我想调整图像的大小 较小的图像 但调整所有图像的大小并更改所有链接坐标是非常痛苦的 div style text align center width 586px ma
  • Mac 上 fopen 函数的问题

    我正在 Mac 上制作一个简单的应用程序 OSX Mavericks 用 clang 编译 问题是 当我尝试使用相对路径打开文件时 它不起作用 如果我使用绝对路径它就有效 例如 如果我尝试 fp fopen file txt r 它返回NU
  • 如何跨多个组件重用 Angular Observable? (为了避免重复请求两次?)

    我有一个服务 MyHttpService 其中包含如下可观察值 grabData return this http get myaddress map res Response gt return res json catch error
  • vba:将变量传递到错误句柄中

    我有一个声明 on error go to label 但是我想将导致错误的变量传递到标签中 这可能吗 您可以使用 Err 来获取错误编号和描述 Sub Function SomeName On Error GoTo Err SomeNam
  • Mongodb 不同聚合

    我正在尝试使用聚合框架在 mongo 中执行组计数 但结果并不完全符合预期 考虑下面的集合 people gt insert array user id gt 1 day gt Monday age gt 18 people gt inse
  • puppet 如何向操作系统发送命令?

    我是 Puppet 的新手 但很了解这些概念 Puppet 清单调用 Puppet 模块 模块执行实际任务 我试图了解 Puppet 模块层发生的情况 该命令实际上是如何执行的 以下面的例子为例 实际向操作系统传递了哪些命令 另外 它是在哪
  • 如何使用 LESS 将参数传递给 CSS 类?

    不确定使用 LESS 是否可以 但我看到 rotate degrees 这仅适用于 LESS 我希望能够编写一个 CSS 类并将数字作为 HTML 中的参数传递 例如 div class 这只是我使用的重复 CSS 类的一个示例 但即使传递
  • 如何从网页/网络表单发送电子邮件?

    有哪些技术可用于通过网页或网页上的表单发送电子邮件 我有一些背景想法 您可以将表单数据发布到脚本 但我真的不知道 cgi 脚本是什么 我很想知道这是否是建议的方法 或当前的做法是什么是 这只是为了给用户提供一些联系运营商的方式 页内表单似乎
  • 如何使用 nuget 分发特定于处理器的 WindowsStore 程序集

    我有一个程序集 它链接到 Windows 应用商店应用程序的本机 Sqlite 由于 Sqlite 是本机的 因此该程序集无法使用 AnyCPU 配置文件 相反 它必须提供单独的 AnyCPU x86 x64 程序集 我想通过 nuget
  • 按输出的特定顺序对属性进行排序

    如何在不显式编写的情况下按特定顺序编写元素属性 考虑