5

尝试在 XSLT 中构建模板以匹配特定的 Xpath 案例。

在这个示例 XML 文档中,我想匹配整个文档中的所有文本,除了 in <x>

<root>
 <tag1> I want this text </tag1>
 <tag2> I want this text </tag2>
 <x> I don't want to match on this text </x>
 <tag3> I want this text </tag3>
</root>

关于这个 Xpath 的任何想法?我正在尝试为其构建一个模板,以针对这种特定情况转换我的文档。

我想出的一些东西是这样的,但它不起作用:

<xsl:template match="text()[not(matches(.,x))]">

有任何想法吗?

4

2 回答 2

4

当你写 . 它采用文本节点的字符串值,而不是父节点的节点名。并且匹配需要一个字符串参数

你可以把它写成:

<xsl:template match="text()[not(matches(name(..),'x'))]">

或更好:

<xsl:template match="text()[not(parent::x)]">
于 2012-11-09T17:06:44.943 回答
2

好多了——没有任何反向轴:

<xsl:template match="*[not(self::x)]/text()">
于 2012-11-10T02:39:20.627 回答