我无法在SO或其他地方找到这个问题的确切而简单的答案:
在XSL文件中,如何判断首先处理哪个模板,等等?我读到它按XPath的具体程度排序。另外,XSL 1.0与2.0有区别吗?
最后,这是一个我正在玩弄的有缺陷的XSL文件。目前输出只是标题“目录”。我也会在这里附上XML。
<xsl:template match="/">
<h1>
<xsl:text>Table of Contents</xsl:text>
</h1>
</xsl:template>
<xsl:template match="heading1">
<h2>
<xsl:value-of select="."/>
</h2>
</xsl:template>
<p>
<xsl:text>This document contains </xsl:text>
<xsl:value-of select="count(/article/body/heading1)"/>
<xsl:text> chapters. </xsl:text>
</p>
和XML:
<article>
<title>
Creating output
</title>
<body>
<heading1>Generating text</heading1>
<heading1>Numbering things</heading1>
<heading1>Formatting numbers</heading1>
<heading1>Copying nodes from the input document to the output</heading1>
<heading1>Handling whitespace</heading1>
</body>
关于为什么没有显示所有内容的任何解释?谢谢你的帮助!
答案 0 :(得分:5)
以下是发生的事情:
您需要做的是在第一个模板中加入<xsl:apply-templates/>
。当处理器遇到这种情况时,它会重新开始,但这次上下文是根根目录中的第二级节点的列表。它将依次查看每个XML节点,在样式表中找到最匹配的模板,然后执行它。
这是一个关键概念 - 模板不受控制,并且不是程序性的。