2012-03-26 15 views
10

Aşağıdaki UL ki:birleştirme XPATH eksenleri (önceki-kardeş ve aşağıdaki-kardeş)

<ul> 
    <li>barry</li> 
    <li>bob</li> 
    <li>carl</li> 
    <li>dave</li> 
    <li>roger</li> 
    <li>steve</li> 
</ul> 

Bob & Roger arasındaki Lis kapmak gerekir. Ben //ul/li[contains(.,"bob")]/following-sibling::li ile bob sonra her şeyi kapmak ve ben //ul/li[contains(.,"roger")]/preceding-sibling::li ile roger önce her şeyi kapmak olabilir. Sorun, ikisini birleştirmeye çalıştığımda fazladan sonuç almak istiyorum. Örneğin, //ul/li[contains(.,"bob")]/following-sibling::li[contains(.,"roger")]/preceding-sibling::li, örneğin, bob'dan önce öğeleri göz ardı etmek yerine, roger'den önce her şeyi alacaktır.

Bu iki xpathı birlikte zincirlemenin bir yolu var mı?

+0

http://stackoverflow.com/questions/3354987/what-is-the-xpath-to-select-a-range-of-nodes –

cevap

19

Dene:

/ul/li[preceding-sibling::li='bob' and following-sibling::li='roger'] 
+0

Dastardly sömürü bir göz atın dönüşüm kurallarının :) – biziclop

+1

@biziclop - Ne demek istediğinden emin değilim. Li = 'bob' veya 'li = 'roger' 'yaptığım kısmı mı kastediyorsun? Ayrıca şu şekilde de yapılabilir: /ul/li[preceding-sibling::li[.='bob '] ve takip eden-kardeş: li [. =' Roger ']] '. ('içerir()' li yüklemelerde de kullanılabilir) –

+3

Evet, demek istediğim buydu ama şikayet etmiyordum, alkışlıyordum. – biziclop