Memiliki XML berikut:
<node>Text1<subnode/>text2</node>
Bagaimana cara memilih simpul teks pertama atau kedua melalui XPath?
Sesuatu seperti ini:
/node/text()[2]
tentu saja tidak berfungsi karena merupakan hasil gabungan dari setiap teks di dalam simpul.
/node/text()[2]
[...] tidak berfungsi karena merupakan hasil gabungan dari setiap teks di dalam simpul. Itu salah: itu berarti simpul teks kedua darinode
elemen root . Nilai string (gabungan dari node teks turunan) adalahstring(/node)
Jawaban:
Gunakan :
Ini memilih semua anak-anak simpul teks dari elemen atas (dinamai "simpul") dari dokumen XML.
Ini memilih anak simpul teks pertama dari elemen atas (bernama "simpul") dari dokumen XML.
Ini memilih anak simpul teks kedua dari elemen atas (bernama "simpul") dari dokumen XML.
Ini memilih anak-simpul teks someInteger-th dari elemen atas (bernama "node") dari dokumen XML. Itu sama dengan ekspresi XPath berikut:
sumber
/node[2]
tidak boleh memilih simpul apa pun jika dokumen sumber XML terbentuk dengan baik. Menurut definisi dalam dokumen XML yang dibentuk dengan baik, hanya ada satu (satu) elemen teratas - juga dikenal sebagaidocument-element
//*[text()]
Tetap menggunakan ./html/text()
tidak bekerja./html/text()
tidak memilih semua simpul teks dalam dokumen - hanya simpul teks yang merupakan anak-anak (bukan turunan) darihtml
elemen atas . Anda mungkin mau/html//text()
. Beberapa pengetahuan dan pemahaman tentang XPath biasanya diperlukan untuk membangun ekspresi XPath.xpath Anda seharusnya bekerja. saya telah menguji xpath dan milik saya di implementasi MarkLogic dan Zorba Xquery / Xpath.
Keduanya harus bekerja.
sumber