在下面的代码中,我将所有模板应用到元素章节(在代码的末尾),但我想知道如何将所有模板应用于此元素,除了特定的模板.在这种情况下,它是元素标题,因为我之前已经在行中选择它,它在html文件中重复出现.有人?
<xsl:template match="chapter">
<h3>
<a name="{@id}"><xsl:value-of select="title"/></a>
</h3>
<xsl:apply-templates/>
</xsl:template>
Run Code Online (Sandbox Code Playgroud)
输出:
<h3>Title</h3>
Title<br>
Text.
Run Code Online (Sandbox Code Playgroud)
Ian*_*rts 12
plain <xsl:apply-templates/>等同于<xsl:apply-templates select="node()" />,即所有子节点.您可以使用XPath 2.0 except运算符排除某些节点,例如
<xsl:apply-templates select="node() except title" />
Run Code Online (Sandbox Code Playgroud)
这将选择除具有名称的元素之外的所有子节点title.如果您只对子元素(不是文本节点等)感兴趣,那么您可以使用* except title.
该except运营商基本上实现了差集-你不局限于简单的元素名称就没事了,你可以使用返回节点序列的表达式,如
node() except (title | div[@class = 'heading'])
Run Code Online (Sandbox Code Playgroud)
X except Y选取并通过所选择的序列中的所有节点X ,而不是在也由选择的序列Y