xquery

来源:百度文库 编辑:神马文学网 时间:2024/04/30 09:20:57
在 Oracle XML DB 中使用 XQuery
目的
本教程描述了如何在 Oracle XML DB 中使用 XQuery。
所需时间
大约 1 小时。
主题
本教程包括下列主题:
概述
在企业管理器中查看 XML 模式
在 JDeveloper 中查看 XML 模式
运行 XQuery 表达式以访问 XML 文档
通过创建索引增强 XQuery 表达式的性能
通过 XQuery 使用视图
使用虚拟 XML 文档
在资源视图中使用 XQuery 从 XML 信息库检索信息
使用 XQuery 转换 XML 文档
使用 JDBC 通过 XQuery 查询 Oracle XML DB
总结
查看屏幕截图
单击此图标可以加载和查看本教程的所有屏幕截图。(警告:此操作会同时加载所有屏幕截图,网速较慢时,响应时间可能会比较长。)
注意:您还可以在下面的步骤中将光标放在每个单独的图标上,仅加载和查看与该步骤相关的屏幕截图。
概述
什么是 XQuery?
XML Query (XQuery) 是由 World Wide Web 联合会致力推出的标准,它使您能够从 XML 文档提取数据。XML Query 是专门为使用 XML 数据模型而设计的,并且成为以 XML 语言表达的数据的综合性查询语言,正如 SQL 曾经是世界上很多以关系表表达的结构化数据查询语言,以及像关键字搜索曾经增强 Internet 中的大量信息访问功能一样。
Oracle 数据库自带的 XQuery
由于 XQuery 基本完成,IT 社区已经开始调查 XML 的业务使用,并确定 XQuery 所能提供的价值。作为商业数据库技术的创新领导者,Oracle 数据库 10g 第 2 版提供了完善的自带 XQuery 引擎,该引擎与传统的 Oracle 数据库服务器进行集成,以帮助各种组织探索其 XQuery 需求。
在 SQL 方面,SQL 2003 引入了 XML 数据类型,以作为在 SQL 中封装 XML 的方法。SQL 委员会正致力于通过 XQuery 集成 XML 查询。通过引入新的 SQL 函数,即将完成这项工作:XMLQuery 和新的结构:XMLTable 这两者均使用 XQuery 操作 XML 和 SQL 值。由于前者允许使用 XQuery 查询和构建 XML,因此前者称为以 XQuery 为中心的方法。由于后者允许将 XQuery 值细分为关系值,因此后者称为以 SQL 为中心的方法。
Oracle 数据库 10g 第 2 版通过这些 SQL 标准函数在数据库服务器中实现了 XQuery 支持。还在 SQL*Plus 中实现了新的 XQUERY 命令,以允许用户在命令行中输入 XQuery 表达式。通过 Oracle 数据库 10g 第 2 版中 XQuery 基于标准的实现,应用程序开发人员可以使用喜好的 API (例如 JDBC、ODP.NET)来利用 Oracle 数据库 XQuery 功能。
Oracle XQuery 的好处
 
通过 SQL/XML XQuery 函数和 XML 文档的结构化存储,XML DB 可以使用超过基于 DOM 的 XML 查询功能评估几个数量级的性能来处理 XML 查询。此外,XML 查询可以无缝地与 SQL 关系查询进行合并,来处理所有查询情况。最后,Oracle XML DB 的 XML 查询功能建立在业界最好的关系型数据库基础之上,具有高度的可靠性、可用性、可伸缩性和安全性。简言之,Oracle 数据库 10g 第 2 版中的 XML DB 查询功能为通用、可伸缩、并发以及高性能的 XML 应用程序提供了最全面、最高效的功能。返回主题列表
在企业管理器中查看 XML 模式
在 Oracle 数据库 10g 随附的示例架构中,已经提供了一个 XML 模式(作为 OE 模式的一部分)。在本部分中,您将使用企业管理器查看其内容。执行以下步骤:
1. 打开浏览器,输入以下 URL:
http://raclinux1.us.oracle.com:1158/em/ 输入 system/oracle,然后单击 Login。

2. 单击 Administration 选项卡。

3. 向下滚动。

4. 选择 XML Database 下的 Configuration 链接。

5. 输入 2100 作为 FTP 端口,输入 8080 作为 HTTP 端口。然后单击 OK。

6. 现在已经完成了配置设置。单击 Cluster Database 路径式导航栏。

7. 在 XML Database 下的 Administration 选项卡中,选择 Resources 链接。

8. 单击 Go 查看所有资源。

9. 这将显示所有资源。展开 home。

10. 展开 OE - PurchaseOrders - 2002 - Apr 以显示 XML 文档列表。单击列表中的第一个 XML 文档。

11. 这将显示该文档的一般信息。要查看该文档的实际内容,单击 Display Contents。

12. 这将显示文件内容。单击 Show formatted XML Content。

13. 查看格式化的 XML 文档。完成后,将关闭窗口。

14. 单击 Database 路径式导航栏。

