我想从节点<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
。如果我删除第一个节点,一切都按预期工作,并解析第二个文本节点(包括我)。 Here,本机处理器的行为类似。撒克逊按预期工作。这可能是个错误吗?我在LibreOffice 4.4.2.2中使用XML过滤器。
答案 0 :(得分:1)
我想从节点
<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()"/>
将返回所有所选节点的文本,以空格分隔(除非您指定其他分隔符)。