XSLT 具有相同匹配的多个模板

2024-02-27

我目前坚持应用多个 xsl:template 来对元素进行相同的匹配。下面的例子显示了这个问题。

有谁知道使用两个“模板匹配”创建预期输出的 XSL 模板吗?由于技术原因,不可能将两个“模板”元素放在一起。

Input

<root>
    <elem>123.45</elem>
    <elem>789.12</elem>
</root>

XSLT

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

    <xsl:decimal-format name="de" decimal-separator="," grouping-separator="."/>

    <xsl:template match="@* | node()">
        <xsl:copy>
            <xsl:apply-templates select="@* | node()"/>
        </xsl:copy>
    </xsl:template>

    <xsl:template match="/root/elem">
        <xsl:element name="renamed">
            <xsl:apply-templates select="@* | node()"/>
        </xsl:element>
    </xsl:template>

    <xsl:template match="/root/elem">
        <xsl:element name="elem">
            <xsl:value-of select="format-number(.,'#.##0,0000','de')" />
        </xsl:element>
    </xsl:template>

</xsl:stylesheet>

Output:

<root>
    <elem>123,4500</elem>
    <elem>789,1200</elem>
</root>

预期输出:

<root>
    <renamed>123,4500</renamed>
    <renamed>789,1200</renamed>
</root>

根据 XSLT 规范,拥有两个相同优先级的模板匹配同一节点是错误的,并且:

如果[处理器]没有发出错误信号,它必须通过从剩下的匹配模板规则中选择样式表中最后出现的规则来恢复。 (source http://www.w3.org/TR/xslt#conflict)

这就是第二个模板获胜的原因。

如果您想将数字格式分解为可重复使用的组件,我会考虑命名模板

<xsl:template name="format">
  <xsl:value-of select="format-number(.,'#.##0,0000','de')" />
</xsl:template>

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

XSLT 具有相同匹配的多个模板 的相关文章

随机推荐

  • 如何解决此脚本中的 IE ClearType + jQuery 不透明度问题?

    我遇到了一个相当常见的问题 或者看起来是这样 经过一番谷歌搜索后 IE 在使用 jQuery 动画不透明度时会弄乱粗体文本和透明 png 您可以在此处查看示例 http dev gentlecode net dotme index samp
  • 从 Photoshop 动作到 Photoshop 脚本?

    我希望 Photoshop 自动为给定文件夹执行以下任务 加载给定文件夹中的所有 PNG 文件 将每个文件的模式转换为RGB color 为每个文件添加一层 将文件另存为 PSD 并放在同一文件夹中 有人告诉我这可以通过 Photoshop
  • R 创建带有 R CMD 检查的参考手册

    我正在编写一个 R 包 并希望制作该包中所有函数的 pdf 参考手册 我从here http grokbase com p r r devel 124dzqqxhg rd creating a reference manual during
  • Woocommerce 3 中无需在线支付交易的订单的 Google 分析集成

    我正在尝试在 Google 分析中添加有关订单的信息 但统计中并没有显示订单的接收信息 该网站不使用在线支付 或许原因与此有关 我用的是answer https stackoverflow com questions 52174961 go
  • Passport JS 中的 req.isAuthenticated() 是如何实现的? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 在passportJS文档中 我认为passportisAuthenticated功能没有很好地记录 How is req isAut
  • 在 .NET Core MVC 应用程序中使用 TempData 时出现错误 500

    你好 我正在尝试添加一个对象TempData并重定向到另一个控制器操作 我在使用时收到错误消息 500TempData public IActionResult Attach long Id Story searchedStory this
  • 固定div与滚动条重叠

    我在使用滚动条将固定 div 放置在其他 div 中时遇到问题 它与滚动条重叠 它发生在 safari 和 ie 11 下 当我将 z index 设置为低于带有滚动条的 div 时 固定 div 位于其下方 并且它会丢失交互 您无法单击链
  • Json.net 不再在重复的情况下抛出异常

    我正在尝试将我的 C 应用程序从 Newtonsoft JSON 6 升级到最新版本 9 0 1 我注意到反序列化包含重复元素的对象时行为发生了变化 例如 name test data myElem 1 myElem 2 当反序列化此类对象
  • 如何测试片段视图对用户是否可见?

    我有一个ViewPager 每个页面都是一个Fragment视图 我想测试片段是否位于可见区域 Fragment isVisible 唯一的测试 该片段附加到一个活动 片段设置为可见 该片段已添加到视图中 ViewPager 将创建 3 个
  • Airflow DAG动态结构

    我正在寻找一个可以决定 dag 结构的解决方案当 dag 被触发时因为我不确定我必须运行的操作员数量 请参阅下面我计划创建的执行顺序 Task B 1 Task C 1 Task B 2 Task C 2 Task A Task B 3 g
  • 您将如何制定每日课程表?

    我想做的事情非常简单 但我正在努力找到最好或最优雅的方法来做到这一点 我现在正在构建的 Rails 应用程序将有一个每日课程表 对于每个类别 与此问题相关的字段是 一周中的天 起始时间 结束时间 单个条目可能是这样的 星期几 星期三 开始时
  • 在php中显示html文件的内容[关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions 大家好 我
  • 如何解决“TypeError:callback.apply不是函数”?

    我正在做一个大学项目 我已经阅读了关于我的问题的每一篇文章 但我还没有找到解决方案 也许你可以帮我 代码如下 viewerObj update id currentIDViewerVar minutesWatched 5 upsert tr
  • 为什么这个程序在 Python 中比 Objective-C 更快?

    我感兴趣了这个小例子 https stackoverflow com questions 5523058 how to optimize this python code from thinkpython exercise 10 10 55
  • 在 Safari 中提交表单时加载 GIF 会停止动画

    看看这个简单的JSFiddle http jsfiddle net VpDUG 4952 忽略所有的javascript代码 这里的问题只是关于动画加载GIF 我想在提交表单之前显示动画加载 GIF 我试过这个 setTimeout fun
  • 如何覆盖 .bash_aliases 中设置的别名

    我喜欢使用 bash 别名来自定义 bash 命令 有没有办法覆盖 bash 别名设置 或者我应该将别名重命名为与原始命令不同的名称 例如 我的 bash aliases 包括 alias ls ls ltr 如果我只想检索文件名 是否需要
  • 如何使用 bash 大括号扩展制作乘法表?到目前为止我有这个: echo $[{1..10}*{1..10}]

    我想更深入地学习 bash 所以我决定制作一个乘法表 我有以下声明的功能 echo 1 10 1 10 但这给了我以下输出 1 2 3 4 5 6 7 8 9 10 2 4 6 8 10 12 14 16 18 20 3 6 9 12 15
  • 为初学者覆盖 Magento 管理控制器

    在 Magento 管理部分 我想覆盖核心 Mage 的 Sales Order ShipmentController php 控制器文件 我尝试使用 from 和 to 标签重写URL 但没有成功 我不知道这样做的实际和正确方法是什么 因
  • 在Delphi中,如何让货币数据类型以不同的形式以不同的货币显示?

    我需要编写一个 Delphi 应用程序 从数据库中的各个表中提取条目 并且不同的条目将采用不同的货币 因此 我需要根据我加载的项目的货币 为每种货币数据类型 英镑 欧元等 显示不同的小数位数和不同的货币字符 有没有一种方法可以几乎全局地更改
  • XSLT 具有相同匹配的多个模板

    我目前坚持应用多个 xsl template 来对元素进行相同的匹配 下面的例子显示了这个问题 有谁知道使用两个 模板匹配 创建预期输出的 XSL 模板吗 由于技术原因 不可能将两个 模板 元素放在一起 Input