2017-07-11 9 views
-2

私は以下のXMLを持っています。 「ここのテキスト」のXPathは何になりますか?次のXMLのXPathは何ですか?

<a:a> 
    <a:b> 
     <a:c> 
      <x:d> 
       <y id="z"> 
        <myText> some text here </myText> 
       </y> 
      <x:d> 
     </a:c> 
    </a:b> 
</a:a> 

正確なXPathが「ここにいくつかのテキスト」まで必要です。

+0

フォーマットと大文字の一部が改善されました。また、 ' 'には終了タグがないので、XMLは整形式ではありません。 – zx485

答えて

2

a:a/a:b/a:c/x:d/y[@id = 'z']/myText/text() 

ここには、テキストには引き続き先頭と末尾のスペースが含まれています。それらを取り除くために、式にXPathの関数normalize-space()を適用します。

normalize-space(a:a/a:b/a:c/x:d/y[@id = 'z']/myText/text()) 

また、名前空間が正しく設定されていることを確認してください。テストのために、私はあなたのXMLサンプルの最初のタグを

に変更しました。
<a:a xmlns:a="http://a.com" xmlns:x="http://x.com"> 
    ... 
</a:a> 
1

次のxPathクエリを使用できます。//myText/text()

そして、ボーナスとして、XSLTを使用すると、value-ofセレクタと組み合わせてテンプレート<xsl:template match="myText">を使用することができます:「ここにいくつかのテキストは、」次のXPathを使用して含まれているテキストノードを選択するには

<xsl:template match="myText"> 
    <xsl:value-of select="."/> 
</xsl:template> 
関連する問題