SQLXML 4.0 中的 xml 数据类型支持
从 2005 SQL Server (9.x) 开始,SQL Server支持使用 xml 数据类型的 XML 类型化数据。 本主题提供有关 SQLXML 4.0 如何识别 xml 数据类型的实例并实现对它们的支持的信息。
使用 xml 数据类型
若要详细了解如何使用实现 xml 数据类型列的 SQL 表,提供了以下示例:
任务 | 示例 | 主题 |
---|---|---|
如何在 XML 视图中映射和包含 xml 列 | “将 XML 元素映射到 XML 数据类型列” | XSD 元素和属性到表和列的默认映射 (SQLXML 4.0) |
如何使用 updategram 将数据插入 xml 列 | “将数据插入到 XML 数据类型列” | 使用 XML updategram 插入数据 (SQLXML 4.0) |
将 XML 数据大容量加载到 xml 列中 | “在 xml 数据类型列中执行大容量加载” | XML 大容量加载示例 (SQLXML 4.0) |
准则和限制
<xsd:any> 无法映射到包含 xml 数据类型的列。 SQLXML 中对此方案的支持通过 sql:overflow-field 批注提供。 另一种解决方法是将 xml 数据类型字段映射为 xsd:anyType 的元素。 上表中引用的“将 XML 元素映射到 XML 数据类型列”示例介绍了这种解决办法。
不支持对 xml 数据类型列的内容进行 XPath 查询。
在不支持 ((例如 sql:relationship 和 sql:key-fields)) 或允许的注释中使用 xml 数据类型列将导致SQL Server错误,而实现 SQLXML 4.0 的中间层组件不会捕获这些错误。 其原因在于 SQLXML 不要求 SQL 类型信息。 这类似于其他数据类型(如 BLOB 和二进制类型)的 SQLXML 的行为。
仅 XSD 架构支持映射 xml 列。 XDR 架构不支持映射 xml 列。
SQLXML 4.0 依赖于 SQL Server 中提供的 XML 分析支持。 xml 列可以映射为类型化的 XML 或非类型化的 XML。 在任一种情况下,SQLXML 4.0 都不验证输入 XML。 如果输入 XML 无效或格式不正确,SQL Server将其报告给 SQLXML,并将服务器返回的任何相关错误信息传播给用户。
SQLXML 4.0 依赖于对 SQL Server 中提供的 DTD 的有限支持。 SQL Server允许在 xml 数据类型数据中使用内部 DTD,可用于提供默认值,并将实体引用替换为其扩展的内容。 SQLXML 将 XML 数据“按原样”(包括内部 DTD)传递到服务器。 可以通过使用第三方工具将 DTD 转换为 XML 架构 (XSD),然后使用内联 XSD 架构将数据加载到数据库中。
SQLXML 4.0 不保留 XML 声明处理指令 (,例如,) 基于SQL Server的行为。 相反,XML 声明被视为SQL Server XML 分析程序指令,其属性 (版本、编码和独立) 在数据转换为 xml 数据类型后丢失。 XML 数据在内部存储为 UCS-2。 保留 XML 实例中的所有其他处理指令;它们在 xml 列中是允许的,SQLXML 可以支持它们。