数据模型生成
必须先在 XML 数据模型中表示输入文档,然后才能处理 XPath 表达式。
通过名为 XML 解析的流程将输入 XML 文档变换为 XML 数据模型的实例。 或者,可以使用 SQL XML 构造函数 (例如 XMLELEMENT 和 XMLATTRIBUTES) 来生成 XML 数据模型的实例。 这些内置函数使您能够从关系数据生成 XML 数据。 同样, XPath 表达式的结果可以通过称为 XML 序列化的过程变换为 XML 表示。
- 在 XML 解析期间, XML 文档的字符串表示将变换为 XPath 模型的实例。 (可选) 可以针对特定模式验证 XML 文档。 解析的数据表示为节点和原子值的层次结构。 XPath 数据模型中的每个原子值,元素节点和属性节点都使用动态类型进行注释。 动态类型指定值的范围。 例如,名为
version的属性可能具有动态类型xs:decimal,以指示该属性包含十进制值。限制: 如果针对模式验证 XML 文档,那么 DB2® 不会保留每个节点的类型注释。 数据以非类型存储。
属性的值直接在属性节点中表示。 将使用动态类型
xs:untypedAtomic对未知类型的属性节点进行注释。元素的值由元素节点的子代表示,后者可能包括文本节点和其他元素节点。 元素节点的动态类型指示如何解释子文本节点中的值。 所有元素节点都具有类型
xs:untyped。未知类型的原子值将使用类型
xs:untypedAtomic进行注释。如果输入文档没有模式,那么不会验证该文档。 DB2 将节点和原子值指定为无类型(xs:untyped 或 xs:untypedAtomic )。
- 在 序列化期间,会将节点序列和原子值 (XPath 数据模型的实例) 转换为其字符串表示法。 序列化的结果并非始终表示格式良好的文档。 实际上,序列化可能生成单个原子值(例如 17)或没有公共父代的元素序列。