構造や階層に関係なく、ノードの前にあるテキストを選択するには、単一のXPath式が必要です。たとえば<target/>
、次の場合にノードの前にテキストを抽出するにはどうすればよいですか。
ケース1:
<a>1</a>
<b>2</b>
<target/>
期待される結果:2
ケース2:
<p>1</p>
<do>
<bt>2</bt>
</do>
<target/>
期待される結果:2
ケース3:
<aa>Text <b>child text</b></aa>
<target/>
期待される結果:「子テキスト」または「テキスト子テキスト」
ケース4:
<p>Text <b>child text</b> tail</p>
<target/>
期待される結果:「テール」、「テキストテール」、または「テキスト子テキストテール」
など、可能な限り多くの場合があります。実際、必要なのは前のテキストの最後の文字だけなので、結果にネストされた中間の子要素からのテキストが含まれているかどうかは関係ありません。
//target/preceding::text()[normalize-space(.) != ''][1]
[last()]の代わりに[1]。これは、先行するノードがノードを逆方向に順序付けるためです。そして、[normalize-space(。)!= '']は、空白だけで構成されるテキストノードが必要ないためです。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加