SQLXML 4.0 中的 xml 数据类型支持
从 SQL Server 2005(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 数据类型列”示例介绍了这种解决办法。
不支持 XPath 查询 xml 数据类型列的内容。
在不支持的批注中使用 xml 数据类型列(例如 sql:relationship 和 sql:key-fields)或允许将导致实现 SQLXML 4.0 的中间层组件不会捕获 SQL Server 错误。 其原因在于 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 不会根据 SQL Server 的行为保留 XML 声明处理指令(例如)。 相反,XML 声明被视为 SQL Server XML 分析器指令,并且其属性(版本、编码和独立)在将数据转换为 xml 数据类型后丢失。 XML 数据在内部存储为 UCS-2。 将保留 XML 实例中的所有其他处理指令;在 xml 列中允许它们,可由 SQLXML 支持。
另请参阅
反馈
https://aka.ms/ContentUserFeedback。
即将发布:在整个 2024 年,我们将逐步淘汰作为内容反馈机制的“GitHub 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅:提交和查看相关反馈