我只是在学习XML和如何使用XSL文件。 在一个XSL文件中,我找到了以下术语:
xsl:template match="/"
这是什么意思? 而且,我可以用什么代替
/
?
我能否使用 table
或其他 HTML 标签来代替 /
?匹配模式是所有可能 XPath 表达式的子集。第一个自然的限制是匹配模式必须选择一组节点。还有其他限制,特别是在位置步骤中不允许使用反向轴(但可以在谓词中指定)。此外,在 XSLT 1.0 中不允许使用变量或参数引用,但在 XSLT 2.x 中使用这些是合法的。
XPath 中的/
表示根或文档节点。在 XPath 2.0(因此也在 XSLT 2.x 中),可以将其写为document-node()
。
匹配模式可以包含//
缩写。
匹配模式的示例:
<xsl:template match="table">
可以应用于任何名为table
的元素。
<xsl:template match="x/y">
该属性可应用于任何名为 x
的父元素下的名为 y
的元素。
<xsl:template match="*">
可以应用于任何元素。<xsl:template match="/*">
仅适用于XML文档的顶级元素。
<xsl:template match="@*">
适用于任何属性。
<xsl:template match="text()">
可以应用于任何文本节点。
<xsl:template match="comment()">
可以应用于任何注释节点。
<xsl:template match="processing-instruction()">
可以应用于任何处理指令节点。
<xsl:template match="node()">
该方法可应用于任何节点:元素、文本、注释或处理指令。
值得注意的是,对于新手来说XML很容易让人感到困惑,文档的根节点(或文档节点)不是顶层元素,而是顶层元素的父节点。这很容易导致混淆,因为似乎顶层元素没有父节点。但看看这个格式良好的XML文档:
<?xml-stylesheet href="my_transform.xsl" type="text/xsl"?>
<!-- Comments and processing instructions are XML nodes too, remember. -->
<TopLevelElement/>
这个文档的根有三个子节点:一个处理指令、一个注释和一个元素。
例如,如果你想写一个转换程序来除去这个注释,但是保留文档中任何其他地方出现的注释,你可以将以下内容添加到标识转换程序中:
<xsl:template match="/comment()"/>
这里有一个更简单(且更常用)的 XPath 模式,可以匹配文档的顶级元素而不管它的名称:/*
。
match属性指定模板转换应用的部分。在这种情况下,“/”表示xml文档的根。您必须提供到match属性中的值应该是XPath表达式。XPath是您用于引用目标xml文件的特定部分的语言。
为了深入了解可以将什么放入match属性以及如何使用它,您需要了解XPath是什么以及如何使用它。我建议您查看我在回答末尾提供的链接。
我能写入
table
或其他任何html
标签来代替 “/
” 吗?
可以,但这取决于您想要完成的具体任务。如果您的目标xml文件包含HTML元素,并且您正在尝试对它们应用此 xsl:template
,那么使用 table
、div
或其他任何标签都是有意义的。
以下是一些链接:
//
缩写开头。W3C规范以令人困惑和“信息量大”而闻名于世。 - Dimitre Novatchev