1 Oracle XML DBの概要
Oracle XML DBは、SQLとXMLの両方のデータ・モデルの相互運用を可能にすることで、Oracle DatabaseにネイティブなXMLサポートを提供します。
Oracle XML DBの概要
Oracle XML DBは、XMLデータの格納、生成、アクセス、検索、検証、変換、拡張および索引付けなどの高パフォーマンスの処理に関連する一連のOracle Databaseテクノロジです。SQLとXMLの両方のデータ・モデルの相互運用を可能にすることで、ネイティブなXMLサポートを提供します。
Oracle XML DBは、Oracle9iリリース2 (9.2)以上のOracle Databaseに組み込まれています。
Oracle XML DBおよびXMLType
抽象データ型により、Oracle DatabaseはXML対応になります。XMLデータをXMLType
列または表として格納すると、Oracle Databaseはコンテンツに対してXML固有の操作を実行できます。たとえば、XMLの検証や最適化の操作などです。XMLType
記憶域では、データベース内のXMLコンテンツを非常に効率的に処理できます。
Oracle XML DBには、次のような機能があります。
-
XMLデータの抽象SQLデータ型である
XMLType
が用意されています。 -
XMLコンテンツの信頼性、可用性、拡張性、堅牢なセキュリティなど、企業レベルのOracle Database機能を提供します。XML固有のメモリーを管理および最適化します。
-
業界標準の方法で、XMLデータをアクセスおよび更新できます。FTP、HTTP(S)およびWebDAVを使用して、XMLコンテンツをOracle Databaseの内外に移動できます。業界標準のAPIにより、Java、CおよびPL/SQLを使用してXMLコンテンツのプログラム・アクセスおよび操作を行うことができます。
-
SQLおよびXQueryを使用してXMLデータにアクセスし、同時にそのデータを格納、更新および変換できます。
-
SQLデータに対してXML操作を実行できます。
-
単純で軽量なリポジトリであるOracle XML DBリポジトリが備わっています。このリポジトリによって、ファイル/フォルダ/URL隠喩を使用して、XMLコンテンツを含むデータベース・コンテンツを編成および管理できます。
-
異なるシステムのデータにゲートウェイを介してアクセスし、1つの共通のデータ・モデルとして組み合せることができます。これによって、異なるストアのデータを処理する必要があるアプリケーション開発の複雑さが低減されます。
-
Oracle XML DBをOracle XML Developer's Kit (XDK)とともに使用して、Oracle Fusion MiddlewareまたはOracle Databaseの中間層で動作するアプリケーションを構築します。
Oracle XML DBの機能は、関連するXML標準(XML Parser、XSLT Virtual Machine、XML DOM、XML Schema Validatorなど)のOracle XML Developer's KitのC実装に部分的に基づいています。
関連トピック
関連項目:
-
OTNのOracle XML DB: Oracle XML DBに関する最新情報およびホワイト・ペーパー
Oracle XML DBのメリット
Oracle XML DBでは、XML、SQL、Java、インターネットなど、すべての主要な標準がサポートされています。これは、XML操作の優れたパフォーマンスと拡張性を提供します。これにより、XMLの分野にトランザクション制御、データ整合性、レプリケーション、信頼性、可用性、セキュリティ、拡張性などのデータベース機能が追加されました。
図1-1は、Oracle XML DBでサポートされている標準の概要を示しています。
データとコンテンツの統合
Oracle XML DBでは、標準データ・モデル、標準SQLおよび標準XMLを使用して、構造化、非構造化または半構造化のデータを格納および管理できます。XML文書に対してSQL操作を実行したり、(表などの)オブジェクト・リレーショナル・データに対してXML操作を実行することができます。
多くのアプリケーションのデータおよびWebコンテンツは、リレーショナル・データベースまたはファイル・システム内、あるいはその両方に格納されます。多くの場合、XMLデータはデータ交換に使用され、リレーショナル・データベースまたはファイル・システムから生成できます。交換されるXMLデータのボリュームが大きくなると、このデータを再生成するコストが増加し、XMLコンテンツの保存にはこれらの格納方法は効率的ではありません。
多くの場合、企業は構造化データと非構造化データを異なる方法で管理しています。
-
表内に格納された非構造化データの場合、ドキュメント・アクセスが透過的になり、表アクセスが複雑になります。
-
通常はバイナリ・ラージ・オブジェクト(
BLOB
インスタンスなど)に格納された構造化データの場合、ドキュメント・アクセスが複雑になり、表アクセスが透過的になります。
XML操作のためのデータベース機能
Oracle Databaseは、索引付けと検索、更新とトランザクション処理、制約を使用した関係の管理、複数のデータ・ビュー、優れたパフォーマンスと拡張性など、XML操作のためのデータベース機能を提供します。これにより、XML Schema、XQuery、XPathおよびDOMがサポートされます。
-
索引付けおよび検索 - データベースのデータをある程度構造化できるように、問合せもある程度構造化できます。ある問合せでは、2014年の3月と4月の間に作成されすべての製品定義を検索できます。別の問合せでは、説明に"
wireless
"と"router
"という単語が含まれるが"wireless router
"という用語は含まれない製品を検索できます。前者のような問合せは、構造化データを対象とし、通常は日付列のBツリー索引によってサポートされます。後者のような問合せは、非構造化データを対象とし、Oracle Databaseの場合は通常、Oracle Text (全文)索引によってサポートされます。アプリケーションでは構造化問合せと非構造化問合せを結合でき、対象データには構造化データと非構造化データが混在していてもかまいません。
XMLデータの場合も、状況は同様です。Oracle XML DBには、高度に構造化されたデータおよび問合せから高度に非構造化されたデータおよび問合せまでのXMLの能力範囲全体を対象とできる索引付け機能が用意されています。
-
更新およびトランザクション処理 – 商用のリレーショナル・データベースでは、レコードのサブパーツを高速更新することによって、更新を試行しているユーザー間の競合が最小化されています。従来、ドキュメント中心のデータは、XMLを介して協調環境を構築しているため、この要件はより重要になります。ファイル記憶域または
CLOB
記憶域では、Oracle XML DBで行われる細分化された同時実行性制御を行うことができません。関連項目:
-
関係の管理 – 通常、なんらかの構造を持つデータには外部キー制約があります。一般に、XMLデータを格納するシステムにはこの機能がないため、アプリケーション・コードで任意の制約を実装する必要があります。Oracle XML DBを使用すると、XML Schemaの定義に基づいてXMLデータを制約できるため、構造化データが持つ関係を制御できます。
関連項目:
-
データの複数のビュー – 多くの企業アプリケーションでは、別々のモジュール用に、それぞれ異なる方法でデータをグループ化する必要があります。そのため、これらの複数の方法でデータを組み合せることができるように、リレーショナル・ビューが必要になります。Oracle XML DBでは、XMLでビューを使用することによって、様々なアプリケーションで使用する場合など、XMLに別々の論理的な抽象概念が作成されます。
関連項目:
-
パフォーマンスとスケーラビリティ – データは、高速な格納、取出しおよび問合せが可能である必要があります。通常、ファイルまたは
CLOB
値のロードおよび解析は、リレーショナル・データのアクセスより遅くなります。Oracle XML DBでは、XMLの格納および取出しが大幅に高速化されます。 -
簡単な開発 – データベースは、個々のデータ要素を簡単に操作、変換および変更するための標準的な手段を提供する、最も重要なアプリケーション・プラットフォームです。一般的なXMLパーサーでは、XMLデータに対する標準的な読取りアクセスが提供されますが、個別のXML要素を簡単に変更および格納する方法は提供されません。Oracle XML DBでは、データを格納、変更および取得するための標準的な方法がいくつかサポートされています。たとえば、XML Schema、XQuery、XPath、DOMおよびJavaなどを使用できます。
データベースでデータをXMLとして格納する場合のメリット
データベースでデータをXMLとして格納することには、記憶域に非依存であることや、表示や交換が簡単であるという利点があります。
-
記憶域に非依存: リレーショナル設計を使用する場合、クライアント・プログラムでは、データの格納場所、形式、表および表間の関係が認識されている必要があります。
XMLType
を使用すると、その情報がなくてもアプリケーションを作成でき、データベース管理者は構造化データを物理表および列の記憶域にマップできます。 -
簡単な表示: XMLは、Webブラウザ、多くの一般的なデスクトップ・アプリケーションおよびほぼすべてのインターネット・アプリケーションでネイティブに認識されます。一般的に、リレーショナル・データは、アプリケーションから直接アクセスできません。一般のクライアントがリレーショナル・データにアクセスできるようにするには、追加のプログラミングを行う必要があります。Oracle XML DBでは、データはXMLとして格納され、データベース外部ではXMLとして使用可能になります。データベースのコンテンツを表示するためのプログラミングは必要ありません。
-
簡単な交換 – XMLは、Business-to-Business(B2B)のデータ交換で使用される言語です。通常、XMLを任意の表構造に格納する必要がある場合は、XMLの内容を独自の方法で解釈し、分解します。言語を分解すると、情報が失われ、交換が困難になります。Oracle XML DBでは、XMLをネイティブに認識し、格納および取出し処理でのDOM再現性を提供することによって、完全な交換が可能になります。
関連項目:
データの二面性: XMLおよびリレーショナル
Oracle XML DBでは、XMLデータとリレーショナル・データとして、対照的かつ双対的にデータを表示します。
Oracle XML DBの主要機能の1つは、XMLデータをリレーショナル・データであるかのように処理し、リレーショナル・データをXMLデータであるかのように処理できることです。XMLコンテンツの操作時にリレーショナル・モデルの機能を使用でき、リレーショナル・コンテンツの操作時にXMLの柔軟性を利用できます。個別のビジネス問題の様々な側面に対して最適のツールを使用できます。
この二面性とは、同じデータを表内の行として公開し、SQLを使用して操作できること、または同じデータをXML文書のノードとして公開し、XQuery、DOM変換またはXSL変換を使用して操作できることを意味します。アクセス方法と処理方法は、基礎となる記憶域方法とは関係がありません。
これらの機能によって、一般的なビジネス問題に対する単純なソリューションを提供できます。
-
XMLデータをSQL問合せから直接生成できます。そのXMLデータを、データベースに常駐するXSLTプロセッサを使用して、HTMLなどの他の形式に変換できます。
-
SQL問合せ、オンライン分析処理(OLAP)およびビジネス・インテリジェンス/データ・ウェアハウス操作を使用して、データ形式の変換を行わずにXMLコンテンツにアクセスできます。
-
テキストおよび空間データ操作をXMLコンテンツで実行できます。
Oracle OLAPはOracle Database 23cで非推奨になりました。
データがXMLでない場合のXMLTypeビューの使用方法
XMLType
ビューでは、既存のリレーショナル・データまたはオブジェクト・リレーショナル・データをXML形式にラップする方法が提供されます。
これは、XML形式でないレガシー・データをXML形式に移行する必要がある場合に特に有効です。XMLType
ビューを使用すると、アプリケーション・コードまたは格納データを変更する必要がありません。
XMLType
ビューを使用するには、最初にXML Schemaデータ型と、SQLデータ型または双方向XMLエンコーディング型の間の双方向マッピングを表す注釈が付いたXML Schemaを登録する必要があります。その後、適切な型のインスタンスを構築する基礎となる問合せを指定することによって、このマッピングに準拠するXMLType
ビューを作成できます。
関連トピック
複雑なXML文書の効率的な格納および取出し
Oracle XML DBはXML操作のパフォーマンスと拡張性に優れ、複雑、大規模または多数のXML文書の格納と取得を管理できます。
Oracle XML DBの主要なパフォーマンス機能は次のとおりです。
-
ネイティブな
XMLType
。抽象データ型XMLType
には2つの記憶域モデルがあり、それぞれが特定の一連のユースケースに対して効率的に機能するよう最適化されています。 XMLデータの問合せと更新およびXMLType記憶域および索引付けの選択を参照してください。 -
最適化されたXQuery、XPathおよびXSLTの処理。XQuery用のパフォーマンス・チューニングおよびXMLTypeデータの変換および検証を参照してください。
-
構造化された検索または全文検索のためのXMLデータの索引付け。XMLTypeデータの索引を参照してください。
-
遅延評価された仮想的なDOM。PL/SQL DOM API for XMLType (DBMS_XMLDOM)を参照してください。
-
Oracle XML DBリポジトリに対する階層索引。Oracle XML DBリポジトリ操作のパフォーマンス・ガイドラインを参照してください。
-
並列度およびOracle Exadata Smart Scan。XMLデータの問合せおよび更新は並行して実行できます。Oracle Exadata Smart ScanはXMLデータに対して自動的に有効になります。
Oracle XML DBのアーキテクチャ
Oracle XML DBを使用すると、ローカルおよびリモートのXMLType
表やビューの形式で、XMLデータへのプロトコル・アクセスおよびプログラム・アクセスが可能になります。これにより、リソースのバージョニングとアクセス制御がWebDAVリポジトリに提供されます。
図1-3に、Oracle XML DBのソフトウェア・アーキテクチャを示します。主な特徴は次のとおりです。
-
XMLType
表およびビューの記憶域。-
XMLType
表およびビューは、XMLIndex
、BツリーおよびOracle Text索引を使用して索引付けできます。 -
XMLType
ビュー内のデータは、ローカル表またはリモート表に格納できます。リモート表には、データベース・リンクを使用してアクセスできます。
-
-
XQuery UpdateおよびXQuery Full Textを含むXQueryのサポート。
-
Oracle XML DBリポジトリ。Oracle XML DBに登録されるXML Schemaに関連付けられたXML文書など、任意の種類のドキュメントをリポジトリに格納できます。リポジトリ内のドキュメントには、次のいずれかの方法でアクセスできます。
-
HTTPプロトコル・ハンドラを介したHTTP(S)
-
WebDAVおよびFTPプロトコル・ハンドラを介したWebDAVおよびFTP
-
Java Database Connectivity(JDBC)などのOracle Net Servicesを介したSQL
-
Oracle XML DBの機能
Oracle XML DBでは、トランザクション制御、データ整合性、レプリケーション、信頼性、可用性、セキュリティ、拡張などの標準的なデータベース機能を提供する一方で、XML中心の方法でXML文書の効果的な索引付け、問合せ、更新および検索を実行できます。
XMLの階層構造によって、従来のリレーショナル・データベースのいくつかの問題点が示されます。
-
リレーショナル・データベースでは、表/行隠喩を使用してコンテンツを検索します。主キーと外部キーの関係は、コンテンツ間の関係を定義するのに有効です。コンテンツは、表/行/列隠喩を使用してアクセスおよび更新します。
-
これに対してXMLでは、階層テクニックを使用して、同じ処理を実行します。つまり、URLを使用してXML文書を検索します。XML文書間の関係を定義するには、XLinkなどURLベースの標準を使用します。XML文書内に含まれるコンテンツへのアクセスと更新には、XPathなどのW3C勧告を使用します。URLとXPath式は、いずれも階層隠喩に基づいています。URLは、フォルダ階層からパスを使用してドキュメントを識別するのに対し、XPathは、XML文書のノード階層からパスを使用してXML文書の一部にアクセスします。
Oracle XML DBでは、これらの問題点に対処するために、SQL関数とメソッドが導入されています。これらによって、XQuery式やXPath式などXML中心の隠喩を使用して、XML文書を問合せおよび更新できます。
XMLTypeデータ型
XMLType
を使用すると、XML開発者は、リレーショナル・データベースのコンテキスト内で作業中にXML標準の機能を使用でき、SQL開発者は、XMLデータを操作中にリレーショナル・データベースの機能を使用できます。
XMLType
は、XMLデータの抽象ネイティブSQLデータ型です。これは、XMLType
インスタンスをVARCHAR2
、CLOB
、BLOB
またはBFILE
インスタンスから作成するためのPL/SQLおよびJavaコンストラクタを提供します。また、様々なXML操作用のPL/SQLメソッドも提供します。
他のSQLデータ型と同じようにXMLType
を使用できます。たとえば、XMLType
表やビュー、またはリレーショナル表にXMLType
列を作成できます。
XMLType
は、PL/SQLストアド・プロシージャのパラメータ、戻り値および変数に使用できます。
XMLType
データは、Java Database Connectivity (JDBC)およびOracle Data Provider for .NET (ODP.NET)などのJavaおよびC言語用Application Programming Interface (API)を使用して操作することもできます。
XMLType
はOracle Databaseオブジェクト型であるため、XMLType
オブジェクト・インスタンスの表も作成できます。デフォルトでは、XMLType
表または列に整形式のXML文書を含めることができます。
XMLデータに準拠するようXMLType
表または列を制約でき、この場合、データベースでは、XML Schemaに対して有効であるXMLデータのみが表または列に確実に格納されます。無効な文書は除外されます。
関連項目:
-
Oracle Databaseのオブジェクト型およびオブジェクト・リレーショナル形式の記憶域の詳細は、Oracle Databaseオブジェクト・リレーショナル開発者ガイドを参照してください。
-
XMLType
コンストラクタおよびメソッドの詳細は、Oracle Database PL/SQLパッケージおよびタイプ・リファレンスを参照してください。
XMLType記憶域モデル
XMLType
は、データおよびその使用を最適にするための様々な記憶域モデルを提供する抽象データ型です。抽象データ型であるため、アプリケーションおよびデータベース問合せの柔軟性が増し、同じインタフェースをすべてのXMLType
操作に使用できます。
XMLType
表および列は、次の方法で格納できます。
-
トランスポータブル・バイナリXML (TBX)記憶域(デフォルト、推奨) -
XMLType
データは自己完結型のバイナリ形式で格納されます。Oracle Database 23cでは、XMLデータのエンコードまたはデコードに使用されるメタデータを中央表に格納しないトランスポータブル・バイナリXML (TBX)が導入されています。これにより、XMLデータ記憶域が簡略化され、転送が容易になります。Oracleでは、トランスポータブル・バイナリXMLのシャーディングおよびXML検索索引がサポートされています。トランスポータブル・バイナリXMLは、SecureFile LOBを使用してのみ格納できます。TBXにstore as basicfile句が指定されている場合は、エラーが発生します。唯一の例外はSYSおよびXDBユーザーで、basicfile句を使用できます。
-
バイナリXML (非トランスポータブル)記憶域 -
XMLType
データは、XMLデータ専用に設計された事後解析のバイナリ形式で格納されます。バイナリXMLは、コンパクトで事後解析型のXML Schema対応XMLデータであり、XMLデータのエンコードまたはデコードに使用されるメタデータを中央表に格納します。非トランスポータブル・バイナリXML記憶域の場合、SecureFilesがデフォルトの記憶域オプションです。ただし、次のいずれかが当てはまる場合、SecureFiles LOB記憶域は使用できません。その場合は、BasicFilesがバイナリXMLデータのデフォルト・オプションになります。
-
XMLType
表の表領域で、自動セグメント領域管理が使用されていない。 -
ファイル
init.ora
の設定により、SecureFiles LOB記憶域を使用できない。例については、パラメータDB_SECUREFILE
を参照してください。
-
-
オブジェクト・リレーショナル記憶域 –
XMLType
データは、一連のオブジェクトとして格納されます。これは、構造化記憶域およびオブジェクトベースの永続性とも呼ばれます。
適切な索引を使用すると、トランスポータブル・バイナリと非トランスポータブル・バイナリの両方のXML記憶域によって、ほとんどのユースケースでのパフォーマンスが向上します。
XMLType
記憶域は、データベースのインポート/エクスポートまたはオンライン再定義を使用してモデル間で変更できます。アプリケーション・コードの変更は不要です。アプリケーションをチューニングする際に、XML記憶域オプションを変更できます。
ノート:
-
Oracle Database 12cリリース1 (12.1.0.1)以降、
XMLType
用の非構造化(CLOB
)記憶域モデルは非推奨です。バイナリXML記憶域をかわりに使用してください。 -
Oracle Database 23c以降、トランスポータブル・バイナリXMLはすべてのXMLTypeデータのデフォルトおよび推奨記憶域タイプです。
-
TBXは推奨される記憶域タイプですが、一部のアプリケーションは古いCSXまたは非トランスポータブル・バイナリxmlにまだ依存している可能性があります。パラメータ
XML_PARAMS
を使用して、デフォルトのタイプをTBXからCSXに切り替えます。
関連項目:
-
XML_PARAMS
の詳細は、『Oracle Databaseリファレンス』を参照してください。 -
Oracle Database SQL言語リファレンスの「CREATE TABLE」の項のLOB_storage_clause句
-
LOB記憶域オプション、SecureFilesおよびBasicFilesの詳細は、Oracle Database SecureFilesおよびラージ・オブジェクト開発者ガイドを参照してください。
-
自動セグメント領域管理の詳細は、Oracle Database管理者ガイドを参照してください。
-
パラメータ
DB_SECUREFILE
の詳細は、Oracle Databaseリファレンスを参照してください。
Oracle XML DBにおけるXML Schemaのサポート
World Wide Web Consortium (W3C)のXML Schema勧告のサポートはOracle XML DBの主要な機能の1つです。
XML Schemaでは、XML文書の構造、コンテンツおよび特定のセマンティクスを指定します。詳細は、http://www.w3.org/TR/soap12-part0/
を参照してください。
W3Cのスキーマ・ワーキング・グループは、特定のXML Schema(,スキーマのスキーマと呼ばれることが多い)を公開し、これによりXML Schema言語の定義またはボキャブラリが提供されます。XML Schema定義(XSD脚注 1)はXML Schemaとも呼ばれ、スキーマのスキーマによって定義されたボキャブラリに準拠するXML文書です。
XML Schemaでは、スキーマのスキーマで定義されたボキャブラリを使用して、XML Schema型定義のコレクションおよび要素宣言を作成します。この要素宣言は、新しいクラスのXML文書(そのXML Schemaに準拠するXMLインスタンス・ドキュメント)のコンテンツと構造を記述するボキャブラリを構成します。
ノート:
このマニュアルで使用している「XML Schema」という用語は、W3CのXML Schema勧告に準拠しているスキーマを指します。XML SchemaはXML文書のクラスを定義するために使用されるため、「インスタンス・ドキュメント」という用語は、多くの場合、特定のXML Schemaに準拠するXML文書を示すために使用しています。
XML Schema言語によって、要素と属性の厳密な型指定が可能になります。多数くのスカラー・データ型を定義します。このデータ型のベース・セットは、継承および拡張などのオブジェクト指向テクニックを使用して、より複合的な型を定義するように拡張できます。また、XML Schemaボキャブラリには、複合型、代替グループ、繰返しセット、ネスト、順序付けなどを定義するために使用できる構造体が含まれます。Oracle XML DBは、XML Schema勧告で定義されたすべての構造体をサポートします(redefines
を除く)。
XML Schemaは、一般的に、XMLインスタンス・ドキュメントがそれぞれの仕様に準拠していることを確認(検証)するためのメカニズムとして使用されます。Oracle XML DBには、XMLType
メソッドとSQL関数が含まれ、それらを使用してXML文書をXML Schemaに対して検証できます。
Oracle XML DBでは、データが構造化されているかどうかに関係なく、すべてのデータで標準データ・モデルを使用できます。XML Schemaを使用すると、XMLデータを格納するためのデータベース表を自動的に作成できます。XML Schemaに基づくデータはDOM再現性を保持し、データベースの大幅な最適化を実現します。
XMLスキーマに基づくデータは、Oracle XML DBのXMLType
記憶域モデル(コンパクト・スキーマ対応バイナリXML記憶域、トランスポータブル・バイナリXML記憶域またはオブジェクト・リレーショナル記憶域)のいずれかを使用して格納できます。XML Schemaに基づかないXMLデータは、バイナリXML記憶域を使用してのみ格納できます。
また、既存のリレーショナル・データおよびオブジェクト・リレーショナル・データをXMLType
ビューとしてラップすることもできます(オプションでXML Schemaに基づく形式にできます)。受信したXML文書からXMLType
記憶域にマップし、登録済のXML Schemaを使用してそのマッピングを指定できます。
Oracle XML DBにおけるDTDのサポート
一般的に、XML Schemaの方が、XML文書構造を定義する方法としてDTDよりも強力です。それでもやはり、Oracle XML DBではある程度までDTDを使用できます。
XML Schemaの場合と同様、DTDは、XML文書の使用可能な構造を定義する一連の規則です。DTDは、SGMLから書式を導出するテキスト・ファイルです。これらは、DTD要素DOCTYPE
を使用するか、DOCTYPE
参照を介して外部ファイルを使用して、XML文書に関連付けることができます。
Oracle XML DBでは、DTDではなくXML Schemaを使用してXMLType
記憶域への構造化マッピングを定義しますが、XMLプロセッサは引き続きDTDにアクセスして解析できます。
ノート:
DTDを使用して、この内部に定義されているXMLエンティティを取得できます。DTDから使用される情報は、エンティティのみです。DTD内の構造や型情報は、Oracle XML DBでは使用されません。
インラインDTDの定義
XMLインスタンス・ドキュメントにインラインDTDの定義が含まれる場合、その定義はドキュメントの解析時に使用されます。すべてのDTDの検証およびエンティティ宣言の処理は、この時点で行われます。ただし、解析後、実体参照は実際の値で置換され、元の実体参照は失われます。
外部DTDの定義
Oracle XML DBでは、Oracle XML DBリポジトリに格納された外部DTDの定義がサポートされます。/public/flights.dtd
など外部DTDの定義を含むXML文書を処理する必要があるアプリケーションでは、最初に、DTDドキュメントが/public/flights.dtd
というパスでOracle XML DBに格納されていることを確認する必要があります。
関連トピック
XMLに関連する静的データ・ディクショナリ・ビュー
複数の静的データ・ディクショナリ・ビューがXMLに関連します。
表1-1に、これらのビューを示します。特定のビューに関する情報を取得するには、SQLコマンドDESCRIBE
を使用します。
DESCRIBE USER_XML_SCHEMAS
表1-1 XMLに関連する静的データ・ディクショナリ・ビュー
スキーマ | 説明 |
---|---|
USER_XML_SCHEMAS |
現行ユーザーが所有する登録済のXML Schema |
ALL_XML_SCHEMAS |
現行ユーザーが使用できる登録済のXML Schema |
DBA_XML_SCHEMAS |
Oracle XML DBに存在する登録済のXML Schema |
USER_XML_TABLES |
現行 |
ALL_XML_TABLES |
現行 |
DBA_XML_TABLES |
Oracle XML DBに存在する |
USER_XML_TAB_COLS |
現行 |
ALL_XML_TAB_COLS |
現行 |
DBA_XML_TAB_COLS |
Oracle XML DBに存在する |
USER_XML_VIEWS |
現行 |
ALL_XML_VIEWS |
現行 |
DBA_XML_VIEWS |
Oracle XML DBに存在する |
USER_XML_VIEW_COLS |
現行 |
ALL_XML_VIEW_COLS |
現行 |
DBA_XML_VIEW_COLS |
Oracle XML DBに存在する |
ビューALL_XML_TABLES
、DBA_XML_TABLES
およびUSER_XML_TABLES
に加えて、ビューALL_OBJECT_TABLES
、DBA_OBJECT_TABLES
およびUSER_OBJECT_TABLES
はオブジェクト・リレーショナル形式で格納されたXMLType
データの表領域、その他の記憶域に関する情報を提供します。
SQL/XML標準関数
Oracle XML DBには、SQL/XML標準で定義されたSQL関数が用意されています。
SQL/XML関数は、次の2つのグループに分類されます。
-
SQL問合せの結果からXMLデータの生成に使用できる関数。このマニュアルでは、このような関数をSQL/XMLパブリッシング関数と呼びます。また、SQL/XML生成関数と呼ばれることもあります。
-
通常のSQL操作の一部としてXMLコンテンツの問合せおよび更新に使用できる関数。このマニュアルでは、このような関数をSQL/XML問合せおよび更新関数と呼びます。
SQL/XML関数を使用すると、XMLコンテンツをSQL文の任意の部分に指定できます。これらの関数では、XQuery式やXPath式を使用してXML構造を検索し、操作対象のノードを識別します。XQuery式やXPath式をSQL文に埋め込む機能によって、XMLアクセスが大幅に簡略化されます。
関連項目:
OracleによるSQL/XML標準のサポートの詳細は、Oracle Database SQL言語リファレンスを参照してください。
Oracle XML DBへのプログラム・アクセス(Java、PL/SQLおよびC)
すべてのOracle XML DB機能には、C、PL/SQLおよびJavaからアクセスできます。
次のような様々な方法で、Oracle XML DBを利用するWebベースのアプリケーションを構築できます。
-
サーブレットおよびJava Server Pages(JSP)を使用する方法。標準的なAPIでは、Java Database Connectivity(JDBC)を使用してデータにアクセスします。
-
Extensible Stylesheet Language (XSL)とXML Server Pages (XSP)を使用する方法。一般的なAPIでは、Document Object Model (DOM) API実装を使用して処理されるXML文書の形式のデータにアクセスします。
Oracle XML DBでは、このようなスタイルのアプリケーション開発をサポートします。これにより、DOM APIのJava、PL/SQLおよびC実装が提供されます。サーブレットに基づくものなど、JDBCを使用するアプリケーションでは、処理対象のデータ構造に関する事前の知識が要求されます。Oracle JDBCドライバを使用すると、XMLType
表および列にアクセスして更新したり、Oracle XML DBリポジトリにアクセスするPL/SQLプロシージャをコールできます。XSLT変換に基づくものなど、DOMを使用するアプリケーションでは、通常、要求されるデータ構造の知識は少なくなります。DOMベースのアプリケーションは文字列名を使用してコンテンツを識別するため、DOMツリーを動的に移動して必要な情報を検索する必要があります。このため、Oracle XML DBは、XMLType
列および表にアクセスおよび更新するために、DOM APIの使用をサポートします。DOM APIへのプログラミングは、JDBCを使用したプログラミングよりも柔軟性がありますが、実行時により多くのリソースを必要とする場合があります。
Oracle XML DBリポジトリ: 概要
Oracle XML DBリポジトリは、ファイル/フォルダ/URL隠喩を使用してXMLデータを処理するためのOracle Databaseのコンポーネントです。
Oracle XML DBリポジトリに含まれるリソースは、フォルダ(ディレクトリ、コンテナ)またはファイルのいずれかです。
リリース(フォルダまたはファイル)には、次の特性があります。
-
パスおよび名前で識別されます。
-
これにはコンテンツ(データ)が含まれ、XMLデータの場合がありますが、そうでなくてもかまいません。
-
コンテンツに加えて、OwnerやCreationDateなどの
システム定義のメタデータ
(プロパティ)のセットを持ちます。Oracle XML DBでは、この情報を使用してリソースを管理します。 -
ユーザー定義のメタデータを持つ場合もあります。これは、システム定義のメタデータと同様に、コンテンツの一部ではないが、コンテンツに関連付けられている情報です。
-
リソースにアクセスできる人およびその目的の操作を決定するアクセス制御リストが関連付けられています。
Oracle XML DBリポジトリは特にXMLコンテンツを取り扱うものですが、リポジトリを使用してXML以外の種類のデータを格納することもできます。リポジトリを使用して、Oracle Databaseに格納されているあらゆるデータにアクセスできます。
リポジトリ内のデータには、次の方法でアクセスできます。
-
SQL – ビュー
RESOURCE_VIEW
およびPATH_VIEW
を使用 -
標準プロトコル – FTP、HTTP(S)およびWebDAV
-
PL/SQL – PL/SQLパッケージ
DBMS_XDB_REPOS
を使用 -
Java – Oracle XML DB Resource API for Javaを使用
Oracle XML DBは、リポジトリ・データにアクセスおよび操作するためのAPIに加えて、IETF WebDAVに基づく、次のリポジトリ・サービス用のAPIも提供します。
-
バージョニング – PL/SQLパッケージ
DBMS_XDB_VERSION
を使用 -
ACLセキュリティ - アクセス制御リスト(ACL)を使用
-
フォルダリング - リポジトリ・パス名を使用
図1-4に、Oracle XML DBリポジトリのアーキテクチャを示します。
関連トピック
Oracle XML DBでサポートされている標準
Oracle XML DBでは、XML、SQL、Java、インターネットなど、すべての主要な標準がサポートされています。
次のようなものがあります:
-
W3CのXML Schema 1.0勧告。XML Schemaの登録、XML Schemaに対する格納されたXMLコンテンツの検証、またはXML Schemaに対するサーバーに格納されたXMLの制約を行うことができます。
-
W3C XQuery 1.0勧告およびW3C XPath 2.0勧告。HTTP(S)リクエストまたはSQLのいずれかから、XQueryおよびXPathを使用してデータベース内に格納されたXMLを検索できます。
-
ANSI/ISO/IEC 9075-14:2011, Information technology—Database languages—SQL—Part 14: XML-Related Specifications (SQL/XML)。
-
W3CのDOMレベル1.0および2.0コア勧告。動的アクセスのために、サーバーに格納されたXMLをXML DOMとして取り出すことができます。
-
Java Database Connectivity(JDBC)API。XMLデータへのJavaアクセスを提供します。
-
W3CのXSL 1.0勧告。XSLTを使用して、サーバーでXML文書を変換できます。
-
プロトコル・サポート。Oracle NetまたはHTTP(S)、FTP、IETF WebDAVなどの標準プロトコルを使用すると、Oracle XML DBに対してXMLデータの格納または取出しができます。
-
Javaサーブレットのバージョン2.2(ただし、サーブレットWARファイル、
web.xml
はサポートされず、現在サポートされているのは、1つのServletContext
および1つのweb-app
のみです。ステートフル・サーブレットはサポートされていません)。 -
Webサービス: SOAP 1.1。SOAPリクエストからサーバーに格納されたXMLにアクセスできます。Webサービスは、WSDLおよびUDDIを使用して、Oracle XML DBおよびOracle Fusion Middlewareにより構築、公開または検索できます。Oracle Databaseアドバンスト・キューイングIDAP (キューイング操作に対するSOAP仕様)を、Oracle Databaseに格納されたXMLに使用できます。
-
W3CのXML Linking Language(Xlink)1.0勧告。XML文書間に様々なタイプのリンクを定義できます。
-
W3CのXML Pointer Language(XPointer)勧告およびXPointer Framework。複数のXML文書またはXMLフラグメントのコンテンツを単一の情報セットにまとめることができます。
関連項目:
-
SQL/XML関数の詳細は、SQL/XML標準関数を参照してください。
-
OracleによるSQL/XML標準のサポートの詳細は、Oracle Database SQL言語リファレンスを参照してください。
-
XLinkおよびXPointerのサポートの詳細は、Oracle XML DBでのXLinkおよびXIncludeの使用を参照してください。
-
プロトコル・サポートの詳細は、プロトコルを使用したリポジトリへのアクセスを参照してください。
-
Javaサーブレットの使用方法の詳細は、JavaでのOracle XML DBアプリケーションのガイドラインを参照してください。
-
SOAPの使用方法の詳細は、Oracle Databaseアドバンスト・キューイングを使用したXMLデータの交換およびOracle Databaseアドバンスト・キューイング・ユーザーズ・ガイドを参照してください
Oracle XML DBの技術サポート
顧客担当者またはコンサルタントによる通常のサポート・チャネルの他に、Oracle DatabaseのXML対応テクノロジの技術サポートが、Oracle Technology Network (OTN)を介して無償で利用できます。
Oracle XML DBの例
Oracle XML DBおよびXMLType
の使用方法について説明する例は、様々なデータベース・スキーマ、サンプルXML文書およびサンプルXML Schemaに基づいています。
関連トピック
OTNでのOracle XML DBの事例およびデモ
Oracle XML DBの例、ホワイト・ペーパー、事例およびデモを表示するには、Oracle Technology Network (OTN)を参照してください。
Oracle XML DBは、OTNで提供されています(OTNのOracle XML DB)。
Oracle XML DBの使用方法に関する総合的なXMLクラスも利用できます。OTNからOracle Universityのリンクを参照してください。
OTNで使用可能なOracle XML DBの詳細な事例は、次のとおりです。
-
ダウンロード可能なOracle XML DBのデモ。この詳細なデモでは、Oracle XML DBの多くの機能の使用方法を示します。このデモの一部は、Oracle XML DBの使用方法の概要でも説明されています。
-
SAX Loaderアプリケーション。このアプリケーションは、データベース外で複数のXML文書を含む大規模ファイルを分割し、一連の個別の文書としてデータベースに挿入する効率的な方法を示します。これは、スタンドアロンでWebベースのアプリケーションとして提供されます。
脚注の説明
脚注1:xsd
は、XML Schema名前空間のスキーマのスキーマで使用される接頭辞のため、xsd:string
など、XML Schemaデータ型に使用される名前空間の接頭辞にもなります。xsd
は、XML Schemaファイルのファイル拡張子としてもしばしば使用されます。