节点数
节点符合为 XQuery 定义的节点类型之一。 这些节点类型包括:文档、元素、属性、文本、处理指令、注释和命名空间节点。
序列的节点形成一个或多个树,树由文档节点和从文档节点直接或间接可达的所有节点组成。 每个节点只属于一棵树,而每棵树只包含一个文档节点。 根节点为文档节点的树称为文档。 根节点不是文档节点的树称为片段。
以下XML文档包含一个名为 图 1。 产品文档的数据模型图
product 的文档元素,该元素包含一个 description 元素。 product 元素有一个名为 pid (采购订单ID)的属性。 description 元素包含名为 name、 details、 price 和 weight 的元素。<product xmlns="http://posample.org" pid="100-101-01">
<description>
<name>Snow Shovel, Deluxe 24"</name>
<details>A Deluxe Snow Shovel, 24 inches wide, ergonomic
curved handle with D-Grip</details>
<price>19.99</price>
<weight>2 kg</weight>
</description>
</product>
下图显示了前面描述的文档的数据模型的简化表示。 该图包括文档节点、元素节点、属性节点和文本节点。如示例中所示,一个节点可将其他节点作为子代,从而组成一个或多个节点层次结构。
节点标识
每个节点都有一个唯一标识。 这意味着两个节点是可区分的,即使它们的名称和值可能相同。 然而,原子值没有标识。 原子值的每个实例(例如,整数 7)与该值的其他每个实例都完全相同。
文档顺序
在层次结构的所有节点中,有一个称为文档顺序的完全排序,其中每个节点都出现在其子节点之前。 文档顺序与节点层次结构以XML格式呈现时节点的显示顺序一致:
- 文档节点是第一个节点。
- 元素节点在它们的子代前面出现。
- 命名空间节点紧接与其关联的元素节点之后。
- 属性节点出现在命名空间节点之后,如果没有命名空间节点,则出现在其关联的元素节点之后。
属性节点和命名空间节点不是元素节点的子节点,但关联的元素节点是它们的父节点。
属性节点的相对顺序是任意的,但在处理 XQuery 表达式时,顺序不会改变。
- 元素节点、文本节点、处理指令节点和注释节点可以是元素节点或文档节点的子节点。
- 同代的相对顺序由它们在节点层次结构中的顺序来确定。
- 一个节点的子代和后代将在该节点后面的同代前面出现。
节点属性
每个节点都具有一些属性,这些属性用来描述该节点的特征。 例如,节点的属性可能包括:节点的名称、子代、父代、属性以及用来描述该节点的其他信息。 节点种类确定为特定节点提供了哪些属性。
一个节点可以具有下面的一个或多个属性:
- 节点名
- 节点的名称(以QName表示)。
- 父代
- 是当前节点的父代的节点。
- 类型名称
- 节点的动态(运行时间)类型。
- 子代
- 当前节点的子节点的序列。
- 属性
- 属于当前节点的一组属性节点。
- 字符串值
- 可以从节点中抽取的字符串值。
- 类型值
- 可以从节点中抽取的由零个或零个以上原子值组成的序列。
- 目标
- 标识处理指令所指向的应用程序。 目标是一个NCName(不带冒号的本地名称)。
- content
- 处理指令、文本节点或注释节点的内容。