如何在XPath中找到所有空子树

时间:2010-07-08 10:52:09

标签: xslt xpath

总体目标是删除所有空节点 - 包括在删除子空节点时将变为空的节点。以下内容:

<xsl:template match="*[not(node())]"/>

将删除空节点,但会留下之前只有空节点的空节点。我想我需要一个xpath,它将匹配所有后代都没有属性且没有文本节点的节点(忽略空格)。

2 个答案:

答案 0 :(得分:4)

使用

<xsl:template match="*[not(.//@*) and not(descendent::text())]"/>

注意 and运算符。使用or无法解决问题。

答案 1 :(得分:0)

我想我找到了答案......

<xsl:template match="*[not(.//text() | .//@*)]"/>

找到所有没有后代文本或属性的节点,对吧?是否有一些我缺少的东西,以至于在某些情况下这不会做我认为会做的事情?在我的简单测试中,这似乎有效。