在xslt中的模板匹配中编写和条件

时间:2012-07-04 06:08:01

标签: xslt

在模板匹配中实施和条件

       <xsl:template match="a[!(img)and(not(@id))]">

我想写一个模板

       a tag should not have attribute id and should not be followed by img tag.

但它显示错误。 任何人都可以提供帮助

2 个答案:

答案 0 :(得分:7)

假设followed by img tag指的是儿童而非兄弟姐妹,您只需要巩固使用not()功能,而不是使用不受支持的!运营商:

<xsl:template match="a[not(img) and not(@id)]">
    <!-- ... -->
</xsl:template>

答案 1 :(得分:2)

首先,错误可能是因为你做了!(img),这是无效的。它应该是不是(img)

但是,在您的XSLT中,您要检查 img 元素是否是 a 元素的子元素。你应该真的让我们使用跟随兄弟轴。

<xsl:template match="a[not(following-sibling::*[1][self::img]) and not(@id)]"> 

所以, follow-sibling :: * [1] 匹配 a 元素的第一个兄弟,然后 [self :: img] < / strong>检查它是否为 img 标记。

注意,如果你只是做 a [not(follow-sibling :: * [self :: img])那么它会寻找任何后续兄弟,而不只是那个紧跟 a 元素。