Soru XPath'ta bazı öğeleri seçimden hariç tutun


Bunun basit bir soru olduğunu biliyorum, ama anlayamıyorum. Aşağıdaki basit XML belgesini göz önünde bulundurun:

<root>
  <a></a>
  <b></b>
  <c></c>
  <a></a>
  <d></d>
  <e></e>
  <a></a>
  <a></a>
</root>

Düğümleri seçmenin en iyi yolu nedir? <b> vasitasiyla <e> XPath kullanıyor musunuz?

Ben gibi bir şey arıyorum

/root/*[not(a)]

(bu hile yapmaz)


30
2017-07-01 11:34


Menşei


Birden fazla unsuru hariç tutmaya ne dersiniz? Ben öğrendim, onun kullanarak select = "* [değil (self :: abc)] [değil (self :: def)]" - lwpro2
Bu aynı zamanda birden fazla elemanı hariç tutmak için çalışmalıdır [değil (abc veya def)] - novice


Cevaplar:


/root/*[not(self::a)]

50
2017-07-01 12:07



Bu, XPointer ve XInclude kullanırken de çalışır. - scompt.com


Bunu XPath 2.0'da eklemeye cevap vermek için kullanabilirsiniz except:

/root/(* except a)

XPath 1.0 için Tomalak'ın işaret ettiği gibi, bunu yapmanın standart yolu:

/root/*[not(self::a)]

Bu arada, birisi burada XSLT 2.0'da bunu kullanmaya çalışırken buraya geliyorsa xsl:template/@match özellik işe yaramaz çünkü @match ne olursa olsun desen alır bak XPath ifadeleri gibi değil XPath ifadeleri. Bu durumda XPath 1.0 çözümü işe yarayacaktı.


7
2017-10-10 17:25





Bunun eski bir soru olduğunu anlıyorum, ama yakın zamanda benzer bir soruna girdim ve bunu çözmek için aşağıdaki xpath'i kullandım:

/root/*[not(name()='a')]

6
2018-06-22 22:21





Denedin mi:

/ Kök / b | / kök / C | kök / D | / kök / e


-2
2017-07-01 11:54



Ben böyle uygulamıştım. Ne yazık ki, bilinmeyen isimleri olan başka düğümler olabilir - user123444555621