2016-03-21 4 views
1

Birisi aşağıdaki Xpath ifadelerinin ne anlama geldiğini açıklayabilir mi? Ben //node() anlıyorum //node()[not(text())] Xpath İfadesi Yorumlama

//node()[not(*)][not(normalize-space())][not(boolean(@Key))]

  • //node()[not(*)][not(normalize-space())]
    1. herhangi düğümü, ancak aşağıdaki ifadelerle emin demektir.

  • cevap

    4
    //node()[not(*)][not(normalize-space())] 
    

    Tüm eleman, metin, yorum ve işleme talimatı düğümleri, her yerde belgede, bu kimin dize değeri ya bir alt öğe düğümü ve yok Boş ya da hiç @Key niteliği bulunmadığından bu ekstra koşulu ile, Yukarıdaki gibi tamamen

    //node()[not(*)][not(normalize-space())][not(boolean(@Key))] 
    

    boşluk

    oluşur. Son yazım kötü yazılmış: Anlamı değiştirmeden [not(@Key)]'a kısaltılabilir.

    //node()[not(text())] 
    

    Tüm eleman, metin, yorum ve işleme talimatı düğümleri, her yerde çocuk metin düğümü yok belgedeki.

    +0

    Tamam çok daha iyi ve daha kesin. –

    0

    Güncelleme (teşekkürler @Michael Kay comment)
    Birincisi:
    //node() belgedeki tüm düğümleri (metin, yorum ve işleme talimatı ama özellikleri dahil olmak üzere) herhangi bir çocuk yoktur
    [not(*)]Herhangi bir metin içeriği olmayan (beyaz boşlukların yanında) eleman düğümleri
    [not(normalize-space())].

    İkincisi: ilki ancak ek olarak aynı :

    [not(boolean(@Key))] düğüm hiçbir özellik Anahtar Güncelleme vardır: Bu da herhangi düğümleri sizin örnekte e.g. this için bir göz göz ardı edecektir üçüncü biri için metin içeriği (hatta boşluk)

    +0

    ve üçüncü biri lütfen? – yonan2236

    +1

    Tamamen doğru bir cevap değil. Örneğin, '// node()', belgedeki tüm düğümleri seçmez - belge düğümünü seçmez ve öznitelikleri ve ad alanlarını seçmez; Ayrıca '[değil (*)]' çocuk metin düğümleri sağlar ama çocuk eleman düğümleri değil .. –