Kullanarak XPath sorgusu ile birden çok değer içeren

3 Cevap php

Ben tüm üst değerler listesinden en az birini constains anattribute ile bir çocuk düğümleri seçecek bir XPath'i gerekir.

Örnek XML

<mynodes>
  <theParentNode>
    <theChildNode name="one two" />
  </theParentNode>
    <theParentNode>
    <theChildNode name="one all" />
  </theParentNode>
    <theParentNode>
    <theChildNode name="two" />
  </theParentNode>
    <theParentNode>
    <theChildNode name="all" />
  </theParentNode>
</mynodes>

Ben adı "bir" VEYA "all" (ya da bu konuda herhangi bir diğer kombinasyonu) içeren tüm düğümleri seçmek istiyorum. Döndürülen NodeList, böylece:

<theParentNode>
  <theChildNode name="one two" />
</theParentNode>
<theParentNode>
  <theChildNode name="one all" />
</theParentNode>
<theParentNode>
  <theChildNode name="all" />
</theParentNode>

Şimdiye kadar benim sorgu bu gibi görünüyor (im bir şema kullanarak değil dikkat edin):

//theChildNode[contains(tokenize(@name, '\s'), "one")]

Bana kendi adını niteliğinde "bir" içeren tüm satıcı unsurları alacak olan. Ama "bir" yerine birden fazla değer verilmesi ve daha sonra geri adım için en iyi yolu hakkında gitmek nasıl emin im theParentNode. Ben her zaman sadece php tüm bu yapabilirdi ama mümkünse kimliği yerine sadece bir XPath ile bunu.

3 Cevap

Biraz gereksiz, ama bunu yapmak gerekir:

//theChildNode[contains(tokenize(@name, '\s'), "one") or contains(tokenize(@name, '\s'), "all")]

Birden çok öznitelik değerleri almak, ama senin seçme değiştirmek konusunda emin değil

/ / TheParentNode [theChildNode]

çocuk düğüm tüm anne olsun.

/ / TheParentNode [theChildNode [içerir ....]]

, Hızlandırmaya çocuğu sadece anne seçmek gerek yok.

Ben şu anda mevcut bir XML test ortamı yok, ama bu olasılık devam olabilir:

//theChildNode[intersect(tokenize(@name, '\s+'),('one','all'))]