0

我有一个关于<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>

在第一种情况下,我明确地只处理addinside <subst>,而忽略<del>.

在第二种情况下,我<del>通过提供一个不对元素做任何事情的模板来忽略,从而产生相同的效果。

如果我没记错的话,这两种方式是等价的。哪一个更可取?

4

1 回答 1

1

恕我直言,根本不处理节点比使用空模板处理它们更可取。但有时替代方案更方便,例如出于代码可读性的原因。

于 2016-10-14T20:20:46.243 回答