簡體   English   中英

從 Xpath 組中排除元素

[英]Exclude elements from Xpath groups

我有一個非常復雜的 HTML 的一個網站。 我想通過相對Xpath select多組元素。例如:

//div[@class="something] | //span/div | //div/span/div[@class="otherthing"]

一旦我選擇了所有元素,我想排除同一個 xpath 中的一些特定元素。

假設上面的 xpath 結果返回了 150 個元素。 我想排除以下 3 個 xpath,每個 xpath 都指向 1 個元素。 所以最終結果應該是找到了147個元素:

//div[@id="menu"]

//div/span/div[@class="something3"]

//body/span/div/span/div[1]

我怎樣才能在 1 xpath 和 Xpath 1 內做到這一點?

我已經嘗試過這里的解決方案,但是這僅在您選擇要排除的組時有效: https://stackoverflow.com/a/74615054/12366148

我還嘗試了多種方法來組合“not”和“self”命令,但似乎沒有任何效果。 不幸的是,我不能使用 except 運算符,因為它只適用於 Xpath 2.0。

給定<xsl:variable name="ns1" select='//div[@class="something] | //span/div | //div/span/div[@class="otherthing"]'/><xsl:variable name="ns2" select='//div[@id="menu"] | //div/span/div[@class="something3"] | //body/span/div/span/div[1]'/> ,你可以使用例如

<xsl:variable name="ns1-except-ns2" select="$ns1[count(. | $ns2) != count($ns2)]"/>

如果我的 XPath 1 回憶仍然有效。

您還沒有使用 XSLT 標簽,所以我猜您想要

(//div[@class="something] | //span/div | //div/span/div[@class="otherthing"])[count(. | //div[@id="menu"] | //div/span/div[@class="something3"] | //body/span/div/span/div[1]) != count(//div[@id="menu"] | //div/span/div[@class="something3"] | //body/span/div/span/div[1])]

暫無
暫無

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

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