从节点中获取文本,不包括子项

时间:2015-07-08 20:59:08

标签: xpath xslt-1.0

我想从节点<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过滤器。

1 个答案:

答案 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()"/>

将返回所有所选节点的文本,以空格分隔(除非您指定其他分隔符)。