Bazı öznitelik değerlerine sahip bir düğüm seçen XPath, başka bir düğümün öznitelik değerine [kapalı] eşittir


89
<grand id="grand">
  <parent>
    <child age="18" id="#not-grand"/>
    <child age="20" id="#grand"/> <!-- This is what I want to locate -->
  </parent>
</grand>

İkinci çocuğun yerini bulmak için nasıl ifade vereceğimi söyleyen var mı?

Bu çalışmıyor ...

"/grand/parent/child[@id=concat('#',/grand/@id)]/@age"

Teşekkür ederim.


Üzgünüm. İfade tamam. İfadenin kendisinde değil, başka bir alanda bazı sorunlarım olduğunu buldum.


3
Xpath'iniz benim için iyi çalışıyor.
dogbane

3
Benim için de aynısı - sadece burada test etti ve ikinci çocuk öğesini seçti.
Andreas Dolk

2
Doğru ... İfade tamam. Üzgünüm. İfadede (ad alanı öneki) ve örnek belgede bazı hatalar yaptım. Teşekkür ederim.
Jin Kwon

Yanıtlar:


98

Bu XPath, sağladığınız kod parçacığına özeldir. Seçmek için <child>olduğu gibi kimlikli #grandyazabilirsiniz //child[@id='#grand'].

Yaşlanmak //child[@id='#grand']/@age

Bu yardımcı olur umarım


1
Teşekkürler Vaman. Yardımcı oldu. İlk önce değerlendirilmesi gereken değeri ('# grand') değil, tek seferlik değerlendirme için ('/ grand / @ id') ifadesine başvurmayı kastetmiştim.
Jin Kwon

XML'imde name özniteliğine sahip bölüm listesi varsa, nasıl seçileceği alt Veri Kaynağı olarak seçilir? Örnek: <section name="valuation"> <capital-value> some data </capital-value> <location> some data </location> </section> <section name="subject-property"> <address>72 Gordon Avenue</address> <postcode>HA7 3QS</postcode> <bedrooms>2</bedrooms> </section>
Sanjay Sahani

30

Sanırım istediğin bu:

/grand/parent/child[@id="#grand"]

2
Teşekkürler MarcoS. İlk önce değerlendirilmesi gereken değeri ('# grand') değil, tek seferlik değerlendirme için ('/ grand / @ id') ifadesine başvurmayı kastetmiştim.
Jin Kwon

2
@ jin-kwon: Anlıyorum. Yani, sen XPath'sın gayet iyi.
MarcoS
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.