XSL xsl:template match =“/”

我只是学习XML和如何使用XSL文件。 在一个XSL文件中,我find了以下术语:

xsl:template match="/" 

这是什么意思? 而我可以用什么来代替/ ? 我可以写table或任何其他HTML标签而不是/

<xsl:template>指令的match属性的值必须是匹配模式

匹配模式构成了所有可能的XPathexpression式集合的子集 。 首先,自然的限制是匹配模式必须select一组节点。 还有其他限制。 特别是在位置步骤中不允许有反向轴(但可以在谓词中指定)。 而且,在XSLT 1.0中不允许使用variables或参数引用,但在XSLT 2.x中使用这些参数是合法的。

/在XPath中表示或文档节点。 在XPath 2.0中(也就是XSLT 2.x),这也可以写成document-node()

匹配模式可以包含//缩写 。

匹配模式的例子:

 <xsl:template match="table"> 

可以应用于任何名为table元素。

 <xsl:template match="x/y"> 

可以应用于任何名为y的元素,其父元素是一个名为x的元素。

 <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文档:

 <?xml-stylesheet href="my_transform.xsl" type="text/xsl"?> <!-- Comments and processing instructions are XML nodes too, remember. --> <TopLevelElement/> 

这个文件的根源有三个孩子:一个处理指令,一个注释和一个元素。

所以,举个例子,如果你想编写一个消除这个注释的转换,但是留在文档中任何其他地方的注释中,你可以将它添加到标识转换中:

 <xsl:template match="/comment()"/> 

即使更简单(也更常用),下面是一个匹配文档顶级元素的XPath模式,与名称无关: /*

匹配属性指示将要应用模板转换的部分。 在这种特殊情况下,“/”表示xml文档的根。 你必须提供给match属性的值应该是XPathexpression式。 XPath是您必须用来引用目标xml文件的特定部分的语言。

为了获得一个有意义的理解,你可以把什么你可以把匹配属性,你需要了解什么xpath是如何使用它。 我build议你看看我提供给你的答案底部的链接。

我可以写“表”或任何其他的HTML标签,而不是“/”?

是的你可以。 但这取决于你想要做什么。 如果您的目标xml文件包含HMTL元素,并且您正在尝试将这个xsl:template应用于它们,那么使用table,div或anithing就是有意义的。

这里有几个链接:

  • XSL模板
  • XPath的
  • 一本关于XML的好书 – Beginning XML