在下面的代码中,我将所有模板应用到元素章节(代码末尾),但我想知道如何将所有模板应用于此元素,除了特定的模板。在这种情况下,它是元素标题,因为我之前已在行中选择它,并且它在html文件中重复显示。有人?
<xsl:template match="chapter">
<h3>
<a name="{@id}"><xsl:value-of select="title"/></a>
</h3>
<xsl:apply-templates/>
</xsl:template>
输出:
<h3>Title</h3>
Title<br>
Text.
答案 0 :(得分:12)
普通<xsl:apply-templates/>
等同于<xsl:apply-templates select="node()" />
,即所有子节点。您可以使用XPath 2.0 except
operator排除某些节点,例如
<xsl:apply-templates select="node() except title" />
这将选择除那些名称为title
的元素之外的所有子节点。如果您只对子元素(不是文本节点等)感兴趣,那么您可以使用* except title
代替。
except
运算符实际上实现了集合差异 - 您不仅限于右侧的简单元素名称,您可以使用任何返回节点序列的表达式,例如
node() except (title | div[@class = 'heading'])
X except Y
选择X
选择的序列中的所有节点,而不是{/ 1}} 选择的序列