我想从节点<hello>
获取文本,但不包括其子节点。我知道/element/hello/text()
应该起作用,但它不起作用。
<element>
<hello><b>Exclude me</b> but not me <b>I'm excluded :(</b> I'm included</hello>
</element>
我的输出只有:but not me
。如果我删除第一个节点,一切都按预期工作,并解析第二个文本节点(包括我)。这里,本机处理器的行为类似。Saxon按预期工作。这可能是一个bug吗?我在LibreOffice 4.4.2.2中使用XML过滤器
我想从节点
<hello>
中获取文本,但不包括其的孩子。我知道/element/hello/text()
应该是工作的,但是它不是。
/element/hello/text()
工作选择您想要的节点。
但是,如果您使用xsl:value-of
来获取文本,它将只返回来自所选集合的第一个节点的值。要获得所有这些,您必须执行以下操作:
<xsl:for-each select="/element/hello/text()">
<xsl:value-of select="." />
</xsl:for-each>
以上内容适用于XSLT 1.0。在XSLT 2.0中,
<xsl:value-of select="/element/hello/text()"/>
将返回所有选定节点的文本,以空格分隔(除非您指定不同的分隔符)。