WITH XMLNAMESPACES (Transact-SQL)
声明一个或多个 XML 命名空间。
语法
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 添加命名空间。