问题标签 [apply-templates]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
xslt - 如何在 XSLT 模板参数中获取属性值?
我按如下方式调用应用模板:
我正在尝试访问layoutWeight
apply-templates 所作用的子元素的属性值。然而,计算总是评估为空,即使子项有一个数字值layoutWeight
并且pContentWidth
也是一个数字值。
如何访问layoutWeight
子元素 apply-templates 的属性?
xslt - XSLT:
我有一个关于<xsl:apply-templates>
.
假设我有一个这样的 XML(参见http://www.tei-c.org/release/doc/tei-p5-doc/en/html/ref-subst.html):
现在我想使用 XSLT 以不同的方式处理这个转录记录。
如果我只想向用户显示更正,我可以使用这样的 XSLT 模板:
但是,我也可以写:
在第一种情况下,我明确地只处理add
inside <subst>
,而忽略<del>
.
在第二种情况下,我<del>
通过提供一个不对元素做任何事情的模板来忽略,从而产生相同的效果。
如果我没记错的话,这两种方式是等价的。哪一个更可取?
xslt - 对比在 XSLT 中
查看地址http://www.w3schools.com/xml/tryxslt.asp?xmlfile=cdcatalog&xsltfile=cdcatalog_apply下的 XSLT 代码...您可以在下面找到此代码的第一部分(对我的问题起决定性作用的部分) ):
如果您现在只更改该行
至
转换不再起作用......(代码现在如下所示:)
我的问题是:为什么更改会破坏代码?在我看来,这两种情况的逻辑是相同的:
- 应用匹配“cd”的模板
- 在模板“cd”内应用其他两个模板(“title”+“artist”)
更新:
整个xslt代码如下:
这是xml的摘录:
xml - xsl 在转换后递归地应用模板
我在尝试递归应用模板时遇到了麻烦。我想说,虽然我曾多次使用简单的 XSL 转换,但我对它们的了解并不深入。
我有以下 XML 表示具有方法和属性的类
并且我想获得一个 XML,其中包含具有所有属性和方法的类,包括来自自身和来自它的基类,其方式与 OO 继承的工作方式相同。
我想获得以下 XML
我编写了以下 XSL,但仅适用于一级类继承。
当然,如果我应用上述转换的次数与类所具有的最大继承级别一样多,我(几乎)可以获得所需的结果,但我的目标是仅在一次转换中获得它。
任何指南将不胜感激。提前致谢。
xml - 外部数据中的 XSL 应用模板
我想转换一个表示类及其基类的 XML,其中类包括它自己的方法和属性,以及它的所有基类的方法和属性,因为 OO 继承有效。
一个 XML 可能是
应该转化为
在Michael的帮助下,如果所有类都定义在同一个 XML 文件中,那么我有以下 XSL 可以正常工作。
或以下等效但没有键的转换。
现在,我想处理这些类可以在主 xml 或其他 XML 文件中定义,并通过导入元素与其他文件链接,这意味着外部 XML 可以像编写一样使用在主 XML 中。
表示这些类的简化 XML 可以是
c2.xml 的内容可能是
并且预期的输出将是
新的 XSL 与上面的非常相似,但添加了以下模式,以处理新元素
因此,使用键时 XSL 将如下所示
或者像下面没有使用密钥的
与导入元素相关的转换对于外部文件中定义的类可以正常工作,但基类继承行为不适用于这些类。
上述 XSL 和前一个 XML(包含 c2.xml 文件的那个)的(错误)输出是
请注意,XZ 类不包括来自其基类 Z 的方法和属性
请注意,外部 xml 文件也可能包含导入元素
我尝试了两种不同的方法。第一个是使用类的键,包括那些在外部 XML 文件中声明的键。我失败了,因为我事先不知道外部文件名,以便为这些外部 XML 文件中定义的类生成密钥。第二个是应用“继承”模式谓词,但我再次失败了,因为我不知道外部文件名,以便为所有文件应用具有继承模式的模板类。
任何有关如何从外部数据为类应用“继承”模板的帮助,将不胜感激。任何方法,有或没有钥匙,对我来说都很好。
提前致谢。
xslt - 如何检查xslt中的条件?
我想在某些条件通过时显示文本(当文本存在时)。我在使用应用模板时添加了条件
这是我的代码 http://xsltransform.net/gVhD8Ra
预期产出
测试文本
代码
XML
你能检查一下我的情况为什么它没有显示文字
xml - XSLT 只执行一次应用模板
XSLT-
输入 XML-
在上面的示例中,如果地址编号与 addr_no 变量值匹配,我将执行一个模板。
我希望“应用模板”只执行一次,即使找到多个匹配项。
例如,如果 $addr_no = 1,它将找到两个匹配项,但我只想获得第一个可用的匹配项。
我试过了 -
但这没有用。
xml - 在使用 xslt 进行转换期间丢失 xml 标签
在 .xsl 样式表的帮助下转换 xml 文件期间重命名子节点时遇到问题。问题是,只处理值而不是标签。我想两者兼得。
改造前原件:
预期结果:
到目前为止,我得到的是这样的 .xsl:
转换后,“Header”的子节点丢失,只有值仍然存在:
我想我错过了“应用模板”功能的一些表达。有任何想法吗?
谢谢!
xslt - XSLT - 在 xsl:apply-templates 中使用或
我们有来自 Source 的传入 JSON 数据,其中的数据和列位于相同的有效负载中。在 XSLT 中使用 json-to-xml 我能够生成如下 XML:
在这里,每一行都可以在 dataCells 标签下作为标签和值使用。dataCells 下的值代表字段的值,但标签不代表字段名称。字段名称和字段顺序是 detailColumnInfo 标记的一部分。字段/数据的顺序和数量不固定,但目标 XML 应保持固定。例如,传入数据可以有 10 个字段,并且数据可以按任何顺序排列,但是目标 XML 应该只有 2 个字段。为了实现这一点,我相信在运行时我们必须弄清楚 F1 字段的顺序,并且必须从 dataCells 中选择相应的数据。例如,如果 F1 是字段是 detailColumnInfo 中的第一个字段,那么我必须从所有数据单元(1A、2A、3A)中选择第一个值并生成具有 F1 字段值的目标 XML,依此类推。
Detailcolumninfo 标记表示列的详细信息。Detailcolumninfo 中值字段的位置将决定 Datacells 中字段的位置。对于查询中发布的输入代码片段,如果 F1 是 Detailcolumninfo 中的第一个标签,则 Datacells (1A,2A,3A) 中的第一个值表示 F1 的值。类似地,1B、2B、3B 代表 F2 的值。目标 XML 应如下所示:
感谢 Martin Honnen 的 XSLT,实现了输出:
当我的源系统以奇怪的方式表示 null 时,就会出现问题。如果字段值为空,则传入数据为:
脚本正在加扰值,如下所示:
在上面的例子中,F2 的值为空。在输出中 F3 元素消失,F3 字段的值作为 F2 字段的值跳跃。预期输出为:
作为解决方案,我尝试通过将原始语句从
至
但是改变它不包括 element <null key="value"/>
。我是 XSLT 和 XPath 的新手,需要帮助来解决这个问题。