XPath数据模型
在XPath中,XML文档从概念上讲是一个树结构。文档的每个部分都表示一个节点。这个数据结构类似于计算机硬盘上的文件和文件夹的结构;节点类似于单个文件或文件夹。文件夹包含文件和其他文件夹,同样,一些节点可以包含其他节点。在XPath中,节点的层次结构以一种可以搜索的结构建立起来的,以表示XML文档中的元素。
XPath有7种节点类型:根节点(Root Node)、元素节点(Element Node)、属性节点(Attribute Node)、文本节点(Text Node)、注释节点(Comment Node)、处理指令节点(Processing-instruction Node)和命名空间节点(Namespace Node)。如下所示简单的XML文档:
<?xml version="1.0" encoding="gb2312"?>
<book title="Java How to Program " >
<sample>
<![CDATA[
//Java comment
if ( pageCount > index )
{
index++;
}
]]>
</sample>
Java How to Program By Evan & Deitel
</book>
sample元素节点的字符串值由所有派生文本节点的字符串值按照文本顺序连接起来而确定,该文档的XPath树结构如图9-1所示。
图9-1 XPath树结构
XPath树结构中只能有一个根节点,它包含树结构中所有其他的节点,根节点和元素节点包含子节点的顺序列表。除根节点外的其他节点都要有一个父节点,父节点可以包含任意多个子节点或其他派生的节点。子节点的类型只能是元素节点、注释节点、文本节点和处理指令节点。属性节点或命名空间节点的父节点可以是元素节点或根节点。但是属性节点和命名空间节点并不能作为其父节点的子节点。因为父节点与子节点之间是包含关系,而属性节点与命名空间节点只是用来描述其父节点的,并不存在包含关系。比如,属性节点用来描述父节点的额外信息,而命名空间节点描述可以在其中到其父节点的地址。
属性和名称空间节点的父节点可以是元素或根节点,但是属性和名称空间节点并不是其父节点的子节点。因为属性节点和名称空间节点为其父节点提供描述信息,而不被父节点所包含。 | |
每个XPath树节点都由一个字符串表示,称为字符串值(String-value)。XPath使用字符串值来处理XPath树节点。例如,字符串“Java How to Program By Evan & Deitel”就是文本节点的字符串值。XPath数据模型中七种节点类型的详细说明如表9-1所示。
表9-1 XPath节点类型
节点类型 | 字符串值 | 扩展前缀 百度文库xpath定位 | 说明 |
根节点 | 把所有派生文本节点的字符串值按照文档顺序连接起来 | 无 | 表示XML文档中的根,该节点位于树结构的最顶部,可以包含元素、注释或处理指令子节点 |
元素节点 | 把所有派生文本节点的字符串值按照文档顺序连接起来 | 包括命名空间前缀的元素标记 | 表示一个XML元素,可以包含元素、文本、注释或处理指令子节点 |
属性节点 | 标准化的属性值 | 属性名,包括命名空间前缀 | 表示元素的一个属性 |
文本节点 | 包含在文本节点中的字符数据 | 无 | 表示元素的字符数据内容 |
注释节点 | 注释标记中的内容 | 无 | 表示一个XML注释 |
处理指令节点 | 处理指令的一部分,后跟目标和任意多个空格字符 | 处理指令的目标 | 表示一个XML处理指令 |
命名空间节点 | 命名空间的URI | 命名空间前缀 | 表示一个XML命名空间 |
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论