应用模板上选择属性的 xslt 处理

2024-02-09

我有一个如下所示的 XSLT 并将该 xslt 应用于输入 xml[粘贴在下面],它工作正常,除了需要澄清的一件事。

这是输入 xml

<Test>
  <Experiment id='1'>
    <Dish1>
      <Conditions pressure='x' temp='y'/>
      <Measurement timeStamp='8am' reading='y'/>
    </Dish1>
    <Dish2>
      <Conditions pressure='x' temp='y'/>
      <Measurement timeStamp='8am' reading='y'/>
    </Dish2>
    <Dish1>
      <Conditions pressure='x' temp='y'/>
      <Measurement timeStamp='2pm' reading='y'/>
    </Dish1>
    <Dish2>
      <Conditions pressure='x' temp='y'/>
      <Measurement timeStamp='2pm' reading='y'/>
    </Dish2>
   </Experiment>
   <Experiment id='2'>
    <Dish1>
      <Conditions pressure='x' temp='y'/>
      <Measurement timeStamp='9am' reading='y'/>
    </Dish1>
    </Experiment>
</Test>

这是 xslt

<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
   <xsl:output method="xml" indent="yes"/>

   <xsl:template match="Experiment">
      <xsl:copy>
         <xsl:apply-templates select="@*" />
         <xsl:for-each-group select="*" group-by="local-name()">
            <xsl:copy>
               <xsl:apply-templates select="current-group()" />

            </xsl:copy>
         </xsl:for-each-group>
      </xsl:copy>
   </xsl:template>

   <xsl:template match="Experiment/*">
      <Observation>
         <xsl:apply-templates select="*/@*" />
      </Observation>
   </xsl:template>

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

</xsl:stylesheet>

这次转型进展顺利。但是,如果我在 xslt 上进行如下更改,则会出现错误。任何想法?

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

即,在上一场比赛中,我从<xsl:apply-templates select="@*|node()"/> to <xsl:apply-templates select="."/>


.表示当前节点。当您将模板应用于.,您将它们应用到当前上下文中。

在您的情况下,模板将匹配Test,输出它的副本,并将模板应用于自身。然后它会再次匹配,基本上让你陷入无限循环。

通过执行应用模板node()|@*,您将模板应用于所有子节点和属性。

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

