WITH XMLNAMESPACES (Transact-SQL)

声明一个或多个 XML 命名空间。

适用范围:SQL Server(SQL Server 2008 到当前版本)。

主题链接图标 Transact-SQL 语法约定

语法

WITH XMLNAMESPACES ( <XML namespace declaration item>
[ { , <XML namespace declaration item> }...] )  

<XML namespace declaration item> ::=
<xml_namespace_uri> AS <xml_namespace_prefix>
| <XML default namespace declaration item>
<xml_namespace_uri> ::= <character string literal>

<xml_namespace_prefix> ::= <identifier>

<XML default namespace declaration item> ::= 
DEFAULT <xml_namespace_uri>

参数

  • xml_namespace_uri
    统一资源标识符 (URI),用于标识正在声明的 XML 命名空间。 xml_namespace_uri 是 SQL 字符串。

  • xml_namespace_prefix
    指定一个要映射并与在 xml_namespace_uri 中指定的命名空间 URI 值关联的前缀。 xml_namespace_prefix 必须是 SQL Server 标识符。

注释

在还包括公用表表达式的语句中使用 WITH XMLNAMESPACES 子句时,WITH XMLNAMESPACES 子句必须位于语句中的公用表表达式的前面。

下面是在使用 WITH XMLNAMESPACES 子句时所应用的常规语法规则:

  • 每个 XML 命名空间声明都必须包含至少一个 XML 默认命名空间声明项。

  • 所使用的每个 XML 命名空间前缀都必须是非移植名称 (NCName),在这样的名称中冒号字符 (:) 不是名称的一部分。

  • 不能两次定义同一个命名空间前缀。

  • XML 命名空间前缀和 URI 是区分大小写的。

  • 不能声明 XML 命名空间前缀 xmlns。

  • 除了命名空间 URI 'http://www.w3.org/XML/1998/namespace' 以及不能为其分配不同前缀的此 URI 以外,不能用其他命名空间覆盖 XML 命名空间前缀 xml。

  • 当查询正在使用 ELEMENTS XSINIL 指令时,不能重新声明 XML 命名空间前缀 xsi。

  • URI 字符串值按照当前数据库排序规则代码页进行编码,并且将内部转换为 Unicode。

  • XML 命名空间 URI 将按照用于 xs:anyURI 的 XSD 空格折叠规则进行空格折叠。 另外,不会对 XML 命名空间 URI 值执行实体化和反实体化。

  • 系统将检查 XML 命名空间 URI 中是否有无效的 XML 1.0 字符,如果发现这样的字符(例如,U+0007),将引发错误。

  • XML 命名空间 URI(折叠所有空格后)不能是零长度的字符串,否则会发生“无效的空命名空间 URI”错误。

  • XMLNAMESPACES 关键字保留在 WITH 子句的上下文中。

示例

有关示例,请参阅 使用 WITH XMLNAMESPACES 将命名空间添加到查询

请参阅

其他资源

Xquery 语言参考 (SQL Server)