Xml Xpath条件分支
我是XPath新手,我想区分这两种XPathXml Xpath条件分支,xml,xslt,xpath,Xml,Xslt,Xpath,我是XPath新手,我想区分这两种XPath 1) /*/*:Employee/*:Firstname/*:Name[contains(.,abc)] 2) /*/*:Employee/*:Firstname/*:Name[abc] 我试着用谷歌搜索它,但我没有得到一个清晰的想法 请您用简单的方式解释一下这个区别好吗?contains是一个字符串函数,它检查第一个字符串是否包含第二个字符串(或者如果您愿意,如果第二个字符串是第一个字符串的子字符串)。如果字符串函数的参数是一个节点(如Name)
1) /*/*:Employee/*:Firstname/*:Name[contains(.,abc)]
2) /*/*:Employee/*:Firstname/*:Name[abc]
我试着用谷歌搜索它,但我没有得到一个清晰的想法
请您用简单的方式解释一下这个区别好吗?
contains
是一个字符串函数,它检查第一个字符串是否包含第二个字符串(或者如果您愿意,如果第二个字符串是第一个字符串的子字符串)。如果字符串函数的参数是一个节点(如Name
),它将获得要使用的该节点的字符串值。它不用于检查节点是否包含特定的子节点
因此,Name[contains(,abc)]
表示“Name元素的字符串值是否包含子abc
元素的字符串值?”
这是一件奇怪的事情,因为它对于所有Name
元素都是正确的。节点的字符串值包括所有子体的文本。如果没有子abc
,字符串值将是空字符串,因此表达式仍然为真
例如,如果节点是12
,Name
的字符串值将是“12”,这显然包含abc
的字符串值,即“2”
另一方面,如果子abc
存在,则无论字符串值是什么,Name[abc]
都将获取Name
元素。因此,它将匹配
,但不匹配
(有可能,第一个表达式应该是
Name[contains(,'abc')]
,在这种情况下,它将匹配包含字符串“abc”的Name
元素。因此它将匹配abcdef
,但不匹配cdefgh
)contains
是一个字符串函数,检查第一个字符串是否包含第二个字符串(或者,如果您愿意,如果第二个字符串是第一个字符串的子字符串)。如果字符串函数的参数是一个节点(如Name
),它将获得要使用的该节点的字符串值。它不用于检查节点是否包含特定的子节点
因此,Name[contains(,abc)]
表示“Name元素的字符串值是否包含子abc
元素的字符串值?”
这是一件奇怪的事情,因为它对于所有Name
元素都是正确的。节点的字符串值包括所有子体的文本。如果没有子abc
,字符串值将是空字符串,因此表达式仍然为真
例如,如果节点是12
,Name
的字符串值将是“12”,这显然包含abc
的字符串值,即“2”
另一方面,如果子abc
存在,则无论字符串值是什么,Name[abc]
都将获取Name
元素。因此,它将匹配
,但不匹配
(有可能,第一个表达式应该是Name[contains(,'abc')]
,在这种情况下,它将匹配包含字符串“abc”的Name
元素。因此它将匹配abcdef
,但不匹配cdefgh
)回答得好。OP:另见好答案。OP:另见