Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xml Xpath条件分支_Xml_Xslt_Xpath - Fatal编程技术网

Xml Xpath条件分支

Xml Xpath条件分支,xml,xslt,xpath,Xml,Xslt,Xpath,我是XPath新手,我想区分这两种XPath 1) /*/*:Employee/*:Firstname/*:Name[contains(.,abc)] 2) /*/*:Employee/*:Firstname/*:Name[abc] 我试着用谷歌搜索它,但我没有得到一个清晰的想法 请您用简单的方式解释一下这个区别好吗?contains是一个字符串函数,它检查第一个字符串是否包含第二个字符串(或者如果您愿意,如果第二个字符串是第一个字符串的子字符串)。如果字符串函数的参数是一个节点(如Name)

我是XPath新手,我想区分这两种XPath

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:另见