应用模板上选择属性的 xslt 处理 的相关文章

  • 如何用 Java 从 XML 创建 PDF?

    目前 我正在 Java 中创建一个 XML 文件 并通过使用 XSL XSLT 对其进行转换来将其显示在 JSP 页面中 现在我需要获取该 XML 文件并在 PDF 中显示相同的信息 有没有办法通过使用某种 XSL 文件来做到这一点 我见过
  • XSLT 增强 Hadoop 配置

    什么是可以根据名称添加或替换属性值的 XSLT 版本 1 0 转换 例如 给定以下输入 XML
  • XSLT 和临时文档

    我正在尝试处理一个 xml 文件 该文件有几个不同的状态组 例如
  • Xalan XSLT 多个输出文件?

    我只是想知道 是否可以使用 Xalan 将单个输入 XML 文件的处理输出到多个其他文件 我不一定必须这样做 我知道我可以使用其他工具来做到这一点 如 Saxon 和 或我可以处理不同的文件以获得不同的输出 我只是想知道我必须使用哪些选项来
  • 在 lxml 中定义默认命名空间(无前缀)

    当使用 lxml 渲染 XHTML 时 一切都很好 除非您碰巧使用 Firefox 它似乎无法处理以名称空间为前缀的 XHTML 元素和 javascript 虽然 Opera 能够很好地执行 javascript 这适用于 jQuery
  • 重新审视混合字符串值的字母数字排序

    请注意 我之前提出了一个非常相似的问题 但要求已发生变化 对混合字符串值进行字母数字排序 https stackoverflow com questions 3842719 alphanumeric sort on mixed string
  • 由于命名空间“xmlns”,无法使用 XSLT 转换 XML

    我一直在尝试使用 XSLT 转换 XML 文件 但由于一些问题 即 xmlns 它没有转换 我 一辈子都找不到问题所在 XML 文件
  • XSLT 是 Web 框架的好选择吗?

    我一直认为 XML 以及之前的 SGML 数据是魔鬼的格式 我是旧数据库和平面文件学校的 尽管如此 我们正在开发一款商用网络产品 其框架基于在链中翻译 转换 XML 数据 当我们面试职位以及与潜在客户交谈时 他们喜欢它将做什么的概念 但厌倦
  • 我如何不在我的 xslt 代码中重复重复的逻辑?

    编写此代码的更好方法是什么
  • 带有 xml 样式表的 XslTransform

    好像大家都说如果使用XslTransform 会先调用Load加载样式表 然后调用Transform进行转换 但是我有以下 XML 文件 我是否应该先加载xml 找到样式表节点 然后调用Load来加载样式表 或者还有其他方法吗 是处理指令
  • 如何让 XSLT 在 Java 中返回 UTF-8

    我正在尝试让我的 XSL 脚本使用 UTF 8 编码 像 和希腊字符这样的字符就像垃圾一样出现 让它工作的唯一方法是将结果写入文件 如果我将它写入输出流 它只会返回垃圾 System out 有效 但这可能是因为它被重定向到文件 结果需要从
  • XPath - 测试是否至少有一个节点具有给定值

    给定以下 XML
  • 使用 XSLT 从文本文件中删除第一行

    我正在使用一个生成文本文件的系统 Maximo 我需要删除文件的第一行 做到这一点的方法应该是使用 XSLT 任何想法 是的 您可以在 XSLT 中完成您想要的事情 如果您可以选择的话 在 XSLT 2 0 中这样做可能会更容易 Micha
  • XSLT:如何防止 XSLT 代码在输出 xml 中生成冗余空格

    使用我的 XSL 代码 每当我删除一个元素 它都会在输出 xml 中引入一个空白行空间 这会妨碍树形结构外观XML的 你能建议我 如何摆脱它 这是示例代码示例 XML 示例
  • Google Chrome 上的 xsl:include 和 xsl:param,带有 jQ​​uery 转换插件

    我一直尝试在 Google Chrome 中使用 XSL 但没有成功 我读到 Chrome 在 XSLT 方面存在一些错误 其中之一是它不支持 xsl include 可以在这里检查错误 http code google com p chr
  • 以 UTF8 而不是 UTF16 输出 DataTable XML

    我有一个 DataTable 我正在使用 WriteXML 创建一个 XML 文件 尽管我在以 UTF 16 编码导出它时遇到问题 并且似乎没有明显的方法来更改它 我了解 NET 在字符串内部使用 UTF 16 这是正确的吗 然后 我通过
  • 如何在 xslt 2.0 中解析字符串到日期

    是否可以像这样转换字符串30042013 2013 年 4 月 30 日 日期格式 所以我可以稍后在类似的函数中使用它format date 就像托马拉克说的 你可以使用substring and concat 要构建一个字符串 您可以将其
  • XSLT:选择与其他示例不同但略有不同的

    我有以下 XML a b b a
  • Saxon XSLT 转换:转换期间失败时如何关闭输出流

    我想对多个输出文件进行 XSLT 转换 我在那里使用了 xsl 结果文档 当转换失败时 应删除所有输出文件 但是 如果由 xsl result document 创建的文档生成失败 我的程序将无法再删除该文档 我认为原因是 xsl resu
  • 使用 XSL 1.0 有条件地包装内容

    我正在寻找一种用 xsl 包装内容的方法 这是我正在做的事情的简化示例 Lot s of content 是大量内容 锚标记仅用作示例 它可以是一个 div 或其他任何东西 XML

