gpt4 book ai didi

html - XSLT 模板匹配问题

转载 作者:太空宇宙 更新时间:2023-11-04 14:48:58 25 4
gpt4 key购买 nike

我对 XSLT 应用模板语句感到困惑。例如,在 w3school 中。

http://www.w3schools.com/xsl/xsl_apply_templates.asp

有人提到——“<xsl:apply-templates> 元素将模板应用于当前元素或当前元素的子节点。”,我的问题是它是应用于当前元素还是应用于子节点或两者? “或”这个词让我对它的明确行为感到困惑。

编辑 1:这是我很困惑的代码片段,当 xslt 处理器找到 <xsl:apply-templates/> 时我很困惑,它将匹配“当前节点”的所有子节点。这里的“当前节点”是指目录还是另一个虚拟抽象 XML 根节点?为什么?

<xsl:template match="/">
<html>
<body>
<h2>My CD Collection</h2>
<xsl:apply-templates/>
</body>
</html>
</xsl:template>

提前致谢,乔治

最佳答案

w3schools 文档并不完全像它吹嘘的那样,我同意,在这种情况下它非常具有误导性。

规范说:

In the absence of a select attribute, the xsl:apply-templates instruction processes all of the children of the current node, including text nodes.

XML 中的“子项”始终表示直接子项。 child 的 child 等被称为“后代”。

“当前节点”正是这个意思。它由 apply-templates 指令出现的上下文决定。

所以最初你可能有:

<xsl:template match="/">
<xsl:apply-templates />
</xsl:template>

这里的当前节点是文档节点,apply-templates 将作用于该节点的子节点,即 XML 的顶级元素。

在此示例中:

<xsl:template match="cd">
<xsl:apply-templates />
</xsl:template>

当前节点将是 XML 中某处称为“cd”的节点,应用模板将作用于该节点的直接子节点。

请注意,这不需要应用于名为“cd”的每个元素,实际上也不需要应用于名为“cd”的任何元素,这取决于如何XSLT 中的其他模板处理输入的 XML。它只是说,只要该模板 匹配,当前节点将是一个“cd”节点。

关于html - XSLT 模板匹配问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1984441/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com