WITH XMLNAMESPACES

适用于:SQL ServerAzure SQL 数据库Azure SQL 托管实例

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

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>  
  

注意

若要查看 SQL Server 2014 (12.x) 及更早版本的 Transact-SQL 语法,请参阅早期版本文档

参数

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 xml 以及不能为其分配不同前缀的此 URI 以外,不能用其他命名空间覆盖 XML 命名空间前缀 'http://www.w3.org/XML/1998/namespace'

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

  • 无需声明“http://www.w3.org/2001/XMLSchema-instance”即可使用 xsi 标准命名空间。 如果未指定,则它由 XML/XPATH 处理器隐式添加,并且只要 xml 文档中正确声明了“http://www.w3.org/2001/XMLSchema-instance”架构,xpath 表达式即可使用 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)