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

SAP Sybase SQL Anywhere 16.0 (中文) » SQL Anywhere 服务器 - SQL 用法 » 数据库中的 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">123</p1:x>', '/p2:x', 1, '<root xmlns:p2="iAnywhere1"/>')
WITH ( c1 int '.' );

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

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

不要在 OPENXML 运算符的 namespace-declaration 中使用缺省命名空间。请使用 /*:x 形式的通配符查询(与绑定到包括 NULL 命名空间的任意 URI 的 x 元素相匹配),或者将所需的 URI 与特定前缀绑定并在查询中使用。

 另请参见