Menggunakan kueri xpath bagaimana Anda menemukan jika ada simpul (tag) sama sekali?
Sebagai contoh jika saya perlu memastikan halaman situs web memiliki struktur dasar yang benar seperti / html / tubuh dan / html / kepala / judul
xslt
xpath
expression
EddyR
sumber
sumber
Jawaban:
jadi misalnya
sumber
html/body and not(html/body/node())
(yaitu, coba saja jika ada dan tidak mengandung simpul anak, atau simpul teks).Coba ungkapan berikut:
boolean(path-to-node)
sumber
Patrick benar, baik dalam penggunaan
xsl:if
, dan dalam sintaksis untuk memeriksa keberadaan suatu simpul. Namun, seperti yang Patrick nyatakan, tidak ada xsl yang setara dengan if-then-else, jadi jika Anda mencari sesuatu yang lebih seperti if-then-else, Anda biasanya lebih baik menggunakanxsl:choose
danxsl:otherwise
. Jadi, contoh sintaks Patrick akan berfungsi, tetapi ini merupakan alternatif:sumber
if-then-else
, juga bagaimanaif-else if-else
? Dalam jawaban davenpcj, bisakah saya menempatkantest="somexpath"
ke-2 kapan membuatnyaif-else if-else
?Mungkin lebih baik menggunakan pilihan, tidak perlu mengetik (atau mungkin salah ketik) ekspresi Anda lebih dari sekali, dan memungkinkan Anda untuk mengikuti perilaku lain yang berbeda.
Saya sangat sering menggunakan
count(/html/body) = 0
, karena jumlah node tertentu lebih menarik daripada yang ditetapkan. Misalnya ... ketika ada lebih dari 1 simpul yang cocok dengan ekspresi Anda.sumber
count(/html/body) = 0
jenius! : AKU menggunakannya/html[count(/body)=0]/someNode
untuk memilihsomeNode
kapan/body
(atau apa pun) hilang/html[count(/body)=0]
tidak akan pernah memilih apa pun, tidak boleh ada dua simpul root dalam XML. Mungkin maksud Anda/html[count(body)=0]
, yang akan sama dengan/html[not(body)]
, atau/html[not(exists(body))]
.Saya bekerja di Ruby dan menggunakan Nokogiri saya mengambil elemen dan melihat apakah hasilnya nihil.
sumber
Variasi saat menggunakan xpath di Java menggunakan count ():
sumber