2014-03-13 68 views
0

我試圖選擇名爲「BATCH」的第一個祖先在XML樹中上升。在XPATH中選擇名爲「BATCH」的最近祖先

我試過了:ancestor::BATCHancestor::BATCH[1]但它不工作。

[XPATH 2.0]

+3

「它不工作」 - 這是沒有足夠的信息給任何人來幫助你。向我們展示**你做了什麼** - 你的xml示例,你用來查詢它的代碼; **你期望的** - 你想要的結果;和**實際發生的事情** - 你得到的結果。 – AakashM

+0

首先檢查:是否''祖先命名空間?如果是這樣,則需要在XPath中使用名稱空間前綴,並告訴XPath處理器該前綴綁定了哪些名稱空間。 – keshlam

回答

1

你說的始祖是什麼意思?

如果你有一個XML:

<!-- second ancestor --> 
<BATCH> 
    <a> 
     <!-- first ancestor --> 
     <BATCH> 
      <b></b> 
     </BATCH> 
    </a> 
</BATCH> 

假設您的上下文節點是<b>你會用ancestor::BATCH[1]選擇什麼,我描述爲始祖

然而,如果通過始祖你指的是最祖先,我在這裏定義爲第二個祖先您必須使用ancestor::BATCH[not(ancestor::BATCH)] 來選擇沒有祖先BATCH的祖先BATCH。


如果你有一個像他的評論中提及@keshlam命名空間問題,你可以使用

ancestor::*[local-name()='BATCH'][1] 

要選擇它忽略了它的命名空間。