我正确地认为XPath表达式只能指向/选择元素或元素属性吗?XPath:可以选择什么?
回答
的表达式求值,以产生一个 对象,它具有以下 四种基本类型之一:
- 节点-set(无节点的无节点集合)
- 布尔值(true或false)
- number(floating-poi NT数)
- 串(的UCS字符的序列)
的节点是文档树中的元素,这样他们可以包括元素节点,属性节点和文本节点。并且请注意,XPath表达式可以选择多个节点 - 即多个元素 - 而不仅仅是一个节点。
一些例子:
//monkey
- 将选择文档中的所有<monkey>
元素,一个节点集count(//monkey)
- 将返回所有<monkey>
元素的个数,一些contains("mouse", "cat")
- 会返回false,一个布尔(//monkey)[0]/text()
- 将从第一<monkey>
元素返回文本,字符串
我发布了一个更完整的答案。 – 2009-11-12 23:49:21
由于您可以自由使用集合运算符,因此您可以选择几乎任何东西。
//x | //@x
应该给你所有的X元素和所有的X属性的列表,如果我记得正确的语法。 (管是union运算符)
Dave Webb目前接受的答案只是部分正确。
所有七个类型的节点可以被选择:
- 根(文档节点),如在
"/"
- 元素,像:
"/*"
- 属性,像:
"//@*"
- Text节点,像:
"//text()"
- Comment节点,像:
"//comment()"
- 处理指令节点,像:
"//processing-instruction()"
- 命名空间节点,像:
"//namespace::*"
此外,它是很好的了解,根据给定的XPath引擎的主机上,选择的节点集可CONTA在来自多个文档的节点中。例如,如果宿主是XSLT,以下XPath表达式:
"document($uri1)//* | document($uri2)//*"
选择由$uri1
标识的文档中的所有元素,并通过$uri2
标识的文档中的所有元素的联合。
在所选择的节点组中的节点的顺序是“文档顺序”(如在深度优先),但是这仅适用于属于同一文档节点。如果选择属于多个文档的节点,则属于不同文档的节点之间的排序未定义(取决于实施)。最后,在XPath 2.0中,选择也可以是任意类型(可能是混合的),(并且具有预定义的顺序)的项目序列,并且可能有无限的项目类型集合(如果用户定义的类型是使用),包括所有内置的XML模式类型。
在XPath 2.1(W3C工作草案预计将在我们发言时发布)中,还会有一个“函数项”类型,因为函数将成为该语言的一类类型,并且可以作为参数传递,由函数返回,按顺序存储或动态创建。
- 1. 为什么xpath选择空格?
- 2. XSLT/XPath的:从什么是选择
- 3. 这个xpath查询选择什么?
- 4. FileSystemWatcher vs. MSMQ。可以选择什么?
- 5. 部署导轨:可以选择什么?
- 6. ASP.net vs PHP(可以选择什么)
- 7. mixin vs插件。可以选择什么?
- 8. 为什么org.apache.commons.math3。*被删除,可以选择什么
- 9. 的XPath选择
- 10. XPath选择
- 11. XPath选择
- 12. XPath的选择
- 13. Java xpath选择
- 14. 选择immeditely以下使用XPath
- 15. XPath来选择节点名称以
- 16. PHP的XPath选择
- 17. XPath来CSS选择
- 18. seleniumIDE xpath选择器
- 19. 选择XPath查询
- 20. Xpath子选择器
- 21. PhantomJS和XPath选择
- 22. 选择XPath元素
- 23. XPath选择器,可以处理变量结构
- 24. 什么是XPath表达式来选择处理指令?
- 25. 为什么我的XPath不选择任何东西?
- 26. 为什么选择循环内的XPath仍然在教程
- 27. 为什么XPath选择上下文节点之外的节点?
- 28. 想不通,为什么这个XPath选择不工作
- 29. 选择包含“foo”的属性的正确XPath是什么?
- 30. 我怎么可以重写选择2
而不是..? – falstro 2009-11-12 17:08:42
我发布了比当前选择的更完整的答案。 – 2009-11-12 23:48:43