2017-08-24 63 views
-1

是這樣的:XPath謂詞必須在節點測試之前?

//trip/[@trainID] 

有效的XPath表達式?

我已經意識到這:

//trip[@trainID] 

選擇所有trip元素與所謂trainID屬性,而這個:

//trip/@trainID 

選擇上trip元素都trainID屬性。我也提到this answer

+0

感謝,是它在受質疑的原因?我沒有期待任何事情。這是一個給我的問題。我盡全力讀到它,但希望確認,希望能有一個特定的原因。基本上我已經讀過括號(即謂詞)創建一個過濾器。我想可能這個表達式在最後一個例子中沒有對屬性進行任何測試時會起作用。但是在我的測試中它並不起作用,所以我開始懷疑表達式根本無效。 –

回答

0

不,//trip/[@trainID]不是有效的XPath。

就像您在標題中所說的,謂詞必須由節點測試進行。

1.0 spec

[4]  Step  ::=  AxisSpecifier NodeTest Predicate* 
          | AbbreviatedStep 

隨着NodeTest定義爲:

[7]  NodeTest  ::=  NameTest  
           | NodeType '(' ')' 
           | 'processing-instruction' '(' Literal ')'