【问题标题】:find textnodes that arent nested in a child node查找未嵌套在子节点中的文本节点
【发布时间】:2012-05-02 14:38:16
【问题描述】:

我有以下 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 的子节点)

【问题讨论】:

    标签: xml xslt


    【解决方案1】:

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

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

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

    【讨论】:

    • 我没有得到我需要的结果。我得到了 Text2 和 Text4 但没有 Text3。
    【解决方案2】:

    这将返回我正在寻找的东西:

    <xsl:template match="p">
      <xsl:for-each select="./tx/ts">
        <xsl:apply-templates select="child::text()" />
      </xsl:for-each>
    </xsl:template>
    

    【讨论】:

      猜你喜欢
      • 2019-04-11
      • 2021-07-16
      • 2014-05-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-11
      相关资源
      最近更新 更多