我想将所有节点及其值的名称插入到xml中。我遇到的问题是第一个子节点之一没有分配任何值,但它确实有子节点有值。如果我只使用通配符,那么它只选择该级别上的所有子节点,包括没有赋值的子节点。有没有办法使用通配符只选择自己没有子节点的子节点?
答案 0 :(得分:12)
对于没有子节点但包含文本和注释节点的所有节点,谓词[not(node())]
都是正确的,也许你想要[not(*)]
只有那些没有元素子节点的节点才是真的
<xsl:for-each select="//*[not(*)]">
<xsl:value-of select="concat(' ',name(),': ',."/>
</xsl:for-each>
因此,遍历所有没有元素子元素的叶元素,并打印元素名称和内容