问题标签 [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 去除特定节点
我有以下 xml 并希望生成一个仅包含 GENRE_1 和 GENRE_3 以及任何其他书籍 ID 的输出。这意味着 GENRE_4、5 和 6 将被删除。我曾尝试使用示例 xslt,但没有得到正确的结果。将不胜感激任何帮助。
预期输出
xml - 基于共享属性/值输出两个单独的节点组
我想首先说我对 XPATH 不是很擅长,这就是我来找你们寻求帮助的主要原因。
所以我今天正在努力尝试“分组”,或者可以说,来自 XML 文件的一些数据基于它们共享一个 ID。在朋友的帮助下,我设法做到了这一点,但它相当冗长,我敢肯定一定有一个更简单/更清洁的方法。下面是我使用的 XML、XSLT 和所需的输出:
我使用的 XSLT:
在上面的示例中,每个都Dude
可以有一个篮子,并且篮子有一个customerID
连接到它以识别篮子所有者。假设两个节点彼此一样深。我将如何在 上使用 xpath<apply-templates/>
来产生以下结果:
附言。不要太担心实际输出,我只想知道在使用其中一个节点进行匹配时遍历 XML 树的正确方法apply-templates
编辑:忘记了我使用的 XSLT... 现在我感到困惑的是,这是最好的方法吗?有两个单独的匹配项。同样在谓词内部,我是否需要../
或谓词是否假设我从匹配的位置开始,例如:Dude
xml - 如何将两个模板应用于同一组节点,特别是 XML 中的所有节点
我试图从输入 XML 文件创建输出 XML 文件。一些节点需要从输入复制到输出,一些被省略,一些节点将以某种方式修改其文本。但是除此之外,我需要从每个节点的文本中修剪空白。我认为最好的方法是使用模式或其他属性在同一组节点上调用两个模板,但我不知道如何做到这一点。节点太多,无法手动将 trim() 应用于每个节点。
删除空格的代码自行工作(来自另一个 Stackoverflow 的解决方案),但我不知道如何使用另一个模板修改 XML,然后应用这两个模板。我希望解决方案类似于:
做改造工作...
跳转到 match="node()" 模板
删除空格解决方案:
这是一个示例输入:
预期输出:
Note.1 是从源代码复制的,转换为大写字母并删除了空格。Note.2/Point.1 删除了空格。Note.2/Point.2 不是从源中复制的。
编辑---我当前的代码。它正确地删除了空格。但是,生成的 XML 包含源中删除了空格的每个节点,而不是仅在第一次转换中复制的那些节点。我将这些节点存储在一个变量中,然后将该变量传递到我的删除空白模板中。关于为什么删除空格的模板作用于原始集而不是变量中包含的集的任何想法?
html - xslt apply-templates 删除除了传递的值之外的所有内容
我正在使用XSLT
模板生成将发送到呼叫中心的电子邮件。我遇到的问题 - 转型apply-templates
消除了除价值观之外的一切。很有可能这是我看不到的微不足道的事情。
XSLT:
XML:
结果我得到:
如何保留 html 标签?
xslt - XSLT 使用额外的 for-each 或使用 Muenchian 方法的应用模板?
我已经开始学习 XSLT,并且在练习中使用了 Muenchian 方法。我找到了2 种不同的方法来获得我的预期结果。带有apply-templates
和 带有额外的for-each
。
钥匙:
使用应用模板的第一个解决方案:
使用额外的 for-each 的第二个解决方案:
输入是这样的:
使用这两个的特定解决方案会更好吗?或者你推荐其中哪一个,为什么?
xslt - XSL 应用模板输出问题
鉴于此 XML:
使用此 XSL:
有这个输出:
Q:为什么会有不匹配的值?
20, Honey, 9999, ...
xml - 将模板应用于 XSLT 中的子字符串
想象一下,我的 XML 文件如下所示:
以下代码不起作用:
我期望以下输出:
如果我用 test 替换substring ( test,1,50)它可以工作,但我只想要前 50 个字符。
我也尝试过以这种方式使用变量:
但即使这样也有效。
在我看来,问题在于substring()表达式。一些忠告?
xml - XSLT 'apply-templates' 和 'apply-templates with mode' 一次性完成
我正在尝试使用具有模式的应用模板和应用模板,如下例中所述:
我的输入 xml 看起来像:
现在我正在尝试使用下面显示的 xslt 来删除带有 dept=bbb 的产品元素,但它不起作用。相同的输入 xml 出现在输出中。我知道我可以通过删除最后一个模板上的 mode 属性来实现我想要的结果,但我试图理解为什么它不能以我在这里尝试的方式工作。
有人可以解释一下 XSLT 处理器是如何在这里运行转换的吗?
非常感谢..!
xslt - apply-templates 输出内容的次数超出预期
我是 XSLT 的新手,我不明白为什么 root 会被处理两次(至少这是我对此输出的解释)。
编辑:(我将 Saxon-HE 与 XSLT 2.0 一起使用)但也使用了几个在线流程进行了测试,总是得到相同的结果。
XSLT 文件
XML 文件
HTML 输出
(是的,有这么多的空行)
输出header div
非常好,但在里面sections div
呈现apply-templates
了所有信息,div header
但没有 HTML 标记。
我是否缺少任何 XSLT 处理细节?模板匹配是否以匹配元素现在被视为根或类似的方式设置上下文?
xml - 分组后的 XSLT 1.0 条件合并
我的输入 xml 如下所示:
对“item”节点进行分组的关键是 concat(/items/item/key/id,/items/item/key/color) 对于每个标识的组,合并应该按照以下给出的逻辑进行:
一种。从 misc/details 为“geo”的“item”中提取“geoDetails”。
湾。从 misc/details 为“other”的“item”中提取“otherDetails”。每个“项目”中只有一个杂项/详细信息,其值为“地理”或“其他”。
C。从给定组中的第一个“项目”中提取“关键”元素。
d。'misc' 元素应该包含'available' 元素(这总是'false',因此填充一次就足够了)并且'details' 元素应该具有基于元素'geoDetails' 或'otherDetails' 填充的值通过上述步骤 a 和 b 中给出的逻辑。如果同时填充了“geoDetails”和“otherDetails”,则应该有 2 个“详细信息”元素。
e. 任何其他不属于组的单个“项目”元素都应该按原样推送到输出。
基于上述逻辑的预期输出如下图所示:
我使用 xsl:key 和 apply-templates 尝试了基于 Muenchian 分组的转换。我能够对“项目”元素进行分组,但无法根据上述条件进一步合并这些分组元素。
XSLT 转换:
我已经解决了 Stackoverflow 上的几个相关问题,但无法使合并过程适应我当前的情况。任何帮助是极大的赞赏。