XSLT:模板匹配路径不包含元素的所有元素

时间:2017-03-09 09:04:26

标签: xml xslt xslt-1.0

我有一个类似下面的xml文件。我需要选择使用xslt 1.0所有“name”元素,其中路径不包含单词“fast”。在这种情况下,我会选择/ root / name和/ root / name / name,但不能选择/ root / fast / name。

我原来的模板匹配器是

<xslt:template match="/root//name">
    ....
</xslt:template>

这有效,但随后添加了“快速”元素,所以我的选择器坏了。

我怎样才能在XSLT 1.0中做到这一点?我一直在尝试多种方式,但我似乎无法找到一种可以编译并做我需要的方法。

谢谢大家。

<root>
    <fast>
        <name>fast/name</name>
    </fast>
    <name>name</name>
    <name>
        <name>name/name</name>
    </name>
</root> 

1 个答案:

答案 0 :(得分:0)

您可以使用:

如果您运行的数据不是

<xsl:template match="/root//name[not(contains(., 'fast'))]">

或者如果您运行的元素不是

<xsl:template match="/root//name[not(ancestor::fast)]">