3

我有这个 XSLT 2.0 模板:

<xsl:template match="para[
    not(ancestor::p) 
    and not(ancestor::div) 
    and not(ancestor::paragraph)
    ]">
    <p class="para">
        <xsl:apply-templates/>
    </p>
</xsl:template>

它完成了我需要它做的事情:它阻止<p><p>. 但它很冗长,我想有一种更简洁的方式来编写它。

有没有更好的方法来编写多个祖先测试?我尝试了一个工会……当然没有用。

4

1 回答 1

2
<xsl:template match="para[not(ancestor::p|ancestor::div|ancestor::paragraph)]">
    <p class="para">
        <xsl:apply-templates/>
    </p>
</xsl:template>

或者

<xsl:template match="para">
    <p class="para">
        <xsl:apply-templates/>
    </p>
</xsl:template>

<xsl:template match="para[ancestor::p|ancestor::div|ancestor::paragraph]" />
<!-- or whatever you want to do in that case, <xsl:apply-templates/> maybe -->
于 2013-10-25T10:40:51.223 回答