在模板匹配中实施和条件
<xsl:template match="a[!(img)and(not(@id))]">
我想写一个模板
a tag should not have attribute id and should not be followed by img tag.
但它显示错误。 任何人都可以提供帮助
答案 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 元素。