随机推荐

  • 缓存还是存储在会话中?

    我有一个页面从我的数据库加载了大量数据 我想加快加载时间 我已经缓存了查询 但加载时间仍然比我希望的要长 是否可以渲染包含数据的表并将其存储在会话中以在每次新页面刷新时加载 我什至考虑使用 ob start 将其放入外部文本文件中 最好的处
  • LinkedIn 帖子检查员在 https URL 上遇到服务器错误

    在 LinkedIn 帖子检查器中检查给定 URL 会返回以下摄取反馈 Error We encountered a server error while trying to inspect the URL URL 重定向轨迹显示 1 0
  • 将网格 3D 数据插值到更精细的比例

    我有一个概率曲面的 NetCDF 文件 它是一个 30x30 的网格 纬度 经度间隔为 0 25 度 并在 z 维度中描述概率表面 我可以轻松地将其导入 NetCDF 查看器 Panoply 然后轻而易举地 选中一个框 将原始数据插值 平滑
  • 在同一环境中使用同一编译器编译同一程序时,未指定和未定义的行为是否需要保持一致?

    让我们假设我的程序包含 C 标准规定为未指定行为的特定构造 这基本上意味着实现必须做一些合理的事情 但允许不记录它 但是 每次编译具有未指定行为的特定构造时 是否需要实现产生相同的行为 或者是否允许在不同的编译中产生不同的行为 未定义的行为
  • 如何显示多个权限请求的权限理由?

    我正在使用 Android API 25 需要在应用程序中发出权限请求 有大量关于如何发出请求以及如何显示基本原理的代码示例 这个链接在这里 https github com googlesamples android RuntimePer
  • 项目是否必须创建为精灵套件,还是可以简单地添加框架?

    我正在退一步学习我正在制作的 2D 游戏的精灵套件 而不是使用 UIKit 在我读过的所有教程中 他们将新项目创建为 Sprite Kit 而不是单一视图 只是想知道我是否需要重新创建我的游戏 或者我是否可以简单地将精灵套件框架添加到我现有
  • 根据条件在多对多表中执行左连接

    一般案例 当您想要向关系的外部添加条件时 如何在多对多关系中执行左连接 具体案例 我们正在处理两个表 team and pool 还有一个team pool表充当它们之间的多对多联结表 另外 一个pool has a stage id co
  • 错误:函数返回局部变量的地址

    我是 C 初学者 正在自学 我正在创建以下函数 char foo int x if x lt 0 char a 1000 char b blah x x 1 char c foo x strcpy a b strcat a c return
  • 如何用docker文件覆盖nginx默认配置?

    我有一个使用 React router 的应用程序 我为它创建了一个 docker 镜像 我正在使用 nginx 服务器并且它可以工作 但是 刷新页面会出现 nginx 404 错误 我知道我需要覆盖 nginx 配置文件才能使其工作 但不
  • 如何在 C++ 正则表达式中使用 Unicode 范围

    我必须在 C 的正则表达式中使用 unicode 范围 基本上我需要的是有一个正则表达式来接受所有有效的 unicode 字符 我只是尝试使用测试表达式并面临一些问题 std regex reg u0080 uDB7Fa z0 9 问题是与
  • Django DDP 帮助

    对于这个问题我很抱歉我还不是 django 和meteorjs 的专家 我正在尝试使用此 django ddp 技术 但我有点陷入示例使用说明中的 启动 Django DDP 服务 https github com commoncode d
  • 未加权图的最短节点序列

    我想知道是否有一种算法可以通过从头节点到尾节点的图找到最短的节点序列 该图从头节点分支出来 并且是任意复杂的 并在尾节点处收敛 节点之间的所有连接都是未加权的 我正在考虑解决这个问题 从头节点和尾节点采取探索性步骤 直到图形两端的节点接触等
  • 使用 LESS mixin 多次设置变量但得到错误的结果

    在前面 我今天开始少了 因此 欢迎提出如何做得更好的建议 我有以下 less 文件 test target context em target context 1em custom field position relative test
  • Java 将文本字符串添加到 Rectangle2D

    我有一些矩形 给定一个声明并定义为的矩形 Rectangle2D rec new Rectangle2D Double 50 50 50 50 是否可以在该矩形内添加一串文本 谢谢 不要尝试将字符串放入预定义的矩形中 而是考虑使用FontM
  • 如何在同一部分文本上的 TextView 文本上设置多个跨度?

    假设我有下一个文本 你好堆栈溢出 我希望将第二个词设置为两者相对尺寸跨度 http developer android com reference android text style RelativeSizeSpan html 设置相对字
  • 在Android中如何实现这样的UI呢?

    在我的一个应用程序中 我需要为线性布局创建一个边框 如下所示 我不想有图像并将其设置为背景 因为那时我需要为不同的设备创建各种尺寸的图像 如果我使用线性布局创建布局并使用绝对定位放置文本视图 则它在不同设备中可能看起来不符合预期 那么实现这
  • Django复杂查询从groupby和having子句中获取数据

    我想在具有 CNT Status 的 MyUser 表上执行 group by 子句 原始查询如下所示 SELECT user id from user table GROUP BY user id HAVING COUNT status
  • 尝试运行 Docker 导致退出代码 127

    我正在尝试在使用 docker 的 Windows 中运行某个应用程序 由于该应用程序是 shell 脚本 因此我使用 cygwin 终端 作为 docker 的新手 我对其工作原理没有明确的想法 使用 boot2docker 我在 Win
  • C++ 中的“auto 运算符”是什么?

    Clang https en wikipedia org wiki Clang和 Visual Studio 编译器 但不是GCC https en wikipedia org wiki GNU Compiler Collection 允许
  • 应用模板上选择属性的 xslt 处理

    我有一个如下所示的 XSLT 并将该 xslt 应用于输入 xml 粘贴在下面 它工作正常 除了需要澄清的一件事 这是输入 xml