Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 11.0.1 (中文) » SQL Anywhere 服务器 - SQL 的用法 » 数据库中的 XML » 在数据库中使用 XML » 导入 XML 文档作为关系数据

 

定义缺省 XML 命名空间

在 XML 文档具有 xmlns="URI" 形式属性的元素中定义缺省命名空间。在以下示例中,文档的缺省命名空间绑定到 URI http://www.iAnywhere.com/EmployeeDemo:

<x xmlns="http://www.iAnywhere.com/EmployeeDemo"/>

如果元素的名称没有前缀,则该元素及定义该元素的位置的所有下级都将应用缺省命名空间。用冒号将前缀与元素名称的其余部分隔开。例如,<x/> 没有前缀,而 <p:x/> 具有前缀 p。定义的命名空间将与具有 xmlns:prefix="URI" 形式属性的前缀绑定。在以下示例中,文档将前缀 p 绑定到与上一个实例相同的 URI:

<x xmlns:p="http://www.iAnywhere.com/EmployeeDemo"/>

缺省命名空间不会应用于属性。除非它具有前缀,否则属性会始终绑定到 NULL 命名空间 URI。在以下示例中,根元素和子元素具有 iAnywhere1 命名空间,而 x 属性具有 NULL 命名空间 URI,y 元素具有 iAnywhere2 命名空间:

<root xmlns="iAnywhere1" xmlns:p="iAnywhere2">
<child x='1' p:y='2' />
</root>

将 XML 文档作为 openxml 查询的 namespace-declaration 参数传递时,在查询中将应用文档根元素中定义的命名空间。文档在根元素之后的所有部分都将被忽略。在以下示例中,p1 绑定到文档中的 iAnywhere1 以及 namespace-declaration 参数中的 p2,且查询可以使用前缀 p2:

SELECT * 
FROM openxml( '<p1:x xmlns:p1="iAnywhere1"> 1 </x>', '/p2:x', 1, '<root xmlns:p2="iAnywhere1"/>' )
WITH ( c1 int '.' );

当匹配某个元素时,必须正确指定前缀绑定到的 URI。在上面的示例中,xpath 查询中的 x 名称与文档中的 x 元素相匹配,因为它们都具有 iAnywhere1 命名空间。

不要在 openxml 系统过程的 namespace-declaration 中使用缺省命名空间。请使用 /*:x 形式的通配符查询(与绑定到包括 NULL 命名空间的任意 URI 的 x 元素相匹配),或者将所需的 URI 与特定前缀绑定并在查询中使用。有关从 XML 文档生成结果集的详细信息,请参见openxml 系统过程