テキストノードのスコープから親の名前を取得する方法を理解しようとしています。XPathで親要素名を取得
//text()[name(parent)='p']
現在のノードの親の名前を取得するにはどうすればよいですか?
テキストノードのスコープから親の名前を取得する方法を理解しようとしています。XPathで親要素名を取得
//text()[name(parent)='p']
現在のノードの親の名前を取得するにはどうすればよいですか?
は、あなたがほとんどそれを持っていた:
//text()[name(parent::*)='p']
あなたが名前を返すしようとしている場合:FYI
name(//text()/parent::*)
//text/..[@name='p']
これは限り親がp
のname
属性を持つよう<text>
ノードのすべての親を取得します。あなたが名前をテストしようとしている場合
彼の専門用語は混乱しますが、彼は '
Ah。ありがとう、LarsH。 –
を、用語のポイント:テキストノードは要素ではありません。
とにかく、現在のノードの親を選択するための最も簡潔な方法は、だから、..
、(テキストノードかもしれない)現在のノードの親要素の名前ですname(..)
あなたのXPath式にこれを代入:
//text()[name(..)='p']
しかし、それは
なり書き込みにレス回り道(ドキュメント内のp
要素に名前空間接頭辞がないものとします)。いずれにせよ、p
という名前の要素の子であるすべてのテキストノードを選択しています。
ありがとうございます。 – Xeoncross
これは名前(// text()/ ..)よりも良い方法ですか? – emschorsch
いいえ、 '..'は' parent :: 'と同じことです。私はたいてい '..'を使用しますが、これは古い答えで、私がその日何を考えていたかを知っています;-) –