Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.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
XPath:可以选择什么?_Xpath_Attributes_Element - Fatal编程技术网

XPath:可以选择什么?

XPath:可以选择什么?,xpath,attributes,element,Xpath,Attributes,Element,我认为XPath表达式只能指向/选择元素或元素属性,对吗?因为可以自由使用集合运算符,所以几乎可以选择任何内容 //x | //@x 如果我没记错语法的话,我应该给你一个所有x元素和所有x属性的列表。管道是联合操作符,根据: 对表达式求值以生成 对象,该对象具有以下内容之一 四种基本类型: 节点集没有重复项的无序节点集合 布尔真或假 浮点数 字符串一个UCS字符序列 节点是文档树的元素,因此它们可以包括元素节点、属性节点和文本节点。请注意,XPath表达式可以选择多个节点(即多个元素),而不仅

我认为XPath表达式只能指向/选择元素或元素属性,对吗?

因为可以自由使用集合运算符,所以几乎可以选择任何内容

//x | //@x
如果我没记错语法的话,我应该给你一个所有x元素和所有x属性的列表。管道是联合操作符

,根据:

对表达式求值以生成 对象,该对象具有以下内容之一 四种基本类型:

节点集没有重复项的无序节点集合 布尔真或假 浮点数 字符串一个UCS字符序列 节点是文档树的元素,因此它们可以包括元素节点、属性节点和文本节点。请注意,XPath表达式可以选择多个节点(即多个元素),而不仅仅是单个节点

一些例子:

//monkey-将选择文档中的所有元素,即节点集 count//monkey-将返回所有元素的计数,一个数字 containsmouse,cat-将返回false,一个布尔值 //monkey[0]/text-将返回第一个元素的文本,即字符串 Dave Webb目前接受的答案仅部分正确

可以选择所有七种类型的节点:

根文档节点,如中所示/ 元素,如:/* 属性,如://@* 文本节点,如://Text 注释节点,如://Comment 处理指令节点,如://处理指令 名称空间节点,如://名称空间::* 另外,根据给定XPath引擎的主机,所选节点集可能包含多个文档中的节点,这一点很好。例如,如果主机是XSLT,则使用以下XPath表达式:

"document($uri1)//* | document($uri2)//*"
选择文档中由$uri1标识的所有元素和文档中由$uri2标识的所有元素的并集

所选节点集中节点的顺序为“文档顺序”,如“深度优先”,但这仅适用于属于同一文档的节点。如果选择了属于多个文档的节点,则属于不同文档的节点之间的顺序不取决于实现

最后,在XPath 2.0中,选择也可能是任何类型的项序列,可能是混合的,并且具有预定义的顺序,如果使用用户定义的类型,则可能有无限的项类型集,包括所有内置的XML模式类型


在XPath 2.1中,我们所说的W3C工作草案预计将发布,其中还将有一个函数项类型,因为函数将成为语言的第一类类型,并且可以作为参数传递,由函数返回,以顺序存储或动态创建。

我发布了一个比当前所选答案更完整的答案。我发布了一个更完整的答案。