簡體   English   中英

如何選擇兩個標簽之間的一大塊標簽?

[英]How do I chose a chunk of tags that are in between of two tags?

(包括結束標簽)

例如:

<xml>
  <a></a>
  <a><b></b></a>

  <a></a>
  <a></a>
  <a><c></c></a>

  <a></a>
  <a><b></b></a>
  <a><b></b></a>
  <a></a>
  <a></a>
  <a><b></b></a>
</xml>

我需要這三個<a> ,它們在包含<b>的那個之后,以包含<c>的那個結束。

或者更確切地說,“從一個帶有<c>和 select 的開始,直到您看到一個帶有<b>或文檔結尾的”,這會更好,因為可能存在沒有“開始” <b>標記的情況。

我需要它來為 uBlock Origin Chrome 擴展程序編寫元素阻止規則。

我認為這應該可以解決問題:

//a[c][1] | 
//a[c][1]/preceding-sibling::a
   [
      not(
         b or following-sibling::a[b]/following-sibling::a/c
      )
   ]

解釋:

  • 第一個a包含c ,還有...
  • a 之前a a元素,只要它們本身也不是:
    • 包含一個b
    • 有一個后面a包含一個b ,然后是另一個a c的 a

我想出了這個:

//a[not(b)][c | following-sibling::*[./*][1][./c]]

它采用所有 not(b),它們要么是 c(結尾),要么是“下一個包含任何內容的標簽都包含 c”。

或者:

//a[c or not(*) and following-sibling::*[*][1][./c]]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM