从Oracle数据访问和格式化XML
立即解锁
发布时间: 2025-08-17 01:24:04 阅读量: 2 订阅数: 15 

### 从Oracle数据访问和格式化XML
#### 1. 引言
Oracle对XML的支持始于Oracle 8i数据库。在Oracle 8i中,XML文档可以包含在Oracle数据库文件系统(iFS)中,并像基于文件夹的文件系统一样进行操作。可以根据Oracle的iFS文档类型定义(这是W3C文档类型定义(DTD)的专有格式)将XML文档从Oracle数据中分解和重新组装。借助Oracle自己支持DOM和SAX的XML文档解析器,可促进XML文档的解析和重新组装。此外,Oracle 8i还支持在ConText全文搜索引擎中进行基于XML的搜索,内容评级可以检索XML文档内容并忽略标签,但搜索也可以基于标签进行。
#### 2. Oracle 9i的XML特性
Oracle 9i扩展了这些功能,具备更高级的XML数据库特性,如SQL/XML查询支持以及与W3C模式的兼容性。它还包含一个基于Apache HTTP Server的Java应用服务器。
- **标准版**:拥有开发人员创建XML数据库解决方案所需的一切。
- **企业版**:包含更高级的功能,如在线分析处理(OLAP)服务器支持以及一些实现复杂数据挖掘、分区和聚类的功能。
Oracle 9i进一步扩展了功能,支持完整的DOM 2和DOM 3特性,如注释和命名空间。对W3C模式的额外支持有助于强制执行元素和属性的顺序以及其他细致的XML文档结构。同时,对XML索引的更高级支持提高了性能。
#### 3. Oracle XML DB功能分类
Oracle将XML DB功能分为两类:结构化XML和非结构化XML。
- **非结构化数据特性**:适用于需要为处理非结构化数据(如网站页面)的应用程序开发XML文档存储库的开发人员。
- **结构化数据特性**:满足处理传统表格关系数据但需要将该数据作为XML进行操作的开发人员的需求。
#### 4. Oracle 9i XML DB的特点
Oracle 9i XML DB包含一组特殊的SQL函数,允许将XML数据作为关系数据进行操作。一种名为XMLType的新数据类型允许将XML数据存储为普通XML文档或基于DOM的格式。可以使用带注释的W3C模式定义XMLType表和视图,这些模式可以控制XML文档如何映射到Oracle数据。还可以使用Windows资源管理器与XML DB存储库(以前的iFS)一起将XML数据库视为文件系统上的驱动器。
此外,XPath和SQL的组合也可用于操作XML文档。还可以以XML格式检索常规关系数据,并对数据进行XSLT转换,将其转换为文本、HTML或自定义XML格式。
#### 5. 示例表结构
所有示例使用的数据结构包含五个表,都存储在名为XMLPB1的数据库中。以下是各表的结构:
| 表名 | 列名 | 数据类型 | 最大长度 |
| --- | --- | --- | --- |
| AMAZONLISTINGS | PRODUCTID | NUMBER | 10(主键) |
| | RANKING | NUMBER | 10 |
| | TITLE | CHAR | 200 |
| | ASIN | CHAR | 10 |
| | AUTHORID | NUMBER | 10(外键 - AUTHORS) |
| | IMAGE | CHAR | 100 |
| | SMALL_IMAGE | CHAR | 100 |
| | LIST_PRICE | NUMBER | 10.2 |
| | RELEASE_DATE | DATE | |
| | BINDING | CHAR | 50 |
| | AVAILABILITY | CHAR | 10 |
| | TAGGED_URL | CHAR | 200 |
| AUTHORS | AUTHORID | NUMBER | 10(主键) |
| | AUTHORNAME | CHAR | 50 |
| ELCORTEINGLESLISTINGS | PRODUCTID | NUMBER | 10(主键) |
| | TITULO | CHAR | 200 |
| | ISBN | CHAR | 20 |
| | AUTHORID | NUMBER | 10(外键 - AUTHORS) |
| | IMAGEN | CHAR | 100 |
| | PRECIO | NUMBER | 10.2 |
| | FECHA_DE_PUBLICACION | DATE | |
| | ENCUADERNACION | CHAR | 50 |
| | LIBROURL | CHAR | 200 |
| QUOTATIONS | QUOTATIONID | NUMBER | 10(主键) |
| | SOURCEID | NUMBER | 10(外键 - SOURCES) |
| | AUTHORID | NUMBER | 10(外键 - AUTHORS) |
| | QUOTATION | CHAR | 300 |
| SOURCES | SOURCEID | NUMBER | 10(主键) |
| | SOURCENAME | CHAR | 50 |
#### 6. 安装和配置Oracle数据库及Oracle XDK
可以从http://otn.oracle.com/software/products/oracle9i/content.html下载最新版本的数据库用于评估和开发。示例使用的是Oracle 9i数据库版本2。下载文件较大,即使网络良好也需要一定的下载时间。对于网络带宽有限的用户,该网站也提供付费试用下载。下载并安装文件后,可通过Oracle Enterprise Manager Console和SQL Scratchpad使用XML功能。
#### 7. 关于Oracle XML DB
Oracle XML DB是XML和XPath函数与SQL扩展的组合。XML DB功能有助于将Oracle数据作为XML进行操作,也允许使用XMLTYPE数据类型将XML文档作为Oracle数据进行存储和查询。如果只是想从Enterprise Manager Console或第三方查询工具查询XML文档,则不需要Oracle XDK。但在应用程序中使用XML DB功能则需要XDK。
#### 8. 关于Oracle XDK
最新版本的Oracle XDK可从http://otn.oracle.com/tech/xml/xdk获取。XDK有Java、C、C++和PL/SQL版本。目前使用的是版本10 XDK的beta版。Oracle XDK是一组XML API,开发人员可以使用它们将Oracle数据集成到自己的应用程序中。
#### 9. 开发Oracle XML解决方案
新接触XML开发的Oracle开发人员通常认为Oracle XDK是在Oracle中访问和操作XML的唯一方法。实际上,有多种方法可以从Oracle表中检索XML,以及在Oracle中以XML形式存储和检索XML文档。以下将介绍XML DB函数以及如何使用XMLType数据类型操作和存储XML文档。
#### 10. 常用的Oracle 9i XML函数
| 函数 | 描述 |
| --- | --- |
| DBMS_XMLGEN() | 一个PL/SQL包,从SQL查询生成XML文档 |
| SYS_XMLGEN() | 当传入一个计算为表的特定行和列的表达式时,返回一个XML文档或文档片段。当从格式为XMLType数据类型的列中检索XML文档时效果最佳。使用SQL/XML函数将常规关系数据类型格式化为XML |
| SYS_XMLAGG() | 从一行或多行数据返回聚合的XML文档。返回值会自动嵌套在名为ROWSET的
0
0
复制全文
相关推荐










