我在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>
Run Code Online (Sandbox Code Playgroud)
和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>
Run Code Online (Sandbox Code Playgroud)
关于为什么不显示所有内容的解释?谢谢您的帮助!
这是正在发生的事情:
您需要做的是<xsl:apply-templates/>
在第一个模板中放入一个模板。当处理器遇到此问题时,它将重新开始,但是这次上下文是根内部的第二级节点的列表。它将依次查看每个XML节点,在样式表中找到最匹配的模板,然后执行它。
这是一个关键概念-模板不受控制,也不是程序性的。