总体目标是删除所有空节点 - 包括在删除子空节点时将变为空的节点。以下内容:
<xsl:template match="*[not(node())]"/>
将删除空节点,但会留下之前只有空节点的空节点。我想我需要一个xpath,它将匹配所有后代都没有属性且没有文本节点的节点(忽略空格)。
答案 0 :(得分:4)
使用强>:
<xsl:template match="*[not(.//@*) and not(descendent::text())]"/>
注意 and
运算符。使用or
无法解决问题。
答案 1 :(得分:0)
我想我找到了答案......
<xsl:template match="*[not(.//text() | .//@*)]"/>
找到所有没有后代文本或属性的节点,对吧?是否有一些我缺少的东西,以至于在某些情况下这不会做我认为会做的事情?在我的简单测试中,这似乎有效。