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 に答える