0

我有以下xml:

<p>
  <tx>
    <ts>
      <mtr>
        <pos>
          <Part>Text1</Part>
        </pos>
      </mtr>
    Text2<hyph/>Text3
    </ts>
  </tx>
</p>
<p>
  <tx>
    <ts>
      Text4
    </ts>
  </tx>
</p>

所以基本上我有一系列 p/tx/ts 与 ts 有时有可选的子节点。

现在我需要找到 p/tx/ts 正下方的所有文本节点,但不是那些嵌套在 ts 的子节点中的文本节点。在上面的示例中,我需要 text2、text3 和 text4 但不需要 text1(因为它嵌套在 mtr/pos/part 即 ts 的子节点中)

4

2 回答 2

0

此 XPath 应返回您要查找的内容:

/*/p/tx/ts/text()[normalize-space(.)!='']

注意:添加第一个/*是因为您需要一个根元素才能使您的示例格式正确。

于 2012-04-27T15:47:01.380 回答
0

这让我回到了我正在寻找的东西:

<xsl:template match="p">
  <xsl:for-each select="./tx/ts">
    <xsl:apply-templates select="child::text()" />
  </xsl:for-each>
</xsl:template>
于 2012-05-02T06:38:16.787 回答