XSLT中的node()|@*是什么意思?

7

我曾经在这个上下文中看到过它的使用:

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

有人能解释一下"node()|@*"的含义吗?
1个回答

6

这被称为 身份转换node()|@* 匹配当前上下文的所有子节点(node() 是所有文本、元素、处理指令和注释,@* 是所有属性)。


1
更准确地说,node() 表示 child::node(),@* 表示 attribute::*,因此它匹配上下文节点的所有子节点和属性(但不匹配文档节点或命名空间节点)。 - Michael Kay
@MichaelKay - 是的,你说得对。我添加了一些澄清来避免混淆。谢谢。 - Daniel Haley
感谢你的帮助。我一直在许多 XSL 文档中使用它,但并没有真正理解其功能是什么意思。 - mmkd
@Keevil - 非常欢迎。w3关于XSLT有很多好的信息。 - Daniel Haley
值得一试去理解身份转换。它是许多XSLT解决方案的关键。猜测大约有一半我的生产样式表使用它。 - Kevan
@Kevan - 我会说99%的人都在使用它 :-) - Daniel Haley

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接