15. 在 XML Database 下的 Administration 选项卡中,单击 XMLType Tables。

16. 单击 Go。

17. 单击表名 PURCHASEORDER。

18. 这将显示 XSD 的定义。向下滚动查看详细信息。

返回主题列表
在 JDeveloper 中查看 XML 模式
要在 JDeveloper 中查看 XML 模式,您需要执行以下任务:
创建 WebDAV 连接
查看 XML 模式
返回主题列表
创建 WebDAV 连接
在访问 XML DB 中的 XML 模式文档之前,您需要创建 WebDAV 连接。执行以下步骤:
1. 双击桌面上的 JDeveloper 10.1.2 图标。
2. 单击 Connection 选项卡。在 Navigator 窗口中右键单击 WebDAV Connection,然后选择 New WebDAV Connection...

3.
在 Welcome 窗口中,单击 Next。

4. 在 Name 域中输入 WebDAVConnection1,在 URL 域中输入 http://raclinux1.us.oracle.com:8080/,然后单击 Authentication Required。然后单击 Next。

5. 输入 OE 作为用户名和密码。然后单击 Next。

6. 单击 Test Connection。

7. 测试成功。单击 Next。

8. 单击 Finish。

9. 展开刚才创建的 WebDAVConnection1 连接。

返回主题
查看 XML 模式
现在,您可以查看 XML 模式。执行以下步骤:
1. 展开 home - OE - PurchaseOrders - 2002 - Apr。右键单击列表中的第一个文档,然后选择 Open。这将显示 XML 文档。

2. 在 Navigator 窗口中向下滚动,然后右键单击 purchaseOrder.xsd。然后选择 Open。

3.
这将在图形布局中显示 XML 模式。展开 PurchaseOrder 类型。

4. 展开 Actions 类型。

5. 展开 Action,您将看到两个类型对象:User 和 Date。现在,您将返回 XML 文档以查看它们的定义位置。单击 XML Document 选项卡。

6. Action 对象包含一个 KPARTNER 用户类型。

返回主题
运行 XQuery 表达式以访问 XML 文档
在本部分中,您将运行一些 XQuery 表达式及其关联的解释计划来访问有关 XML 文档的信息。执行以下步骤:
1. 打开一个终端窗口,然后输入以下命令:
cd wkdir sqlplus oe/oe
2. 您将运行的第一个 xquery 将选择所有 XML 文档。执行以下脚本:
@XQuery01

3. 您将运行的第二个 xquery 将选择特定用户的 XML 文档。执行以下脚本:
@XQuery02


4. 您将运行的下一个 xquery 将查看特定的订货单。执行以下脚本:
@XQuery03



5. 您将运行的下一个 xquery 将列出包含特定部件 ID 的所有订货单。执行以下脚本:
@XQuery04

6. 您将运行的下一个 xquery 将列出包含特定部件 ID 的所有订货单。执行以下脚本:
@XQuery05

7. 您将运行的下一个 xquery 将列出特定订货单中每行项目的描述。执行以下脚本:
@XQuery06

返回主题列表
通过创建索引增强 XQuery 表达式的性能
您可以通过创建索引来增强 XQuery 的性能。在本部分中,您将创建一个索引,然后运行相同的 XQueries 来查看改变性能的解释计划如何获得增强。执行以下步骤:
1. 从 SQLPlus 会话中,登录 OE 用户。
@createXMLIndexes
2. 您将运行的下一个 xquery 将查看特定的订货单。执行以下脚本:
@XQuery03



3. 您将运行的下一个 xquery 将列出包含特定部件 ID 的所有订货单。执行以下脚本:
@XQuery04

4. 您将运行的下一个 xquery 将列出包含特定部件 ID 的所有订货单。执行以下脚本:
@XQuery05

5. 您将运行的下一个 xquery 将列出特定订货单中每行项目的描述。执行以下脚本:
@XQuery06

返回主题列表
通过 XQuery 使用视图
您可以使用 XQuery 通过视图从 SQL 数据生成 XMl。执行以下步骤:
1.
首先通过 XMLTable() SQL/XML 函数和 XQuery 表达式来根据关系表创建 XML 视图。执行以下脚本:
@createXQueryView
2. 现在,可以根据刚刚创建的 XML 视图来显示 XQuery。执行以下脚本:
@xqueryXQLView


返回主题列表
使用虚拟 XML 文档
虚拟 XML 文档可指导您如何将 XMLType 视图中行的内容作为 Oracle XML DB 信息库中的文档来提供。执行下列任务:

创建触发器

在 JDeveloper 中查看虚拟 XML 文档

在 SQL*Plus 中查看虚拟 XML 文档
返回主题列表
创建触发器
1.
首先需要创建一个要从前面创建的 XML 视图创建一个虚拟 XML 文档的触发器。执行以下脚本:
@folderXQDepartments
返回主题
在 JDeveloper 中查看虚拟 XML 文档
1. 切换到 JDeveloper。从 Navigator 窗口中,右键单击 WebDAV 连接中的 /home/OE,然后选择 Refresh。

