XPath:可以选择什么?
我认为XPath表达式只能指向/选择元素或元素属性,对吗?因为可以自由使用集合运算符,所以几乎可以选择任何内容XPath:可以选择什么?,xpath,attributes,element,Xpath,Attributes,Element,我认为XPath表达式只能指向/选择元素或元素属性,对吗?因为可以自由使用集合运算符,所以几乎可以选择任何内容 //x | //@x 如果我没记错语法的话,我应该给你一个所有x元素和所有x属性的列表。管道是联合操作符,根据: 对表达式求值以生成 对象,该对象具有以下内容之一 四种基本类型: 节点集没有重复项的无序节点集合 布尔真或假 浮点数 字符串一个UCS字符序列 节点是文档树的元素,因此它们可以包括元素节点、属性节点和文本节点。请注意,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工作草案预计将发布,其中还将有一个函数项类型,因为函数将成为语言的第一类类型,并且可以作为参数传递,由函数返回,以顺序存储或动态创建。我发布了一个比当前所选答案更完整的答案。我发布了一个更完整的答案。