無效的第二個參數我有一種無效的XPath表達式,其中第二個參數是不是字符串:的XPath:在處理包含()函數
//ng-messages/span[contains(., fieldName)]
這個表達式仍然會返回一些跨度年代。我很好奇xpath如何處理這個無效的第二個參數。
無效的第二個參數我有一種無效的XPath表達式,其中第二個參數是不是字符串:的XPath:在處理包含()函數
//ng-messages/span[contains(., fieldName)]
這個表達式仍然會返回一些跨度年代。我很好奇xpath如何處理這個無效的第二個參數。
在表達的謂詞如果span[contains(., fieldName)]
檢查當前span
元素包含的string(fieldName)
的值,其中fieldName
是span
的孩子。
謂詞將計算爲true
如果fieldName
存在任何內容,因爲fieldName
是span
的一部分。當span
沒有孩子fieldName
時,它也計算爲true
,因爲string(fieldName)
將返回一個空字符串,並且表達式contains('whatever', '')
總是計算爲true。
參見XPath 1.0, §3.2 Function Calls:
甲FunctionCall表達是通過使用FunctionName以識別表情評估上下文功能庫中的函數,評估各參數的,每個參數轉換成由所要求的類型評價函數,最後調用該函數,並將其轉換爲參數。
將參數轉換爲類型字符串,就像調用
string
函數一樣。(...)
contains()
的定義是這樣的:
功能:布爾包含(字符串,字符串)
的包含,如果第一個參數字符串包含函數返回true第二個參數字符串,否則返回false。
最後,string()
函數根據輸入定義了所有的情況:node-set,number,boolean。如果是別的:
除四種基本類型以外的類型的對象被轉換爲依賴於該類型的字符串。
乍一看,我不知道XPath引擎如何轉換fieldName
。
不錯,並重點! –