无效的第二个参数我有一种无效的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
。
不错,并重点! –