2. 展开 XQDepartments。

注意:如果在此步骤中遇到一个错误,则试着再次执行第 1 步,然后再次展开 XQDepartments。
3. 选择列表中的第一个 .xml 文档。该 Accounting.xml 文档直接在 XMLType 视图的行中显示 XML 数据。

返回主题
在 SQL*Plus 中查看虚拟 XML 文档
1.
您还可以查询虚拟 XML 文档。请注意如何使用 XQuery 标准 doc() 函数来检索 XML DB 信息库中的 XML 文档。首先,您将查看具有 Accounting 显示名的虚拟文档列表。执行以下脚本:
@departmentsXQueries01
2.
现在,可以显示其中一个虚拟 XML 文档的内容。执行以下脚本:
@departmentsXQueries02
3.
最后,您可以执行 XQuery 来选择虚拟 XML 文档的其中一项。执行以下脚本:
@departmentsXQueries03
返回主题
在资源视图中使用 XQuery 从 XML 信息库检索信息
通过 RESOURCE_VIEW 和 PATH_VIEW 公开 XML DB 信息库的内容。  Public synonyms make these views available to all database users.可以像使用任何其他数据库视图那样来使用这些视图。执行以下步骤:
1.
执行以下脚本:
@resourceViewXQuery01
返回主题列表
使用 XQuery 转换 XML 文档
XQuery 是通用的查询语言。它可用于将 XML 文档从一种结构转换为另一种结构。执行以下步骤:
1.
标记和其他 XQuery 表达式已经对订货单进行转换,以生成明显不同的 XML 文档报告。执行以下脚本:
@XQueryTransform
返回主题列表
使用 JDBC 通过 XQuery 查询 Oracle XML DB
JDBC 通过以下 SQL/XML 函数的本地实现来支持 XQuery 语言:XMLQuery 和 XMLTable。以下示例演示了如何使用 XMLTable() 函数的 PASSING 语句将动态变量绑定到 XQuery 表达式。执行下列任务:

添加应用程序

更改 JDBC 连接信息

添加类路径

构建应用程序

运行应用程序
返回主题列表
添加应用程序
1.
切换到 JDeveloper。单击 Navigator 的 Applications 选项卡,然后单击 Add to Applications 图标。

2.
从 /JDBC 目录中选择 XQuerySamples.jws。然后单击 Open。

返回主题
更改 JDBC 连接信息
1.
展开 XQuerySamples > SimpleXQuery > Application Sources,然后右键单击 SimpleXQuery.java,并单击 Open。

2.
稍微向下滚动到 OracleConnection 语句,然后更改主机名和 SID 信息。

3.
更改 XQueryBind 下所有 .java 文件的 JDBC 连接信息。
返回主题
添加类路径
1.
您需要设置类路径。选择 Tools > Default Project Properties。

2.
选择 Libraries,然后单击 New...。

3.
输入 Oracle Database 10gR2 作为库名称,然后为类路径单击 Edit。

4.
单击 Add Entry...。

5.
导航到 $ORACLE_HOME/jdbc/lib/ojdbc14.jar 文件,然后单击 Select。

6.
单击 Add Entry...。

7.
导航到 $ORACLE_HOME/rdbms/jlib/xdb.jar 文件,然后单击 Select。

8.
单击 Add Entry...。

9.
导航到 $ORACLE_HOME/lib/xmlparserv2.jar 文件,然后单击 Select。

10.
单击 OK。

11.
单击 OK 保存新的库。

12.
单击 OK 关闭 Project Properties 窗口。

13.
现在,您需要将该库添加到项目中。右键单击 SimpleXQuery,然后选择 Project Properties。

14.
从库列表中选择 Oracle Database 10gR2,然后单击 > 进行选择。然后单击 OK。

15.
右键单击 XQueryBind,然后选择 Project Properties。

16.
从库列表中选择 Oracle Database 10gR2,然后单击 > 进行选择。然后单击 OK。

返回主题
构建应用程序
1.
右键单击 XQuerySamples,然后选择 Make。

2.
查看 Message 窗口,确保未收到错误消息。

返回主题
运行应用程序
1.
右键单击 SimpleXQuery,然后选择 Run。

2.
输出将显示在 Log 区域。

3.
右键单击 XQueryBind,然后选择 Run。

4.
输出将显示在 Log 区域。

返回主题
总结
在本课程中,您学习了如何:
使用 XQuery 查询 Oracle XML DB 中存储的 XML 文档

添加 XML 索引,并演示在执行 XQuery 时解释计划如何变化

使用 XQuery 创建 XML 视图,以及使用 XQuery 查询 XML 视图

从 XML 视图创建虚拟 XML 文档,以及使用 XQuery 查询这些 XML 文档

在资源视图中使用 XQuery 从 XML 信息库检索信息

使用 XQuery 转换 XML 文档
使用 XQuery 通过 JDBC 查询 Oracle XML DB
返回主题列表
将光标置于该图标上可以隐藏所有的屏幕截图。