我有一个关于<xsl:apply-templates>
.
假设我有一个这样的 XML(参见http://www.tei-c.org/release/doc/tei-p5-doc/en/html/ref-subst.html):
<transcription>
<subst>
<del>wrong</del>
<add>right</add>
</subst>
</transcription>
现在我想使用 XSLT 以不同的方式处理这个转录记录。
如果我只想向用户显示更正,我可以使用这样的 XSLT 模板:
<xsl:template match="subst"><xsl:apply-templates select="./add"/></xsl:template>
<xsl:template match="subst/add"><xsl:apply-templates/></xsl:template>
但是,我也可以写:
<xsl:template match="subst"><xsl:apply-templates/></xsl:template>
<xsl:template match="subst/add"><xsl:apply-templates/></xsl:template>
<!-- del: ignore contents -->
<xsl:template match="subst/del"></xsl:template>
在第一种情况下,我明确地只处理add
inside <subst>
,而忽略<del>
.
在第二种情况下,我<del>
通过提供一个不对元素做任何事情的模板来忽略,从而产生相同的效果。
如果我没记错的话,这两种方式是等价的。哪一个更可取?