2011-03-17 69 views
2

我有這樣的:包含類,子和鄰接兄弟選擇器的CSS選擇器的等效XPath是什麼?

li.current+li>a 

但是我只有的XPath的基本知識。 我需要它爲AutoPager Firefox擴展。

我也想只得到第一場比賽。

+0

http://xpath.alephzarro.com/content/cheatsheet.html – 2011-03-17 12:24:57

+0

我已經看過,但你如何得到下一個兄弟姐妹? – Steven 2011-03-17 12:27:30

+0

以下 - 兄弟姐妹? – 2011-03-17 12:29:23

回答

0

li.current + li > a映射到:

//li[@class='current']/following-sibling::*[1]/self::li/a 

如果你要選擇的第一a子元素,你的CSS選擇應該是:

li.current + li > a:first-child 

映射到:

//li[@class='current']/following-sibling::*[1]/self::li/a[1] 
+0

謝謝,但它仍然匹配2而不是第一個。 – Steven 2011-03-17 12:37:47

+0

我可以看到你的XML嗎? – melhosseiny 2011-03-17 12:43:53

+0

轉發此頁:http://forums.whirlpool.net.au/forum-replies.cfm?t=1543353&p=26我將它用於HTML。 – Steven 2011-03-17 12:45:12

3

如果你的li屬於很多類,那麼...

//li[contains(concat(' ',normalize-space(@class),' '),' current ')]/following-sibling::*[1]/self::li/a 

這裏是打散了許多線爲清楚起見,同樣的事情:

//li[contains(
     concat(' ',normalize-space(@class),' '), 
     ' current ' 
    ) 
]/following-sibling::*[1]/self::li/a 

引文:http://pivotallabs.com/users/alex/blog/articles/427-xpath-css-class-matching

我使用下面的XML與Online XPath 2 evaluator測試它:

<html> 
    <head> 
     <title> 
      Consume usage app support thread #2 - Apps - iPhone - Whirlpool Forums 
     </title> 
    </head> 
    <body> 
     <div id="root"> 
      <ul id="top_pagination" class="pagination "> 
       <li class="first"> 
        <a href="/forum-replies.cfm?t=1543353"> 
         first: 5 months ago 
        </a> 
       </li> 
       <li class=" "> 
        <a href="/forum-replies.cfm?t=1543353"> 
         1 
        </a> 
       </li> 
       <li class=" "> 
        <a href="/forum-replies.cfm?t=1543353&amp;p=2"> 
         2 
        </a> 
       </li> 
       <li class=" "> 
        <a href="/forum-replies.cfm?t=1543353&amp;p=3"> 
         3 
        </a> 
       </li> 
       <li class=" "> 
        <a href="/forum-replies.cfm?t=1543353&amp;p=4"> 
         4 
        </a> 
       </li> 
       <li class=" "> 
        <a href="/forum-replies.cfm?t=1543353&amp;p=5"> 
         5 
        </a> 
       </li> 
       <li class=" "> 
        <a href="/forum-replies.cfm?t=1543353&amp;p=6"> 
         6 
        </a> 
       </li> 
       <li class=" "> 
        <a href="/forum-replies.cfm?t=1543353&amp;p=7"> 
         7 
        </a> 
       </li> 
       <li class=" "> 
        <a href="/forum-replies.cfm?t=1543353&amp;p=8"> 
         8 
        </a> 
       </li> 
       <li class=" "> 
        <a href="/forum-replies.cfm?t=1543353&amp;p=9"> 
         9 
        </a> 
       </li> 
       <li class=" "> 
        <a href="/forum-replies.cfm?t=1543353&amp;p=10"> 
         10 
        </a> 
       </li> 
       <li class=" "> 
        <a href="/forum-replies.cfm?t=1543353&amp;p=11"> 
         11 
        </a> 
       </li> 
       <li class=" "> 
        <a href="/forum-replies.cfm?t=1543353&amp;p=12"> 
         12 
        </a> 
       </li> 
       <li class=" "> 
        <a href="/forum-replies.cfm?t=1543353&amp;p=13"> 
         13 
        </a> 
       </li> 
       <li class=" "> 
        <a href="/forum-replies.cfm?t=1543353&amp;p=14"> 
         14 
        </a> 
       </li> 
       <li class=" "> 
        <a href="/forum-replies.cfm?t=1543353&amp;p=15"> 
         15 
        </a> 
       </li> 
       <li class=" "> 
        <a href="/forum-replies.cfm?t=1543353&amp;p=16"> 
         16 
        </a> 
       </li> 
       <li class=" "> 
        <a href="/forum-replies.cfm?t=1543353&amp;p=17"> 
         17 
        </a> 
       </li> 
       <li class=" "> 
        <a href="/forum-replies.cfm?t=1543353&amp;p=18"> 
         18 
        </a> 
       </li> 
       <li class=" "> 
        <a href="/forum-replies.cfm?t=1543353&amp;p=19"> 
         19 
        </a> 
       </li> 
       <li class=" "> 
        <a href="/forum-replies.cfm?t=1543353&amp;p=20"> 
         20 
        </a> 
       </li> 
       <li class=" "> 
        <a href="/forum-replies.cfm?t=1543353&amp;p=21"> 
         21 
        </a> 
       </li> 
       <li class=" "> 
        <a href="/forum-replies.cfm?t=1543353&amp;p=22"> 
         22 
        </a> 
       </li> 
       <li class=" "> 
        <a href="/forum-replies.cfm?t=1543353&amp;p=23"> 
         23 
        </a> 
       </li> 
       <li class=" "> 
        <a href="/forum-replies.cfm?t=1543353&amp;p=24"> 
         24 
        </a> 
       </li> 
       <li class=" "> 
        <a href="/forum-replies.cfm?t=1543353&amp;p=25"> 
         25 
        </a> 
       </li> 
       <li class="current "> 
        <a href="/forum-replies.cfm?t=1543353&amp;p=26"> 
         26 
        </a> 
       </li> 
       <li class=" "> 
        <a href="/forum-replies.cfm?t=1543353&amp;p=27"> 
         27 
        </a> 
       </li> 
       <li class="last"> 
        <a href="/forum-replies.cfm?t=1543353&amp;p=-1&amp;#bottom"> 
         last: 2 hours ago 
        </a> 
       </li> 
      </ul> 
     </div> 
    </body> 
</html> 

您應該注意,您鏈接的頁面作爲您的輸入 - http://forums.whirlpool.net.au/forum-replies.cfm?t=1543353&p=26 - 是HTML,而不是XML:

  • 其DOCTYPE聲明是HTML 4.01
  • 文檔中包含未關閉的標籤,如<br>它必須是<br />

...所以你可能有使用它作爲XPath評估的輸入的問題。

+0

+1正確答案。 – 2011-03-17 16:40:24

+0

@Ajjandro - 格式/突出顯示使XPAth看起來很奇怪;第一行看起來像是一條評論......我要把單線和多線兩種格式。 – 2011-03-17 17:11:33

+1

我認爲滾動是可讀性最差的。此外,我們採取空白處理作爲XPath的功能... – 2011-03-17 17:39:41