0

使用此代码,'ul' 元素不会触发“whatever”模板。

<xsl:when test="self::p|table|box|example|fig|figure|ol|para|ul" >
        <xsl:call-template name="whatever" />
</xsl:when>

然而,将它分开,使它工作得很好:

<xsl:when test="self::p|table|box|example|fig|figure|ol|para or self::ul" >
        <xsl:call-template name="whatever" />
</xsl:when>

谁能解释一下?

4

1 回答 1

1
self::p|table|box|example|fig|figure|ol|para|ul

意思是一样的

self::p | child::table | child::box |  ....etc etc....

您需要单独指定每个节点测试上的轴,它不是在|.

在 XPath 2.0 中进行相同测试的另一种可能更简洁的方法可能是

name() = ('p', 'table', 'box', 'example', .....)

虽然这并不完全相同,因为self::example只匹配名为 example的元素name() = 'example'节点,而也会匹配其他节点类型,例如属性。

于 2013-08-05T15:34:07.390 回答