XSLT多条件

时间:2013-10-25 10:38:08

标签: xslt xslt-2.0

我有这个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>中的HTML <p>。但它是冗长的,我想有一种更简洁的方式来编写它。

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

1 个答案:

答案 0 :(得分: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 -->