学院首页>网页制作>XML>使XML本地化和关系化

使XML本地化和关系化

作者: 来源: 添加时间:2006-5-21 20:22:37

使用RESOURCE_VIEW

  你应该知道的一个重要视图是名为RESOURCE_VIEW的视图。RESOURCE_VIEW视图为你所访问的知识库中的每个文档和文件夹返回一行。例如,通过执行下面的查询你可以得到/CD文件夹下所有XML文档的一个列表。

SELECT any_path
FROM resource_view
WHERE under_path(res,'/CD')=1
AND extractValue(res,
'/Resource/ContentType')='text/xml';

ANY_PATH
-------------------------------
/CD/Gospel/NothingLess.xml
/CD/LegendsOfTheGreatLakes.xml
 

  上面显示的新的UNDER_PATH函数使你能够测试一个给定的知识库资源是否在你指定的文件夹(或路径)中。在这个例子中,我使用该函数把查询结果限定在/CD文件夹及其子文件夹的资源中。通过使用对基本表所创建的一个层次式域索引可以使对RESOURCE_VIEW视图进行的基于路径的查询更高效。这个索引是该知识库的一部分;你不用创建它。


图1:XML DB知识库中示例CD模式的一部分

   资源视图中的RES字段并不代表资源自身,而只是代表资源的元数据。对RES字段运用新的extractValue函数检查每个资源的内容类型。因此查询的结果被进一步地限制到指向XML文档的路径。'/Resource/ContentType'语法代表XPath表示法。XPath是指定XML文档各部分的标准表示法;你将在许多对XML数据的查询中使用它。

  给定一个资料库路径,你可以使用新的XDBUriType对象类型检索全部或部分基本XML文档。清单6显示两个查询。第一个查询是对以上代码的扩展,使用XDBUriType来检索/CD文件夹下的所有XML文档。为了只提取CD标题,清单6中的第二个查询进行了进一步的改进,把标准的XPath语法附加到URL的末端。

对知识库数据的关系访问
也可以通过直接访问基本表来访问知识库中的XML数据。我注册CD模式时创建的基本表是CD331_TAB。你可以直接对这个表编写查询语句,但这些查询必须是支持XML的。要简化通过设计用于关系数据的报表工具访问XML数据,你可以创建一个如清单7中所示的视图。除了视图,清单7还对艺术家名字创建了一个索引。视图和索引使我能够有效地执行诸如下面的标准关系查询:

  SELECT title
  FROM cd_master
  WHERE artist='Carl Behrend';

  更新XML数据

  不幸的是,因为在cd_master视图中的所有字段都是基于SQL函数的,所以该视图不能被更新。然而,可以更新知识库中的XML数据;我只需要如下所示更新注册模式时所创建的基本表:

UPDATE CD331_TAB cd
SET VALUE(cd) = updateXML(
value(cd),
'/CD/Website/text()',
'http://greatlakeslegends.com/
legends.htm');

  注意这个新的updateXML函数中的XPath语法的使用。路径'/CD/Website/text()'说明我要更新CD文档的Website元素的文本。updateXML的第三个参数为那个文本指定新值。这是一个恰当的更新,并非常高效。XML DB知识库并不需要重建被改变的整个XML文档。因为模式被注册了,所以XML DB知识库能够以在底层对象结构只有Website属性被触及的方式重写这个查询。

  结论

  通过使用XML DB知识库,你可以把XML文档存储在数据库中,并使用标准的互联网协议访问那些文档。同时,你还可以使用标准的关系查询访问相同的XML文档或是那些文档的部分。你没有XML数据和关系数据,只有数据。"XML"和"关系"只是查看数据的不同范例。通过把数据从范例中分离出来,Oracle9i保护你最重要的资产之一--数据--免受范例改变的影响。

第 2 页,共 2 页 [1] [2]
站内搜索