374
Oracle8i アプリケーション開発者ガイド - XML Vol.2 リリース 8.1 2000 11 部品番号 : J02332-01

Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

Oracle8i

アプリケーション開発者ガイド - XML Vol.2

リリース 8.1

2000年 11月

部品番号 : J02332-01

Page 2: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

Oracle8iアプリケーション開発者ガイド - XML Vol.2, リリース 8.1

部品番号 : J02332-01

原本名:Oracle8i Application Developer’s Guide -XML, Volume 2 Release 3 (8.1.7)

原本部品番号:A86015-01

原本著者:Shelley Higgins

原本協力者:Sandeepan Banerjee、Kishore Bhamidipati、Stefan Buchta、Dipto Chakravarty(Artesia Technologies, Inc.)、Robert Dell’immagine、Brajesh Goyal、Robert Hall、Karun K、Stefan Kiritzo、Vishu Krishnamurthy、Murali Krishnaprasad、Olivier LeDiouris、Bryn Llewellen、Roger Medlin(Artesia Technologies, Inc.)、Steve Muench、Visar Nimani、Paul Nock、Rajesh Raheja、Tomas

Saulys、Mark Scardina、Flora Sun、Prabhu Thukkaram、Ari Adler、Omar Alonso、Phil Bates、Mark Bauer、Ravinder Booreddy、Steve Cave、Steve Corbett、Claire Dessaux、Janet Lee、Shailendra Mishra、Andy Page、Rahul Pathak、Padmini Ranganathan、Den Raphaely、Jim Rawles、David Saslav、Chitra Sharma、Ena Singh、Keith Swartz、Kurt Thompson、Melanie Watson、Jon Wilkinson

グラフィック・デザイナ:Valerie Moore

Copyright © 1996, 2000, Oracle Corporation. All rights reserved.

Printed in Japan.

制限付権利の説明

プログラム(ソフトウェアおよびドキュメントを含む)の使用、複製または開示は、オラクル社との契約に記された制約条件に従うものとします。著作権、特許権およびその他の知的財産権に関する法律により保護されています。

当プログラムのリバース・エンジニアリング等は禁止されております。

このドキュメントの情報は、予告なしに変更されることがあります。オラクル社は本ドキュメントの無謬性を保証しません。

* オラクル社とは、Oracle Corporation(米国オラクル)または日本オラクル株式会社(日本オラクル)を指します。

危険な用途への使用について

オラクル社製品は、原子力、航空産業、大量輸送、医療あるいはその他の危険が伴うアプリケーションを用途として開発されておりません。オラクル社製品を上述のようなアプリケーションに使用することについての安全確保は、顧客各位の責任と費用により行ってください。万一かかる用途での使用によりクレームや損害が発生いたしましても、日本オラクル株式会社と開発元である Oracle Corporation(米国オラクル)およびその関連会社は一切責任を負いかねます。 当プログラムを米国国防総省の米国政府機関に提供する際には、『Restricted Rights』と共に提供してください。この場合次の Noticeが適用されます。

Restricted Rights Notice

Programs delivered subject to the DOD FAR Supplement are "commercial computer software" and use, duplication, and disclosure of the Programs, including documentation, shall be subject to the licensing restrictions set forth in the applicable Oracle license agreement. Otherwise, Programs delivered subject to the Federal Acquisition Regulations are "restricted computer software" and use, duplication, and disclosure of the Programs shall be subject to the restrictions in FAR 52.227-19, Commercial Computer Software - Restricted Rights (June, 1987). Oracle Corporation, 500 Oracle Parkway, Redwood City, CA 94065.

このドキュメントに記載されているその他の会社名および製品名は、あくまでその製品および会社を識別する目的にのみ使用されており、それぞれの所有者の商標または登録商標です。

Page 3: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

目次目次目次目次

はじめにはじめにはじめにはじめに ......................................................................................................................................................................... xiii

このマニュアルの内容 ........................................................................................................................................... xiv

対象読者 .................................................................................................................................................................... xv前提知識 .................................................................................................................................................................... xv関連マニュアル ........................................................................................................................................................ xv

機能範囲および可用性 ............................................................................................................................................ xvこのマニュアルの構成 ........................................................................................................................................... xviこのマニュアルの表記規則 ................................................................................................................................... xix

略語 ........................................................................................................................................................................... xix

第第第第 VI部部部部 XDK for Java

16 XML Parser for Javaの使用の使用の使用の使用

XML Parser for Java: 機能機能機能機能 .................................................................................................................................. 16-2

XSL Transformation(XSLT)Processor .................................................................................................. 16-4

XML Namespace(名前空間)のサポート .............................................................................................. 16-4

妥当性検証モードおよび非検証モードのサポート ................................................................................. 16-4

XMLパーサーによるパーサーによるパーサーによるパーサーによる XMLドキュメントのコンテンツおよび構造へのアクセスドキュメントのコンテンツおよび構造へのアクセスドキュメントのコンテンツおよび構造へのアクセスドキュメントのコンテンツおよび構造へのアクセス ................................... 16-5DOM APIおよびおよびおよびおよび SAX API ................................................................................................................................ 16-6

DOM: ツリーベース API ............................................................................................................................. 16-6

SAX: イベントベース API ........................................................................................................................... 16-6

DOM APIおよび SAX API使用時のガイドライン ................................................................................ 16-7XML Parser for Javaのサンプルの実行のサンプルの実行のサンプルの実行のサンプルの実行 ........................................................................................................... 16-8

XML Parser for Java - XMLの例 1: class.xml ........................................................................................... 16-9

XML Parser for Java - XMLの例 2: DTD(employee)の使用 - employee.xml ................................ 16-9

i

Page 4: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

XML Parser for Java - XMLの例 3: DTD(family.dtd)の使用 - family.xml ................................... 16-10

XML Parser for Java - XSLの例 1: XSL(iden.xsl) ............................................................................... 16-10

XML Parser for Java - DTDの例 1: (NSExample) .............................................................................. 16-10

XML Parser for Javaの使用の使用の使用の使用 : DOMParser()クラスクラスクラスクラス ..................................................................................... 16-11

XML Parser for Javaの例 1: XML Parser for Java                  および DOM API(DomSample.java)の使用 .............. 16-13

DOMParser()の例 1に関するコメント .................................................................................................. 16-16XML Parser for Javaの使用の使用の使用の使用 : DOMNamespace()クラスクラスクラスクラス ........................................................................... 16-17

XML Parser for Javaの例 2: URLの解析 - DOMNamespace.java ...................................................... 16-17XML Parser for Javaの使用の使用の使用の使用 : SAXParser()クラスクラスクラスクラス ...................................................................................... 16-21

XML Parser for Javaの例 3: XML Parser for Java                  および SAX API(SAXSample.java)の使用 ................. 16-21

XML Parser for Javaの使用の使用の使用の使用 : XSLT Processor .............................................................................................. 16-26

XML Parser for Javaの例 4: (XSLSample.java) .................................................................................. 16-28

XML Parser for Javaの例 5: DOM APIおよび XSLT Processorの使用 ............................................ 16-31

XSLTの例 5に関するコメント ................................................................................................................ 16-32

XML Parser for Javaの使用の使用の使用の使用 : SAXNamespace()クラスクラスクラスクラス ............................................................................. 16-34

XML Parser for Javaの例 6: (SAXNamespace.java) .......................................................................... 16-34XML Parser for Java: コマンドライン・インタフェースコマンドライン・インタフェースコマンドライン・インタフェースコマンドライン・インタフェース ............................................................................ 16-38

oraxml - Oracle XML Parser ..................................................................................................................... 16-38

oraxsl - Oracle XSL Processor ................................................................................................................... 16-38XSLT Processor用の用の用の用の XML拡張関数拡張関数拡張関数拡張関数 .............................................................................................................. 16-41

XSLT Processorの拡張関数 : 概要 ........................................................................................................... 16-41

静的メソッドと非静的メソッドの比較 ................................................................................................... 16-41

コンストラクタ拡張関数 ........................................................................................................................... 16-42

戻り値拡張関数 ........................................................................................................................................... 16-42

XML Parser for Java - XSLの例 3: 戻り値拡張関数 .............................................................................. 16-42

データ型拡張関数 ....................................................................................................................................... 16-43

XML Parser for Javaの例 4: データ型拡張関数 ..................................................................................... 16-43

FAQ: XML Parser for Java ................................................................................................................................ 16-44

XMLドキュメントと相対位置にある DOCTYPEの DTDファイル ................................................. 16-44

外部 DTDを使用した XMLファイルの検証 ......................................................................................... 16-45

DTDのキャッシュ機能 ............................................................................................................................. 16-45

外部 DTDの認識 ........................................................................................................................................ 16-46

jarファイルからの外部 DTDのロード ................................................................................................... 16-46

DTDを使用した XMLドキュメントの正確性の確認 .......................................................................... 16-47

ii

Page 5: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

XMLドキュメントと分離した DTDオブジェクトの解析 .................................................................. 16-47

DTDに対する解析検証での大文字 /小文字の識別 ............................................................................. 16-48

CDATAセクションからの埋込み XMLフォームの取得 .................................................................... 16-48

DOM APIおよびおよびおよびおよび SAX API .............................................................................................................................. 16-49

DOM APIの使用 ........................................................................................................................................ 16-49

DOMパーサーの動作 ................................................................................................................................ 16-50

後で設定する値を使用したノードの作成 ............................................................................................... 16-50

XMLツリーの全検索 ................................................................................................................................. 16-50

XMLファイルからの要素の取得 ............................................................................................................. 16-51

DTDによる DOMツリーの検証 ............................................................................................................. 16-51

最初の子ノードの要素の値 ....................................................................................................................... 16-51

DOCTYPEノードの作成 ........................................................................................................................... 16-52

XMLNode.selectNodes()メソッド .......................................................................................................... 16-52

SAX APIを使用したデータ値の取得 ...................................................................................................... 16-53

SAXSample.java .......................................................................................................................................... 16-54

DOMParserによる Parserインタフェースの実装 ............................................................................... 16-54

DOMを使用した新しい文書型ノードの作成 ........................................................................................ 16-54

特定のタグの最初の子ノード値の問合せ ............................................................................................... 16-55

変数のデータからの XMLドキュメントの生成 .................................................................................... 16-55

要素タグへのデータの出力 : DOM API .................................................................................................. 16-56

ハッシュ表値のペアからの XMLファイルの構築 ................................................................................ 16-57

XML Parser for Java: Node.appendChild()の wrong_document_err .............................................. 16-57

ノードの作成 : ノード値設定時の DOMException ............................................................................... 16-59検証検証検証検証 ....................................................................................................................................................................... 16-60

DTD: DOCTYPEおよび妥当性検証パーサーの理解 ............................................................................ 16-60

複数スレッドでの XSLProcessor/XSLStylesheetの使用 ..................................................................... 16-60

複数スレッドでドキュメントのクローンを使用する場合の安全性 ................................................... 16-61キャラクタ・セットキャラクタ・セットキャラクタ・セットキャラクタ・セット ........................................................................................................................................... 16-62

XML Parserでの ISO 8859-1エンコーディング .................................................................................... 16-62

UTF-8エンコーディングで NCLOBに格納された XMLの解析 ....................................................... 16-62

XML内の NLSサポート ........................................................................................................................... 16-64

XML Parser for Javaでの UTF-16エンコーディング ........................................................................... 16-64

子としての子としての子としての子としての XMLドキュメントの追加ドキュメントの追加ドキュメントの追加ドキュメントの追加 ............................................................................................................ 16-65

他の要素の子としての XMLドキュメントの追加 ................................................................................ 16-65

XMLドキュメントの子としての XMLドキュメント・フラグメントの追加 .................................. 16-66

iii

Page 6: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

XML Parserのアンインストールのアンインストールのアンインストールのアンインストール .................................................................................................................... 16-68

データベースからの XML Parserの削除 ................................................................................................ 16-68

XML Parser for Java: インストールインストールインストールインストール ................................................................................................................ 16-69

XML Parserがインストールできない場合 ............................................................................................. 16-69XML Parserに関連する一般的な質問に関連する一般的な質問に関連する一般的な質問に関連する一般的な質問 ............................................................................................................ 16-70

XML Parserの動作 ..................................................................................................................................... 16-70

XMLファイルの HTMLファイルへの変換 ........................................................................................... 16-70

XML Schemaに対する検証 ...................................................................................................................... 16-70

XMLドキュメントへのバイナリ・データの挿入 ................................................................................. 16-71

XML Schemaの概要 .................................................................................................................................. 16-71

XML/SQL標準の定義へのオラクル社の参加 ....................................................................................... 16-71

XDKのバージョン番号 ............................................................................................................................. 16-72

XMLドキュメントへの <、>、>=および <=の挿入 .......................................................................... 16-72

XML Namespace(名前空間)および XML Schemaのサポート ....................................................... 16-72

XML Parser for Java バージョン 2以上での JDK 1.1.xの使用 ............................................................ 16-72

ページでの結果のソート ........................................................................................................................... 16-73

XML Parser for Javaの実行に必要な Oracle8i ...................................................................................... 16-73

XMLファイルでのエンコーディングの動的な設定 ............................................................................. 16-73

文字列の解析 ............................................................................................................................................... 16-74

XMLドキュメントの表示 ......................................................................................................................... 16-74

System.out.primtln()および特殊文字 ..................................................................................................... 16-74

文字データからのアンパサンド(&)の取得 ........................................................................................ 16-75

文字列データ型からの XMLの解析 ........................................................................................................ 16-75

XMLドキュメントから文字列へのデータの取得 ................................................................................. 16-75

エスケープの出力の無効化 ....................................................................................................................... 16-76

Oracle 8.0.5での XML Parser for Javaの使用 ....................................................................................... 16-76

複数の XMLドキュメントのデリミタ付け ............................................................................................ 16-76

XMLおよびエンティティ参照 : XML Parser for Java .......................................................................... 16-77

DDLを挿入せずに XMLドキュメントを分割して格納する方法 ...................................................... 16-77

XMLドキュメントのマージ ..................................................................................................................... 16-77

タグの値の取得 ........................................................................................................................................... 16-79

ユーザーへの JAVASYSPRIVの付与 ...................................................................................................... 16-80

他の XMLファイルへの外部 XMLファイルの挿入 : 解析済外部エンティティ .............................. 16-80

OraXSL Parser ............................................................................................................................................. 16-83

iv

Page 7: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

XSLT Processorおよびおよびおよびおよび XSLスタイルシートスタイルシートスタイルシートスタイルシート ................................................................................................ 16-84

XSLでのHTMLエラー ............................................................................................................................. 16-84

<xsl:output method="html"/>のサポート ............................................................................................ 16-85

Netscape 4.0: XSLによる <meta>タグの出力の回避 ........................................................................... 16-86

XSLエラー・メッセージ ........................................................................................................................... 16-87

HTMLの生成 : 「<」文字 ........................................................................................................................ 16-88

oraxslでは正常に行われるが XSLSample.javaでは正常に行われない                          HTMLでの「<」の変換 ..................... 16-88

XSLTの例 .................................................................................................................................................... 16-89

XSLTの機能 ................................................................................................................................................ 16-90

XSLを使用した XMLドキュメントから他の形式への変換 ................................................................ 16-90

XSLに関する情報 ....................................................................................................................................... 16-91

XSL Processorおよび複数の出力 ............................................................................................................ 16-92

XML/XSLに関する推奨書籍 ................................................................................................................... 16-92

XDKのバージョン番号 ............................................................................................................................. 16-93

XMLドキュメントへのバイナリ・データの挿入 ................................................................................. 16-93

HTMLへの XMLの変換 ........................................................................................................................... 16-93

HP/UXプラットフォーム用の XML Developer's Kit .......................................................................... 16-94

17 XML Class Generator for Javaの使用の使用の使用の使用

XML Class Generator for Javaへのアクセスへのアクセスへのアクセスへのアクセス ................................................................................................. 17-2XML Class Generator for Javaの使用の使用の使用の使用 ............................................................................................................. 17-2

XML Class Generator for Javaの例の例の例の例 ................................................................................................................. 17-4入力用入力用入力用入力用 DTDの例の例の例の例 ................................................................................................................................................. 17-4

XML Class Generator for Javaの DTDの例 1: 従業員データ ............................................................... 17-4

XML Class Generator for Javaの例 1: Javaクラスを生成するための DTDの処理 ........................... 17-5

XML Class Generator for Javaの例 2: Javaクラスからの妥当な XMLドキュメントの作成 .......... 17-7

XML Class Generator for Javaの例 3: Javaアプリケーションによって構築される                               XMLドキュメント ........... 17-9

XML Class Generator for Javaのサンプル・ファイル(のサンプル・ファイル(のサンプル・ファイル(のサンプル・ファイル(sample/ディレクトリ内)ディレクトリ内)ディレクトリ内)ディレクトリ内) .............................. 17-10

XML Class Generator for Javaのサンプル(のサンプル(のサンプル(のサンプル(sample/ディレクトリ内)の実行方法ディレクトリ内)の実行方法ディレクトリ内)の実行方法ディレクトリ内)の実行方法 ............................ 17-10

XML Class Generator for Javaの DTDの例 1: DTD入力 - widl.dtd ................................................. 17-11

XML CLass Generator for Javaの XMLの例 1: XML入力 - widl.xml ............................................... 17-12

XML Class Generator for Javaの Javaの例 1: SampleMain.java ........................................................ 17-12

XML Class Generator for Javaの Javaの例 2: TestWidl.java .............................................................. 17-15

v

Page 8: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

XML Class Generator for Javaの XMLの例 2: DTD入力 - widl.out ................................................. 17-16FAQ: Class Generator for Java ........................................................................................................................ 17-17

自動生成 ....................................................................................................................................................... 17-17

XMLから Javaへのオブジェクト・マッピング ................................................................................... 17-17

DTD Class Generator: 機能する子クラス ............................................................................................... 17-18

XML Class Generatorのインストール .................................................................................................... 17-18

XML Class Generator for Javaの役割 ..................................................................................................... 17-19

XMLファイルに基づくオブジェクトの自動インスタンス化 : XML Class Generatorの使用 ....... 17-19

DTDのサポート ......................................................................................................................................... 17-20

XML Class Generatorのサンプルの使用 ................................................................................................ 17-20

Class Generator: 2回以上作成できないルート・オブジェクト ......................................................... 17-20

Class Generator: DOM APIを使用した XMLファイルの新規作成 ................................................... 17-21

18 XSQL Servletの使用の使用の使用の使用

XSQL Servletの入手方法の入手方法の入手方法の入手方法 ................................................................................................................................... 18-2XSQL Servletの機能の機能の機能の機能 ........................................................................................................................................... 18-2

Oracle XSQLページの概要 ......................................................................................................................... 18-2Oracle XSQLページページページページ : 設定および例設定および例設定および例設定および例 ............................................................................................................... 18-10CLASSPATHの適切な設定の適切な設定の適切な設定の適切な設定 ............................................................................................................................. 18-11

接続定義の設定接続定義の設定接続定義の設定接続定義の設定 ................................................................................................................................................... 18-12

XSQLページの共通タグ ........................................................................................................................... 18-13

その他の XSQLページの例 ...................................................................................................................... 18-13

組込み XSQLアクション・ハンドラ要素 .............................................................................................. 18-14XSQLコマンドライン・ユーティリティの使用コマンドライン・ユーティリティの使用コマンドライン・ユーティリティの使用コマンドライン・ユーティリティの使用 ........................................................................................... 18-15XSQL Page Processorの使用方法の使用方法の使用方法の使用方法 ................................................................................................................... 18-16

XSQLの使用方法の概要 ........................................................................................................................... 18-16XSQL Page Processorアーキテクチャアーキテクチャアーキテクチャアーキテクチャ ........................................................................................................... 18-18稼働中の稼働中の稼働中の稼働中の XSQL Page Processor ....................................................................................................................... 18-19

XSQL Servletの例(の例(の例(の例(demo/ディレクトリ内)ディレクトリ内)ディレクトリ内)ディレクトリ内) ............................................................................................... 18-21demo/ディレクトリ内のデータの設定ディレクトリ内のデータの設定ディレクトリ内のデータの設定ディレクトリ内のデータの設定 .......................................................................................................... 18-24XSQL Servletの使用の使用の使用の使用 ......................................................................................................................................... 18-25

要件 ............................................................................................................................................................... 18-25XSQLページの使用ページの使用ページの使用ページの使用 ........................................................................................................................................... 18-25

<xsql:query>を使用した SQL問合せからの動的 XMLドキュメントの生成 .................................. 18-25

XML SQL Utilityの問合せ属性オプションを使用した問合せのカスタマイズ ................................ 18-27

vi

Page 9: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

組込みアクション・ハンドラ組込みアクション・ハンドラ組込みアクション・ハンドラ組込みアクション・ハンドラ ........................................................................................................................... 18-28XSQL Page Processorによるアクション・ハンドラのアクションの処理方法によるアクション・ハンドラのアクションの処理方法によるアクション・ハンドラのアクションの処理方法によるアクション・ハンドラのアクションの処理方法 ....................................... 18-30

XSQLアクション・ハンドラ・エラー ................................................................................................... 18-31

JavaServer Pages(JSP)および XSQLページの使用 .......................................................................... 18-32

<xsql:query>タグの属性の使用 .............................................................................................................. 18-32

XSQL Page Processorのプログラム的な使用のプログラム的な使用のプログラム的な使用のプログラム的な使用 ............................................................................................... 18-33XSQLアクション・ハンドラのカスタマイズアクション・ハンドラのカスタマイズアクション・ハンドラのカスタマイズアクション・ハンドラのカスタマイズ ............................................................................................... 18-34

組込み XSQLアクション・ハンドラ要素およびアクション・ハンドラ・クラス .......................... 18-34XSQL ページでのカスタムページでのカスタムページでのカスタムページでのカスタム XSQLアクション・ハンドラの使用アクション・ハンドラの使用アクション・ハンドラの使用アクション・ハンドラの使用 .............................................................. 18-36

ハンドラのカスタムハンドラのカスタムハンドラのカスタムハンドラのカスタム XSQLアクション・ハンドラ要素の定義アクション・ハンドラ要素の定義アクション・ハンドラ要素の定義アクション・ハンドラ要素の定義 .................................................................. 18-37XSQLConfig.xmlを使用した環境のチューニングを使用した環境のチューニングを使用した環境のチューニングを使用した環境のチューニング ...................................................................................... 18-38

XSQL構成設定の変更 ............................................................................................................................... 18-38

制限事項制限事項制限事項制限事項 ............................................................................................................................................................... 18-38

マルチバイト名を持つ HTTPパラメータ .............................................................................................. 18-38

SQL文内の CURSOR()ファンクション ................................................................................................. 18-38

FAQ: XSQL Servlet ........................................................................................................................................... 18-39

XSQL Servletデモ実行中のNoClassDefFoundError ........................................................................... 18-39

XSQL出力をWMLドキュメントに変換中にDTDを指定する方法 ................................................ 18-40

XSQL Servletの条件文 .............................................................................................................................. 18-40

XSQLファイル内の複数問合せ : ページ・パラメータ ........................................................................ 18-41

XSQL、URN、xsl:スクリプト ................................................................................................................ 18-42

XSQLデモ : 適切な JDKバージョンの使用 ........................................................................................... 18-43

XMLからの表の作成 ................................................................................................................................. 18-43

XSQL Servlet: JServプロセスへのアクセス ........................................................................................... 18-45

Java Webサーバー上での XSQL Servletを介した XSUのコール ..................................................... 18-46

XSQL Servlet: リモート・データベースへの接続 ................................................................................. 18-46

Apache JServ ............................................................................................................................................... 18-48

ドキュメントの作成 ................................................................................................................................... 18-48

XSQL Servletおよび JRun ........................................................................................................................ 18-49

XSQL Servletおよび Oracle8i Lite ........................................................................................................... 18-50

XSQL Servlet内の複数パラメータ .......................................................................................................... 18-50

XSQL Servletおよび Oracle7リリース 7.3 ............................................................................................. 18-50

XSQLと XSL間のパラメータ渡し .......................................................................................................... 18-51

条件問合せ ................................................................................................................................................... 18-52

XSQL Servletおよび挿入または更新 ...................................................................................................... 18-52

XSQL Servletおよび動的 SQL ................................................................................................................. 18-53

vii

Page 10: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

XSQL Servletおよびその他のリレーショナル・データベース .......................................................... 18-53

<XSQL:DML>での OUT変数の非サポート ......................................................................................... 18-54

Java Webサーバーでの XSQL Page Processorの実行 ......................................................................... 18-55

SIDエラーおよび JDKエラー .................................................................................................................. 18-55

カスタム・アクション・ハンドラ要素の使用 : XSQLActionHandlerImpl ...................................... 18-57

XSQL Servlet: アクション・ハンドラ要素(ハンドラ)の記述による                         ブラウザ Cookieの設定 ........................ 18-57

JRun搭載の IIS上での XSQL Servletのインストール ......................................................................... 18-58

XSQLアクション・ハンドラの記述によるHTTP要求パラメータの取得 ....................................... 18-59

HTMLキー値ペアの XMLへの変換 : <xsql:insert-request> .............................................................. 18-59

XSQLファイルからのプロシージャの実行 ........................................................................................... 18-60

XMLを使用したデータベースへの複数フォームのロード ................................................................. 18-61

データベースへの XMLドキュメントの挿入および保存 : 機能のテスト ......................................... 18-61

19 XML Transviewer Beansの使用の使用の使用の使用

Oracle XML Transviewer Beansの入手方法の入手方法の入手方法の入手方法 .................................................................................................. 19-2XDK for Java: XML Transviewer Beansの機能の機能の機能の機能 ............................................................................................ 19-2

データベースへの接続性 ............................................................................................................................. 19-2

XML Transviewer Beans ............................................................................................................................. 19-2XML Transviewer Beansの使用の使用の使用の使用 ....................................................................................................................... 19-4DOM Builder Bean((((oracle.xml.async API)の使用)の使用)の使用)の使用 ................................................................................... 19-4

バックグラウンドでの非同期解析への使用 ............................................................................................. 19-4

DOM Builder Beanによる多くのファイルの高速解析 .......................................................................... 19-4

DOM Builder Beanの使用方法 .................................................................................................................. 19-5XSL Transformer Bean((((oracle.xml.async API)の使用)の使用)の使用)の使用 ............................................................................. 19-8

多くのファイルの変換に最適な XSL Transformer Bean ........................................................................ 19-9

即時応答が可能なユーザー・インタフェースを提供する XSL Transformer Bean ............................ 19-9

XSL Transviewer Beanの使用例 1: 基礎となるデータが変更される場合の HTMLの再生成 ......... 19-9

XSL Transformer Beanの使用方法 .......................................................................................................... 19-10Tree Viewer Bean((((oracle.xml.treeviewer API)の使用)の使用)の使用)の使用 ........................................................................... 19-12XML Source Viewer Bean((((oracle.xml.srcviewer API)の使用)の使用)の使用)の使用 .............................................................. 19-13

XML Source Viewer Beanの使用方法 .................................................................................................... 19-13XMLTransformPanel Bean((((oracle.xml.transviewer API)の使用)の使用)の使用)の使用 ......................................................... 19-17

XMLTransform Panel Beanの機能 .......................................................................................................... 19-17

Transviewer Bean ....................................................................................................................................... 19-18

viii

Page 11: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

提供されているサンプル提供されているサンプル提供されているサンプル提供されているサンプル Transviewer Beanの実行の実行の実行の実行 .................................................................................... 19-19サンプルサンプルサンプルサンプル Transviewer Beanのインストールのインストールのインストールのインストール ................................................................................................ 19-20

サンプルを実行するための環境設定サンプルを実行するための環境設定サンプルを実行するための環境設定サンプルを実行するための環境設定 ............................................................................................................... 19-21

Makeファイルの実行 ................................................................................................................................ 19-21Transviewer Beanの例の例の例の例 1: AsyncTransformSample.java ........................................................................... 19-22

Transviewer Beanの例の例の例の例 2: ViewSample.java ................................................................................................ 19-28Transviewer Beanの例の例の例の例 3: XMLTransformPanelSample.java ................................................................... 19-32

第第第第 VII部部部部 XDK for PL/SQL

20 XML Parser for PL/SQLの使用の使用の使用の使用

XML Parser for PL/SQLの入手方法の入手方法の入手方法の入手方法 ................................................................................................................. 20-2XML Parser for PL/SQLの実行の要件の実行の要件の実行の要件の実行の要件 ............................................................................................................. 20-2XML Parser for PL/SQLの使用(の使用(の使用(の使用(DOMインタフェース)インタフェース)インタフェース)インタフェース) ........................................................................... 20-2

XML Parser for PL/SQL: デフォルト動作 ................................................................................................ 20-5XML Parser for PL/SQLの使用の使用の使用の使用 : XSLT Processor((((DOMインタフェース)インタフェース)インタフェース)インタフェース) ........................................... 20-5

XML Parser for PL/SQL: XSLT Processor - デフォルト動作 ................................................................. 20-8

sample/でのでのでのでの XML Parser for PL/SQLの使用例の使用例の使用例の使用例 ............................................................................................ 20-8

sample/サンプル・プログラムの動作環境の設定 ................................................................................. 20-8

domsampleの実行 ....................................................................................................................................... 20-9

xslsampleの実行 ........................................................................................................................................ 20-10

XML Parser for PL/SQLの例 1: XML - family.xml .............................................................................. 20-12

XML Parser for PL/SQLの例 2: DTD - family.dtd ............................................................................... 20-12

XML Parser for PL/SQLの例 3: XSL - iden.xsl ..................................................................................... 20-12

XML Parser for PL/SQLの例 4: PL/SQL - domsample.sql ................................................................ 20-12

XML Parser for PL/SQLの例 5: PL/SQL - xslsample.sql .................................................................... 20-16FAQ: XML Parser for PL/SQL ......................................................................................................................... 20-19

スレッド・パーサー・エラーの例外 ....................................................................................................... 20-19

Java VMが現在サポートしないエンコーディング「8859_1」 ............................................................ 20-19

PL/SQLでの xmldom.GetNodeValue ................................................................................................... 20-19

CLOB(PL/SQL)XMLに含まれる DTDの解析 ................................................................................ 20-21

XML Parser for PL/SQL ............................................................................................................................ 20-23

セキュリティ : ORA-29532 -ユーザーへの JavaSysPriv権限の付与 ................................................. 20-23

XML Parser for PL/SQLのインストール : Oracle8i JVMオプション ............................................... 20-24

CLOB内の XML ......................................................................................................................................... 20-25

ix

Page 12: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

oracle.xml.parserでのメモリー不足のエラー ....................................................................................... 20-25

Parser for PL/SQL使用時のメモリー要件 ............................................................................................ 20-26

XML Parser for PL/SQL実行時の Oracle8i JVMの必要性 ................................................................. 20-27

DOM APIの使用 ........................................................................................................................................ 20-27

サンプルの使用 ........................................................................................................................................... 20-32

XML Parser for PL/SQL: CLOB内の DTDの解析 ............................................................................... 20-32

ドキュメント解析中のエラー ................................................................................................................... 20-36

PLXML: 指定された URLの解析 ............................................................................................................. 20-37

XML Parserを使用した HTMLの解析 ................................................................................................... 20-37

Oracle 7.3.4: Webブラウザへのデータの送信(PL/SQL) .................................................................. 20-38

Oracle 7.3.4および XML ........................................................................................................................... 20-39

getNodeValue(): DomNode値の取得 ..................................................................................................... 20-39

ノードのすべての子または孫の取出し ................................................................................................... 20-39

A XMLの手引きの手引きの手引きの手引き

XMLの概要の概要の概要の概要 ............................................................................................................................................................. A-2

W3Cの XML勧告 .......................................................................................................................................... A-2XMLの機能の機能の機能の機能 ............................................................................................................................................................. A-4XMLとととと HTMLの違いの違いの違いの違い .......................................................................................................................................... A-5

スタイルシートを使用したスタイルシートを使用したスタイルシートを使用したスタイルシートを使用した XMLの表示の表示の表示の表示 ............................................................................................................ A-8

拡張可能スタイルシート言語(eXtensible Stylesheet Language:XSL) ................................................. A-8

カスケーディング・スタイルシート(Cascading Style Sheet: CSS) ..................................................... A-9拡張性および拡張性および拡張性および拡張性および DTD ................................................................................................................................................ A-9

整形式および妥当な XMLドキュメント ................................................................................................. A-10XMLを使用する理由を使用する理由を使用する理由を使用する理由 .......................................................................................................................................... A-10XML関連のリソース関連のリソース関連のリソース関連のリソース .......................................................................................................................................... A-11

B Oracle XML Parserおよびおよびおよびおよび Class Generatorの言語間比較の言語間比較の言語間比較の言語間比較

Oracle XML Parserの比較の比較の比較の比較 ................................................................................................................................... B-2Oracle XML Class Generatorの比較の比較の比較の比較 ................................................................................................................. B-4

C XDK for Java: 仕様および早見表仕様および早見表仕様および早見表仕様および早見表

XML Parser for Javaの早見表の早見表の早見表の早見表 ............................................................................................................................ C-2

oraxslコマンドライン・インタフェースコマンドライン・インタフェースコマンドライン・インタフェースコマンドライン・インタフェース .......................................................................................................... C-5XML Parser for Javaの入手方法の入手方法の入手方法の入手方法 ........................................................................................................................ C-5

x

Page 13: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

XML Parser for Java V2のインストール ................................................................................................... C-5XML Parser for Java V2の仕様の仕様の仕様の仕様 .......................................................................................................................... C-7

要件 .................................................................................................................................................................. C-7

リリース固有の注意事項 .............................................................................................................................. C-7

標準への準拠 .................................................................................................................................................. C-7

キャラクタ・セット・エンコーディングのサポート .............................................................................. C-8

Oracle XML Parser V1およびおよびおよびおよび Oracle XML Parser V2 ................................................................................... C-9

新しいクラス構造 .......................................................................................................................................... C-9XML Parser for Javaのリリース履歴のリリース履歴のリリース履歴のリリース履歴 .............................................................................................................. C-12

XDK for Java: XML Class Generator for Java ............................................................................................... C-20

XML Class Generator for Javaのインストール ...................................................................................... C-20XML Class Generator for Javaの早見表の早見表の早見表の早見表 ........................................................................................................ C-22

XDK for Java: Transviewer Beanの早見表の早見表の早見表の早見表 .................................................................................................... C-24XDK for Java: XSQL Servlet ............................................................................................................................. C-26

Oracle XSQL Servletのインストール ....................................................................................................... C-26

XSQL Servletのインストール ................................................................................................................... C-26

Windows NT: Web-to-go Serverの使用 .................................................................................................. C-26

環境用のデータベース接続定義の設定 .................................................................................................... C-27

UNIX: XSQL Page実行のためのサーブレット・エンジンの設定 ...................................................... C-28XSQL Servletの仕様の仕様の仕様の仕様 .......................................................................................................................................... C-29

キャラクタ・セットのサポート ................................................................................................................ C-29

XDK for Java: XSQL Servletの早見表の早見表の早見表の早見表 ............................................................................................................ C-30

D XDK for PL/SQL: 仕様および早見表仕様および早見表仕様および早見表仕様および早見表

XML Parser for PL/SQL ....................................................................................................................................... D-2

Oracle XML Parserの機能 ........................................................................................................................... D-2

XML Namespaceのサポート ...................................................................................................................... D-3

検証モードおよび非検証モードのサポート .............................................................................................. D-3

サンプル・コード .......................................................................................................................................... D-3

XML Parser for PL/SQLのディレクトリ構造 .......................................................................................... D-3

DOM APIおよび SAX API .......................................................................................................................... D-4XML Parser for PL/SQLの仕様の仕様の仕様の仕様 .......................................................................................................................... D-5

XML Parser for PL/SQL: Parser() API ............................................................................................................... D-7XML Parser for PL/SQL: XSLT Processor API ................................................................................................ D-8XML Parser for PL/SQL: W3C DOM API - 型型型型 ................................................................................................. D-9

xi

Page 14: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

XML Parser for PL/SQL: W3C DOM API - ノード・メソッド、ノード型ノード・メソッド、ノード型ノード・メソッド、ノード型ノード・メソッド、ノード型                      および                      および                      および                      および DOMインタフェース型インタフェース型インタフェース型インタフェース型 ............................... D-10

ノード・メソッド ........................................................................................................................................ D-10

DOMノード型 ............................................................................................................................................. D-11

DOMException型 ....................................................................................................................................... D-12

DOMインタフェース型 ............................................................................................................................. D-12

E XML SQL Utility((((XSU)の仕様および早見表)の仕様および早見表)の仕様および早見表)の仕様および早見表

XML SQL Utilityのインストールのインストールのインストールのインストール ...................................................................................................................... E-2

XSU配布パッケージの内容 .......................................................................................................................... E-2

XML SQL Utilityのインストール : 手順 ..................................................................................................... E-2XML SQL Utility実行の要件実行の要件実行の要件実行の要件 .............................................................................................................................. E-3

XSUの要件 ...................................................................................................................................................... E-3

XSUファイルの解凍 ...................................................................................................................................... E-3

XSU環境の正しい設定 : クライアント側 ................................................................................................... E-4

XSU環境の正しい設定 : サーバー側 ........................................................................................................... E-5XML SQL Utility((((XSU))))for Javaの早見表の早見表の早見表の早見表 .................................................................................................... E-6XML SQL Utility((((XSU))))for PL/SQLの早見表の早見表の早見表の早見表 ........................................................................................... E-11

用語集用語集用語集用語集

索引索引索引索引

xii

Page 15: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

はじめにはじめにはじめにはじめに

この章の内容は次のとおりです。

� このマニュアルの内容

� 対象読者

� 前提知識

� 関連マニュアル

� 機能範囲および可用性

� このマニュアルの構成

� このマニュアルの表記規則

� 略語

このマニュアルに記載されているオラクル製品は、一部日本では出荷されていないものを含みます。ご利用の際は、必ず事前に日本オラクルまたは販売代理店にご確認ください。

また、C/C++に関しましては、日本において対象外の機能です。

xiii

Page 16: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

このマニュアルの内容このマニュアルの内容このマニュアルの内容このマニュアルの内容このマニュアルでは、Oracleの XMLテクノロジ、およびその実装方法を説明します。また、例やサンプル・アプリケーションなども記載しています。例は、次のような主な機能(主な使用目的)に基づいて示されます。

� コンテンツまたはドキュメントの管理

� データ交換および B2B

Oracleの XMLコンポーネントを使用して、データベース・ベースのアプリケーションを設計する場合の主な基準を説明した後、アプリケーション推奨使用例を示し、XMLコンポーネントの併用方法について説明します。

例およびサンプル・コード例およびサンプル・コード例およびサンプル・コード例およびサンプル・コードこのマニュアルで示す多くの例では、$ORACLE_HOME/xdk/java/demo/または$ORACLE_HOME/xdk/java/demo/sample/ディレクトリ、あるいは$ORCLE_HOME/rdbm/demoディレクトリにあるソフトウェアを例として使用しています。

第 12章「B2B XMLアプリケーション : ステップ・バイ・ステップ」では、1つのアプリケーションについて詳細に説明しています。このアプリケーションでは、XMLデータの変換およびカスタマイズされた表示アプリケーションの実装方法について説明します。

事前作成済事前作成済事前作成済事前作成済 XMLまたは生成されるまたは生成されるまたは生成されるまたは生成される XMLXMLドキュメントは、次のいずれかの方法で処理されます。

� LOBに格納された事前作成済 XML

� 表内の関連列にマップされた XMLタグを持つ、リレーショナル表に格納されて生成される XML

XMLコンポーネントコンポーネントコンポーネントコンポーネントOracleの XMLコンポーネントは、次の 2つの言語での実装が可能です。

� Java: XDK for Javaおよび XML SQL Utility for Javaを使用します。

� PL/SQL: XDK for PL/SQLおよび XML SQL Utility for PL/SQLを使用します。

各 XMLコンポーネントの使用方法については、第 4章「XML SQL Utility(XSU)の使用」、第 VI部および第 VII部を参照してください。

xiv

Page 17: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

対象読者対象読者対象読者対象読者このマニュアルは、Oracle8iで XMLアプリケーションを構築する開発者を対象にしています。

前提知識前提知識前提知識前提知識このマニュアルを読むには、XMLおよび XSLを理解しているのが理想ですが、必須ではありません。参考のため、付録に XMLの手引きを記載しています。

このマニュアル内の多くの例は、Java、PL/SQLまたは SQLで記述されています。そのため、このうちの 1つ以上の言語の実用経験があることを前提としています。

関連マニュアル関連マニュアル関連マニュアル関連マニュアル詳細は、次のドキュメントを参照してください。

� Oracle JDeveloperオンライン・ヘルプ

� 『Oracle8iアプリケーション開発者ガイド 基礎編』

� 『Oracle8iアプリケーション開発者ガイド アドバンスト・キューイング』

� 『Oracle8i Integration Server概要』

� 『Oracle8i XMLリファレンス・ガイド』

機能範囲および可用性機能範囲および可用性機能範囲および可用性機能範囲および可用性このマニュアルの情報は、Oracleの XMLテクノロジ・コンポーネントの現在の情報を表します。これらの情報は常に更新されています。

xv

Page 18: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

このマニュアルの構成このマニュアルの構成このマニュアルの構成このマニュアルの構成このマニュアルは 7部編成で、20の章および 5つの付録で構成されています。索引および用語集も含まれます。

第第第第 I部部部部 : Oracleのののの XMLの概要の概要の概要の概要� 第 1章「Oracleの XMLの概要」では、Oracleの XMLコンポーネント、XMLアプリケー

ションの構築に使用するツールおよび interMedia Textについて説明します。また、Oracle8iで XMLアプリケーションを構築する場合の問題についても説明します。この章には、このマニュアルに記載されている情報へのロードマップが含まれます。

� 第 2章「Oracleの XMLを使用したビジネス・ソリューション」では、Oracleの XMLコンポーネントを、典型的なコンテンツ /ドキュメント管理アプリケーションおよび B2Bメッセージ機能アプリケーションに使用する方法を簡単に説明します。

� 第 3章「Oracleの XMLコンポーネントおよび一般的な FAQ」では、Oracleの XMLコンポーネント、XML Developer's Kitおよび XML SQL Utilityの概要を説明します。また、Javaおよび PL/SQL用に XMLドキュメントを生成するための様々な方法の概要も示します。さらに、Oracleの XMLに関する一般的な質問を含む、FAQも示します。

第第第第 II部部部部 : XML SQL Utility((((XSU))))� 第 4章「XML SQL Utility(XSU)の使用」では、Javaおよび PL/SQL用の XML SQL

Utilityを使用した XMLドキュメントの生成および格納方法、データベース内の XMLドキュメントに対する INSERT/UPDATE/DELETEの実行方法、コマンドライン・ツールの使用方法、および列に要素をマップする方法について説明します。この章に記載されている例は、$ORACLE_HOME/rdbms/demo/xsuにあります。この章では、FAQも示します。

第第第第 III部部部部 : XMLを使用したコンテンツおよびドキュメントの管理を使用したコンテンツおよびドキュメントの管理を使用したコンテンツおよびドキュメントの管理を使用したコンテンツおよびドキュメントの管理� 第 5章「interMedia Textを使用した XMLドキュメントのデータ検索および取得」では、

interMedia Text、CONTAINS演算子の使用方法、interMedia Text索引の作成方法、問合せの作成方法およびテキスト問合せ式について説明します。また、提供されたPL/SQLパッケージ CTX_DDLおよび XML_SECTION_GROUPとその属性、AUTO_SECTION_GROUPの基本についても説明します。この章では、FAQも示します。

� 第 6章「XMLによるコンテンツのカスタマイズ : Dynamic Newsアプリケーション」では、Dynamic Newsアプリケーション、アプリケーションで使用される 3つのサーブレット、XML SQL Utilityを使用して Oracle8iのニュース・データにアクセスする方法、およびユーザーの 3つのカスタマイズ・レベル(静的、一部動的および動的)について説明します。また、データ表示のカスタマイズ方法も説明します。

xvi

Page 19: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

� 第 7章「XMLによるデータ表示のパーソナライズ : Portal-to-Go」では、Portal-to-Goコンポーネント、これを使用してブラウザのWebサイトのコンテンツを抽出する方法、抽出したコンテンツを XMLに変換する方法、およびこのコンテンツを変換して様々なデバイスで表示する方法について説明します。

� 第 8章「XMLおよび XSQLを使用した表示のカスタマイズ : Flight Finder」では、Flight Finderというアプリケーションがデータベースとの間で XMLを生成する方法、およびXSQL Servletを使用して問合せを処理し、結果を XMLとして出力する方法について説明します。また、Flight Finderがスタイルシートを使用して XMLデータのフォーマットを変換する方法についても説明します。

第第第第 IV部部部部 : XMLを使用したデータ交換を使用したデータ交換を使用したデータ交換を使用したデータ交換� 第 9章「Oracle Advanced Queuingを使用した XMLデータの交換」では、アドバンスト・キューイング(AQ)の概念、および AQと XMLが互いにどのように補足し合うかについて説明します。また、Java AQおよび PL/SQL AQの例も示します。FAQも示します。

� 第 10章「B2B: iProcurementによる XMLを使用した複数のカタログ製品のユーザー提供」では、iProcurementの主なコンポーネント、および iProcurementが受け取ったサード・パーティ製カタログを XML Parser for Javaを使用して解析および確認し、カタログのコンテンツを管理する方法について説明します。iProcurementで使用されるDTDについても説明します。統合されたカタログは、データベースから抽出され、ロードされた後、PL/SQLプログラムを使用して Oracle Applicationsに送信されます。

� 第 11章「XMLメッセージ機能を使用した Phone Number Portability」では、Phone Number Portabilityアプリケーションの概要を説明し、XMLメッセージ機能をiMessage Studio、Event Managerおよび Adapterで使用する方法について説明します。

第第第第 V部部部部 : Oracleのののの XMLを使用したアプリケーション開発を使用したアプリケーション開発を使用したアプリケーション開発を使用したアプリケーション開発� 第 12章「B2B XMLアプリケーション : ステップ・バイ・ステップ」では、XSQL Servletを使用して B2B XMLアプリケーションを構築および実装する方法、および様々なユーザーのデバイスに基づいて XMLメッセージを変換する方法について説明します。このアプリケーションは、単純な AQメッセージ機能も使用します。

� 第 13章「JDeveloperを使用した Oracleの XMLアプリケーションの作成」では、JDeveloperを使用して XMLアプリケーションを構築する方法、JDeveloperでの XSQL Servletの使用方法、および JDeveloperを使用してモバイル・アプリケーションを構築する手順について説明します。FAQも示します。

� 第 14章「Internet File System(iFS)を使用した XMLアプリケーションの作成」では、Internet File System(iFS)および XMLの機能について説明します。

� 第 15章「XMLを使用したリッチ・メディア管理用の n層アーキテクチャの構築 : ArtesiaTech」では、ビデオ・クリップなどのデジタル資産を管理するための、複数層の高度な XMLメッセージ機能アーキテクチャについて説明します。XMLのオブジェクト指向のメッセージ機能について説明し、XMLと IDLを比較します。

xvii

Page 20: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

第第第第 VI部部部部 : XDK for Java� 第 16章「XML Parser for Javaの使用」では、XML Parser for Javaおよび XSLT

Processorの使用方法を説明します。ソフトウェアに含まれる例もリストしています。FAQも示します。

� 第 17章「XML Class Generator for Javaの使用」では、XML Class Generator for Javaの使用方法を説明します。ソフトウェアに含まれる例もリストしています。FAQも示します。

� 第 18章「XSQL Servletの使用」では、XSQL Servletの使用方法を説明します。図を使用して、XSQL Page Processorの動作についても示します。FAQも示します。

� 第 19章「XML Transviewer Beansの使用」では、XML Transviewer Beansおよびその使用方法を説明します。ソフトウェアに含まれる例もリストしています。

第第第第 VII部部部部 : XDK for PL/SQL� 第 20章「XML Parser for PL/SQLの使用」では、XML Parser for PL/SQLおよび XSLT

Processorの使用方法を説明します。ソフトウェアに含まれる例もリストしています。FAQも示します。

付録 A「XMLの手引き」では、XMLに関する基本情報および背景情報を説明します。

付録 B「Oracle XML Parserおよび Class Generatorの言語間比較」では、実装言語に基づいて、Oracle XML Parserと Class Generatorを比較します。

付録 C「XDK for Java: 仕様および早見表」では、XDK for Javaコンポーネントの仕様を説明します。いくつかのトップレベル・クラスおよびメソッドもリストしています。

付録 D「XDK for PL/SQL: 仕様および早見表」では、XDK for PL/SQLコンポーネントの仕様を説明します。いくつかのトップレベル・ファンクションもリストしています。

付録 E「XML SQL Utility(XSU)の仕様および早見表」では、XML SQL Utility(XSU)for Javaおよび XSU for PL/SQLの仕様を説明します。いくつかのトップレベル・メソッドおよびファンクションもリストしています。

xviii

Page 21: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

このマニュアルの表記規則このマニュアルの表記規則このマニュアルの表記規則このマニュアルの表記規則このマニュアルで使用する表記規則は次のとおりです。

本文本文本文本文このマニュアルの本文は、次の表記規則に従って記述されています。

略語略語略語略語次に、このマニュアルで使用される略語を示します。これらの用語の詳細は、「用語集」を参照してください。

大文字 大文字は、SQLキーワード、ファイル名および初期化パラメータを示します。

イタリック イタリックは、SQL文のパラメータを示します。

太字太字太字太字 太字は、用語の定義を示します。

固定幅フォント 固定幅フォントは、メソッド、ファンクションおよびその他の実行可能ファイルの名前を示します。

頭字語頭字語頭字語頭字語 説明説明説明説明

API アプリケーション・プログラム・インタフェース

B2B Business-to-Businessアプリケーション

B2C Business-to-Consumerアプリケーション

BC4J Business Components for Java

CDF チャネル定義形式(Channel Definition Format)

インターネット上のチャネルに関する情報を交換する方法を提供する。

CSS カスケーディング・スタイルシート

DTD 文書型定義(Document Type Definition)

DOM ドキュメント・オブジェクト・モデル

EDI 電子データ交換

HTML ハイパー・テキスト・マークアップ言語

OAG オープン・アプリケーション・グループ

OAI Oracle Applications Integrator

OE Oracle Exchange

xix

Page 22: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

PDA パーソナル・デジタル・アシスタント

RDBMS リレーショナル・データベース管理システム

RDF リソース記述フレームワーク

SAX Simple API for XML

SGML 標準一般化マークアップ言語(Standard Generalized Mark Up Language)

W3C World Wide Web Consortium

WBEM Webベース・エンタープライズ管理

XDK Oracle XML Developer's Kit

XLink XMLリンク言語

XML 拡張可能マークアップ言語

XMLQuery W3Cが取り組む XMLドキュメントに対する問合せ言語の指定

XML Schema W3Cの仕様

XML Schema Processorは、XMLドキュメントおよびデータの妥当性を自動的に保証する。

XPath XMLドキュメントを操作するためのデータ・モデルおよび文法を指定したW3Cの勧告

XPointer XMLドキュメント内の個別のエンティティまたはフラグメントの識別を指定したW3Cの勧告

XSL (W3C)拡張可能スタイルシート言語(eXtensible Stylesheet Language)

XSLスタイルシート クラスのインスタンスの変換方法を記述して、XMLドキュメントのクラス表示を指定する。

XSLT XSL Transformation

頭字語頭字語頭字語頭字語 説明説明説明説明

xx

Page 23: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

第第第第 VI部部部部

XDK for Java

第 VI部では、XML Developer’s Kit(XDK)for Javaの入手方法および使用方法について説明します。

第 VI部に含まれる章は、次のとおりです。

� 第 16章「XML Parser for Javaの使用」

� 第 17章「XML Class Generator for Javaの使用」

� 第 18章「XSQL Servletの使用」

� 第 19章「XML Transviewer Beansの使用」

次の章の最後には、FAQが含まれます。

� 「XML Parser for Javaの使用」

� 「XSQL Servletの使用」

Page 24: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora
Page 25: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

XML Parser for Ja

16

XML Parser for Javaの使用の使用の使用の使用

この章の内容は次のとおりです。

� XML Parser for Java: 機能

� XMLパーサーによる XMLドキュメントのコンテンツおよび構造へのアクセス

� DOM APIおよび SAX API

� XML Parser for Javaのサンプルの実行

� XML Parser for Javaの使用 : DOMParser()クラス

� XML Parser for Javaの使用 : DOMNamespace()クラス

� XML Parser for Javaの使用 : SAXParser()クラス

� XML Parser for Javaの使用 : XSLT Processor

� XML Parser for Javaの使用 : SAXNamespace()クラス

� XML Parser for Java: コマンドライン・インタフェース

� XSLT Processor用の XML拡張関数

� FAQ: XML Parser for Java

vaの使用 16-1

Page 26: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

XML Parser for Java: 機能

XML Parser for Java: 機能機能機能機能オラクル社では、XML Parser for Javaおよび XML Parser for PL/SQLを提供しています。これらの各 XMLパーサーはスタンドアロンの XMLコンポーネントであり、アプリケーションで処理できるように、XMLドキュメント(または DTD)を解析します。ライブラリおよびコマンドラインは、次の標準および機能をサポートしています。

� DOM(ドキュメント・オブジェクト・モデル)サポートは、W3Cの DOM 1.0勧告に準拠しています。これらの APIによってアプリケーションは、XMLドキュメントをツリー構造としてメモリー内でアクセスし操作できます。このインタフェースは、エディタなどのアプリケーションで使用されます。

� SAX(Simple API for XML)のサポートは、SAX 1.0仕様に準拠しています。これらのAPIによってアプリケーションは、イベント駆動モデルを使用して XMLドキュメントを処理できます。

� XML Namespace 1.0もサポートされています。これによって名前の競合が回避され、再利用性が向上し、アプリケーション統合が容易になります。

� Oracle8i、iAS(Internet Application Server)および OIS(Oracle Integration Server)上で実行できます。

その他にも次の機能があります。

� 妥当性検証および非検証モード

� 致命的なエラーが発生するまでの組込みエラー・リカバリ

� ドキュメント作成のための DOM拡張 API

XMLパーサーは、すべての Oracleのプラットフォームで使用できます。

図 16-1を参照してください。XML Parser for Javaが、XMLドキュメントを読み込みます。DOMまたは SAXパーサー・インタフェースが、XMLドキュメントを解析します。解析済XMLは、アプリケーションに転送され、さらに処理が行われます。

また、スタイルシートを使用する場合、DOMまたは SAXインタフェースは XSLコマンドを解析および出力します。これらは、解析済 XMLとともに XSLT Processorに送信されます。XSLT Processorでは、選択したスタイルシートが適用され、変換済の(新しい)XMLドキュメントが出力されます。

参照参照参照参照 : 付録 C「XDK for Java: 仕様および早見表」も参照してください。

16-2 Oracle8iアプリケーション開発者ガイド - XML Vol.2

Page 27: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

XML Parser for Java: 機能

図図図図 16-1 Oracle XML Parser

DOMおよび SAX APIについては、「DOM APIおよび SAX API」を参照してください。

XMLドキュメントの解析に使用されるクラスおよびメソッドは、次の図を参照してください。

� 図 16-4「XML Parser for Java: DOMParser()」

� 図 16-5「SAXParser()クラスの使用」

XSLT Processorがスタイルシートの適用に使用するクラスおよびメソッドについては、次の図を参照してください。

� 図 16-6「XSLProcessorクラス・プロセス」

DOM / SAXパーサー�

XML Parser for Java

元のXML

ドキュメント�

変換済XML

ドキュメント�

解析済XML

解析済XSL命令��

XSLスタイルシート�

XSLT Processor

XML Parser for Javaの使用 16-3

Page 28: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

XML Parser for Java: 機能

XSL Transformation((((XSLT))))ProcessorXML Parserには、XSLスタイルシートを使用して XMLデータを変換するための XSL Transformation(XSLT)Processorが統合されています。XSLT Processorを使用すると、XMLドキュメントを XMLから XML、XMLから HTML、またはほぼすべてのテキストベース形式の文書に変換できます。図 16-1を参照してください。

XSLT Processorは、次の標準および機能をサポートします。

� W3Cの XSL Transform 1.0勧告提案に準拠しています。

� W3Cの XPath 1.0勧告提案に準拠しています。

� XML Parserに統合され、パフォーマンスおよび拡張性を向上します。

� Javaおよび PL/SQL用のライブラリおよびコマンドラインで使用可能です。

XML Namespace(名前空間)のサポート(名前空間)のサポート(名前空間)のサポート(名前空間)のサポートXML Parser for Javaは XML Namespace(名前空間)もサポートしています。XML Namespaceは、XMLドキュメント内にある要素タイプ(タグ)または属性間の名前の競合を解決または回避するメカニズムです。

このメカニズムは、汎用の名前空間での要素型および属性名を提供します。このマニュアルでは、これらについては詳しく説明していません。

このようなタグは、次のようなユニフォーム・リソース識別子(URI)によって修飾されます。

<oracle:EMP xmlns:oracle="http://www.oracle.com/xml"/>

たとえば、名前空間を使用して、オラクル社の <EMP>データ要素を、他社の <EMP>データ要素の定義と区別して識別できます。

これによってアプリケーションは、処理する要素および属性をより簡単に識別できます。XML Parser for Javaは、汎用の要素型と属性名、およびローカルの非修飾の要素型と属性名を識別および解析できるようにすることで、名前空間をサポートします。

妥当性検証モードおよび非検証モードのサポート妥当性検証モードおよび非検証モードのサポート妥当性検証モードおよび非検証モードのサポート妥当性検証モードおよび非検証モードのサポートXML Parser for Javaは、妥当性検証モードまたは非検証モードで XMLを解析できます。

� 非検証モード非検証モード非検証モード非検証モード : XML Parser for Javaは、XMLが整形式であることを確認し、データをDOM APIが操作できるオブジェクトのツリーに解析します。

� 検証モード検証モード検証モード検証モード : XML Parser for Javaは、XMLが整形式であることを確認し、その XMLデータを DTD(存在する場合)に対して妥当であるかを検証します。

妥当性検証には、属性名および要素タグが正当であるかどうか、ネストした要素が適切な場所にあるかどうかなどの確認も含まれます。

参照参照参照参照 : 『Oracle8i XMLリファレンス・ガイド』も参照してください。

16-4 Oracle8iアプリケーション開発者ガイド - XML Vol.2

Page 29: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

XMLパーサーによる XMLドキュメントのコンテンツおよび構造へのアクセス

XMLパーサーによるパーサーによるパーサーによるパーサーによる XMLドキュメントのコンテンツおよび構ドキュメントのコンテンツおよび構ドキュメントのコンテンツおよび構ドキュメントのコンテンツおよび構造へのアクセス造へのアクセス造へのアクセス造へのアクセス

XMLドキュメントは、エンティティというデータの格納単位で構成され、各エンティティには解析対象または解析対象外のデータが含まれます。解析対象データは文字で構成され、中にはドキュメント内の文字データを形成したり、タグを形成するものもあります。

タグ付けは、ドキュメントのデータ格納のレイアウトおよび論理構造の記述をエンコーディングします。XMLは、データ格納レイアウトおよび論理構造を制約するメカニズムを提供します。

XMLドキュメントの読込み、およびそのドキュメントのコンテンツと構造へのアクセスには、XML Processorというソフトウェア・モジュールが使用されます。XML Processorは、アプリケーションという他のモジュールのかわりに作業を行います。

この解析プロセスを、図 16-2に示します。

図図図図 16-2 XMLの解析プロセスの解析プロセスの解析プロセスの解析プロセス

解析対象�データ�

データの格納単位(エンティティ)�

解析対象外�データ�

文字�

文字データ� タグ付け�

XMLドキュメント�

XML Parser(Processor)

コンテンツおよび構造の読込み��

XML Parser for Javaの使用 16-5

Page 30: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

DOM APIおよび SAX API

DOM APIおよびおよびおよびおよび SAX APIXML APIは、通常、次のカテゴリのいずれかに分類されます。

� イベントベース

� ツリーベース

図 16-3を参照してください。次の簡単な XMLドキュメントについて考えてみます。

<?xml version="1.0"?> <EMPLIST> <EMP> <ENAME>MARY</ENAME> </EMP> <EMP> <ENAME>SCOTT</ENAME> </EMP> </EMPLIST>

DOM: ツリーベースツリーベースツリーベースツリーベース APIDOMなどのツリーベース APIは、XMLドキュメントのメモリー内にツリーを構築します。この APIは、アプリケーションがツリーを操作および処理するためのクラスおよびメソッドを提供します。

通常、DOMインタフェースは、要素の再順序付け、要素および属性の追加および削除、要素の改名などの XMLツリーの構造的な操作に最も有効です。たとえば、前述の XMLドキュメントでは、DOMは図 16-3に示すようなメモリー内のツリー構造を作成します。

SAX: イベントベースイベントベースイベントベースイベントベース APISAXなどのイベントベース APIは、コールバックを使用してアプリケーションに解析イベントを通知します。アプリケーションは、カスタマイズしたイベント・ハンドラによってこれらのイベントを処理します。イベントには、要素および文字の開始および終了も含まれます。

イベントベース APIは、ツリーベース APIとは異なり、通常 XMLドキュメントのメモリー内ツリー表現を構築しません。したがって、SAXは、XMLツリーの操作が必要でない検索操作などのアプリケーションに有効です。

前述の XMLドキュメントは、図 16-3に示すような一連の線形のイベント群になります。

16-6 Oracle8iアプリケーション開発者ガイド - XML Vol.2

Page 31: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

DOM APIおよび SAX API

図図図図 16-3 DOM(ツリーベース)(ツリーベース)(ツリーベース)(ツリーベース)APIとととと SAX(イベントベース)(イベントベース)(イベントベース)(イベントベース)APIの比較の比較の比較の比較

DOM APIおよびおよびおよびおよび SAX API使用時のガイドライン使用時のガイドライン使用時のガイドライン使用時のガイドラインこの項では、DOM APIおよび SAX API使用時の基準について説明します。

DOM:� DOMインタフェースは、ランダム・アクセスが必要なときに使用します。

� DOMは、より多くのメモリーを消費します。

� DOMは、変換を行う場合も適しています。

� ツリーを反復したり、ドキュメント・ツリー全体を移動する場合も、DOMは適しています。

� DOMインタフェースを使用する場合、(パイプ・サイズを小さくするために)XML内の要素より多くの属性を使用できるかどうかを確認してください。

SAX:SAXインタフェースは、データが(I/Pストリームを使用して)ストリーム形式で受信される場合に使用します。

<EMP> <EMP>

<EMPLIST>

<ENAME> <ENAME>

MARY SCOTT

DOMインタフェースは、�XMLドキュメントに基づいて�ツリー構造を作成する�XMLドキュメント�

<?XML Version = "1.0"?> <EMPLIST> <EMP> <ENAME>MARY</ENAME> </EMP> <EMP> <ENAME>SCOTT</ENAME> </EMP> </EMPLIST>

SAXインタフェースは、�XMLドキュメントに基づいて�一連の線形のイベントを作成する�

XMLツリーを変更しない、検索や取出しのなどのアプリケーションに有効�

要素の再順序付け、追加、�削除などの変更を行うアプリケーションに有効�

start document

start element: EMPLISTstart element: EMPstart element: ENAMEcharacters: MARYend element: EMP

start element: EMPstart element: ENAMEcharacters: SCOTTend element: EMP

end element: EMPLISTend document

XML Parser for Javaの使用 16-7

Page 32: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

XML Parser for Javaのサンプルの実行

XML Parser for Javaのサンプルの実行のサンプルの実行のサンプルの実行のサンプルの実行表 16-1に、XDK for Javaソフトウェアに付属している XML Parser for Javaのサンプルを示します。これらのサンプルは、/sampleサブディレクトリにあります。これらのサンプルは、Oracle XML Parser for Javaの使用方法を示しています。

サンプル・プログラムを実行するには、次の手順に従います。

1. 「make」を使用して .classファイルを生成します。

2. xmlparserv2.jarおよび現在のディレクトリを CLASSPATHに追加します。

3. DOM/SAX APIのサンプル・プログラムを次のとおり実行します。

java <classname> <sample xml file>

4. XSL APIのサンプル・プログラムを次のとおり実行します。

java XSLSample <sample xsl file> <sample xml file>

class.xml、empl.xml、family.xmlなどのいくつかの XMLファイルがテスト用に提供されています。

XSLスタイルシート iden.xslは、提供された次の XMLファイルの変換の確認に使用できます。

� class.xml

� NSExample.xml

� family.xml

� empl.xml

表表表表 16-1 XML Parser for Javaのサンプルのサンプルのサンプルのサンプル

サンプル・ファイル名サンプル・ファイル名サンプル・ファイル名サンプル・ファイル名 説明説明説明説明

DOMSample.java DOM APIを使用するサンプル・アプリケーション

SAXSample.java SAX APIを使用するサンプル・アプリケーション

XSLSample.java XSL APIを使用するサンプル・アプリケーション

DOMNamespace.java DOM APIに名前空間による拡張を使用するサンプル・アプリケーション

SAXNamespace.java SAX APIに名前空間による拡張を使用するサンプル・アプリケーション

16-8 Oracle8iアプリケーション開発者ガイド - XML Vol.2

Page 33: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

XML Parser for Javaのサンプルの実行

XML Parser for Java - XMLの例の例の例の例 1: class.xml<?xml version = "1.0"?><!DOCTYPE course [<!ELEMENT course (Name, Dept, Instructor, Student)><!ELEMENT Name (#PCDATA)><!ELEMENT Dept (#PCDATA)><!ELEMENT Instructor (Name)><!ELEMENT Student (Name*)>]><course><Name>Calculus</Name><Dept>Math</Dept><Instructor><Name>Jim Green</Name></Instructor><Student><Name>Jack</Name><Name>Mary</Name><Name>Paul</Name></Student></course>

XML Parser for Java - XMLの例の例の例の例 2: DTD((((employee)の使用)の使用)の使用)の使用 - employee.xml<?xml version="1.0"?><!DOCTYPE employee [<!ELEMENT employee (Name, Dept, Title)><!ELEMENT Name (#PCDATA)><!ELEMENT Dept (#PCDATA)><!ELEMENT Title (#PCDATA)>]><employee><Name>John Goodman</Name><Dept>Manufacturing</Dept><Title>Supervisor</Title></employee>

XML Parser for Javaの使用 16-9

Page 34: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

XML Parser for Javaのサンプルの実行

XML Parser for Java - XMLの例の例の例の例 3: DTD((((family.dtd)の使用)の使用)の使用)の使用 - family.xml<?xml version="1.0" standalone="no"?><!DOCTYPE family SYSTEM "family.dtd"><family lastname="Smith"><member memberid="m1">Sarah</member><member memberid="m2">Bob</member><member memberid="m3" mom="m1" dad="m2">Joanne</member><member memberid="m4" mom="m1" dad="m2">Jim</member></family>

DTD: family.dtd<!ELEMENT family (member*)><!ATTLIST family lastname CDATA #REQUIRED><!ELEMENT member (#PCDATA)><!ATTLIST member memberid ID #REQUIRED><!ATTLIST member dad IDREF #IMPLIED><!ATTLIST member mom IDREF #IMPLIED>

XML Parser for Java - XSLの例の例の例の例 1: XSL((((iden.xsl))))<?xml version="1.0"?> <!-- 認証変換 --><xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> <xsl:template match="*|@*|comment()|processing-instruction()|text()"> <xsl:copy> <xsl:apply-templates select="*|@*|comment()|processing-instruction()|text()"/> </xsl:copy> </xsl:template> </xsl:stylesheet>

XML Parser for Java - DTDの例の例の例の例 1: ((((NSExample))))<!DOCTYPE doc [<!ELEMENT doc (child*)><!ATTLIST doc xmlns:nsprefix CDATA #IMPLIED><!ATTLIST doc xmlns CDATA #IMPLIED><!ATTLIST doc nsprefix:a1 CDATA #IMPLIED><!ELEMENT child (#PCDATA)>]><doc nsprefix:a1 = "v1" xmlns="http://www.w3c.org" xmlns:nsprefix="http://www.oracle.com"><child>This element inherits the default Namespace of doc.</child></doc>

16-10 Oracle8iアプリケーション開発者ガイド - XML Vol.2

Page 35: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

XML Parser for Javaの使用 : DOMParser()クラス

XML Parser for Javaの使用の使用の使用の使用 : DOMParser()クラスクラスクラスクラスDOMベースのパーサー・アプリケーションを作成するには、次のクラスを実装します。

� DOMNamespaceクラス

� DOMParser()クラス

� XMLParser()クラス

図 16-4に、DOMParser()クラスを使用したコードを作成する際に必要な主な手順を示します。

� DTDを入力しない場合を入力しない場合を入力しない場合を入力しない場合

1. 新しい DOMParser()クラスがコールされます。このクラスに適用可能なプロパティは次のとおりです。

* setValidateMode

* setPreserveWhiteSpace

* setDocType

* setBaseURL

* showWarnings

2. このプロパティは、XML入力とともに XMLParser.parse()に適用されます。XML入力は、ファイル、文字列バッファまたは URLのいずれかになります。

3. XMLParser.getDocument()メソッドが実装されます。

4. オプションで、次のような他の DOMメソッドを適用できます。

* print()

* DOMNamespace()メソッド

5. XML Parser for Javaが、DOMツリーとして XML(解析済)ドキュメントを出力します。

6. オプションで、XML Parser for Javaが DOMツリーの構築を終了した後で、DOMParser.reset()を使用してすべての内部データ構造を削除します。

� DTDを入力する場合を入力する場合を入力する場合を入力する場合

1. 新しい DOMParser()クラスがコールされます。このクラスに適用可能なプロパティは次のとおりです。

* setValidateMode

* setPreserveWhiteSpace

* setDocType

XML Parser for Javaの使用 16-11

Page 36: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

XML Parser for Javaの使用 : DOMParser()クラス

* setBaseURL

* showWarnings

2. このクラスが、DTD入力とともに XMLParser.parseDTD()メソッドに適用されます。

3. XMLParser.getDocumentType()メソッドが、DTDの結果オブジェクトを新しいDOMParser()に返します。このプロセスは、DTDの適用が終了するまで続きます。

DOMParser()クラスの使用方法を次の例に示します。

� 「XML Parser for Javaの例 1: XML Parser for Javaおよび DOM API(DomSample.java)の使用」

図図図図 16-4 XML Parser for Java: DOMParser()

ファイル、�文字列バッファ�またはURLの

XML入力�

XMLParser.Parse()

XMLParser.getDocument

DTD入力�

XMLParser.ParseDTD()

使用可能なプロパティ:· setValidationMode [デフォルト= not]· setPreserveWhiteSpace [デフォルト= not]· setDocType [入力タイプがDTDの場合]· setBaseURL [外部ソースから読み込む� 場合、他の場所をベース� 場所に参照する]· showWarnings

他のDOMメソッドを�適用する�

DOMドキュメント�

通常はノード・�クラス・メソッド�

出力するには、�出力メソッドを使用�する。 これは非標準DOMメソッドである。�

XMLParser.getDocument-

Type()

DTDオブジェクト�

DOMParser.reset()

新しい�DOMParser()

XML Parser for Java: DOM Parser()

16-12 Oracle8iアプリケーション開発者ガイド - XML Vol.2

Page 37: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

XML Parser for Javaの使用 : DOMParser()クラス

XML Parser for Javaの例の例の例の例 1: XML Parser for Javaおよびおよびおよびおよび DOM API((((DomSample.java)の使用)の使用)の使用)の使用

// このファイルでは、XML Parser for JavaおよびDOM APIの簡単な使用方法を示します。// アプリケーションに提供されたXMLファイルが解析されます。// ドキュメント内の要素および属性は出力されます。// この例では、パーサー・オプションの設定方法を示します。//

import java.io.*;import java.net.*;import org.w3c.dom.*;import org.w3c.dom.Node;

import oracle.xml.parser.v2.*;

public class DOMSample{ static public void main(String[] argv) { try { if (argv.length != 1) { // XMLファイルの名前を指定する必要があります。 System.err.println("Usage: java DOMSample filename"); System.exit(1); }

// パーサーのインスタンスを取得します。 DOMParser parser = new DOMParser();

// ファイル名からURLを生成します。 URL url = createURL(argv[0]);

// 様々なパーサー・オプションを設定します。妥当性検証をオン、 // 警告を表示、エラー・ストリームをstderrに設定します。 parser.setErrorStream(System.err); parser.setValidationMode(true); parser.showWarnings(true);

// ドキュメントを解析します。 parser.parse(url);

// ドキュメントを取得します。 XMLDocument doc = parser.getDocument();

XML Parser for Javaの使用 16-13

Page 38: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

XML Parser for Javaの使用 : DOMParser()クラス

// ドキュメント要素を出力します。 System.out.print("The elements are: "); printElements(doc);

// ドキュメント要素の属性を出力します。 System.out.println("The attributes of each element are: "); printElementAttributes(doc); parser.reset(); } catch (Exception e) { System.out.println(e.toString()); } }

static void printElements(Document doc) { NodeList nl = doc.getElementsByTagName("*"); Node n; for (int i=0; i<nl.getLength(); i++) { n = nl.item(i); System.out.print(n.getNodeName() + " "); }

System.out.println(); }

static void printElementAttributes(Document doc) { NodeList nl = doc.getElementsByTagName("*"); Element e; Node n; NamedNodeMap nnm;

String attrname; String attrval; int i, len;

len = nl.getLength(); for (int j=0; j < len; j++) { e = (Element)nl.item(j); System.out.println(e.getTagName() + ":"); nnm = e.getAttributes(); if (nnm != null)

16-14 Oracle8iアプリケーション開発者ガイド - XML Vol.2

Page 39: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

XML Parser for Javaの使用 : DOMParser()クラス

{ for (i=0; i<nnm.getLength(); i++) { n = nnm.item(i); attrname = n.getNodeName(); attrval = n.getNodeValue(); System.out.print(" " + attrname + " = " + attrval); } } System.out.println(); } }

static URL createURL(String fileName) { URL url = null; try { url = new URL(fileName); } catch (MalformedURLException ex) { File f = new File(fileName); try { String path = f.getAbsolutePath(); String fs = System.getProperty("file.separator"); if (fs.length() == 1) { char sep = fs.charAt(0); if (sep != '/') path = path.replace(sep, '/'); if (path.charAt(0) != '/') path = '/' + path; } path = "file://" + path; url = new URL(path); } catch (MalformedURLException e) { System.out.println("Cannot create url for: " + fileName); System.exit(0); } } return url; }}

XML Parser for Javaの使用 16-15

Page 40: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

XML Parser for Javaの使用 : DOMParser()クラス

DOMParser()の例の例の例の例 1に関するコメントに関するコメントに関するコメントに関するコメント図 16-4を参照してください。次に、例 1に関するコメントを示します。

1. 新しい DOMParser()を宣言します。例 1には次の行があります。

DOMParser parser = new DOMParser();

このクラスでは、いくつかのプロパティが使用できます。プロパティの指定例を示します。

parser.setErrorStream(System.err);parser.setValidationMode(true);parser.showWarnings(true);

2. XML入力は、次のように宣言される URLです。

URL url = createURL(argv[0])

3. XMLドキュメントは、URLとして入力されます。このドキュメントは、次のとおりparser.parse()を使用して解析されます。

parser.parse(url);

4. ドキュメントが取得されます。

XMLDocument doc = parser.getDocument();

5. 他の DOMメソッドを適用します。この例では、次のメソッドを適用できます。

� ノード・クラス・メソッド

* getElementsByTagName()

* getAttributes()

* getNodeName()

* getNodeValue()

� createURL()メソッドは、文字列名を URLに変換します。

6. DOMツリーが作成されると、解析プロセス中に作成されたすべてのデータ構造を削除するために parser.reset()がコールされます。

7. アプリケーションで追加の処理を行うために、DOMツリー(解析済 XML)としてドキュメントが生成されます。

注意注意注意注意 : 例 1では、DTD入力は示されていません。

16-16 Oracle8iアプリケーション開発者ガイド - XML Vol.2

Page 41: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

XML Parser for Javaの使用 : DOMNamespace()クラス

XML Parser for Javaの使用の使用の使用の使用 : DOMNamespace()クラスクラスクラスクラス図 16-4に、DOMインタフェースを使用した XMLドキュメントの解析の主なプロセスを示します。DOMNamespace()メソッドは、パーサー・プロセスの「他の DOMメソッドを適用する」と書かれた楕円の位置で適用されます。DOMNamespace()の使用方法を次の例に示します。

� 「XML Parser for Javaの例 2: URLの解析 - DOMNamespace.java」

XML Parser for Javaの例の例の例の例 2: URLの解析の解析の解析の解析 - DOMNamespace.java// このファイルでは、XML Parser for JavaおよびDOM APIへの名前空間の拡張の簡単な// 使用方法を示します。// アプリケーションに提供されたXMLファイルは解析され、// ドキュメント内の要素および属性が出力されます。//

import java.io.*;import java.net.*;

import oracle.xml.parser.v2.DOMParser;

import org.w3c.dom.*;import org.w3c.dom.Node;

// 名前空間をサポートするためのDOMインタフェースへの拡張です。import oracle.xml.parser.v2.XMLElement;import oracle.xml.parser.v2.XMLAttr;

public class DOMNamespace{ static public void main(String[] argv) { try { if (argv.length != 1) { // XMLファイルの名前を指定する必要があります。 System.err.println("Usage: DOMNamespace filename"); System.exit(1); }

// パーサーのインスタンスを取得します。 Class cls = Class.forName("oracle.xml.parser.v2.DOMParser"); DOMParser parser = (DOMParser)cls.newInstance();

XML Parser for Javaの使用 16-17

Page 42: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

XML Parser for Javaの使用 : DOMNamespace()クラス

// ファイル名からURLを生成します。 URL url = createURL(argv[0]);

// ドキュメントを解析します。 parser.parse(url);

// ドキュメントを取得します。 Document doc = parser.getDocument();

// ドキュメント要素を出力します。 printElements(doc);

// ドキュメント要素の属性を出力します。 System.out.println("The attributes of each element are: "); printElementAttributes(doc); } catch (Exception e) { System.out.println(e.toString()); } }

static void printElements(Document doc) { NodeList nl = doc.getElementsByTagName("*"); XMLElement nsElement;

String qName; String localName; String nsName; String expName; System.out.println("The elements are: "); for (int i=0; i < nl.getLength(); i++) { nsElement = (XMLElement)nl.item(i);

// NSNameインタフェースにメソッドgetQualifiedName()、getLocalName()、 // getNamespace()およびgetExpandedName()を使用して、Namespace // 情報を取得します。 qName = nsElement.getQualifiedName(); System.out.println(" ELEMENT Qualified Name:" + qName); localName = nsElement.getLocalName(); System.out.println(" ELEMENT Local Name :" + localName);

16-18 Oracle8iアプリケーション開発者ガイド - XML Vol.2

Page 43: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

XML Parser for Javaの使用 : DOMNamespace()クラス

nsName = nsElement.getNamespace(); System.out.println(" ELEMENT Namespace :" + nsName); expName = nsElement.getExpandedName(); System.out.println(" ELEMENT Expanded Name :" + expName); } System.out.println(); }

static void printElementAttributes(Document doc) { NodeList nl = doc.getElementsByTagName("*"); Element e; XMLAttr nsAttr; String attrname; String attrval; String attrqname;

NamedNodeMap nnm; int i, len; len = nl.getLength(); for (int j=0; j < len; j++) { e = (Element) nl.item(j); System.out.println(e.getTagName() + ":"); nnm = e.getAttributes();

if (nnm != null) { for (i=0; i < nnm.getLength(); i++) { nsAttr = (XMLAttr) nnm.item(i);

// NSNameインタフェースにメソッドgetQualifiedName()、 // getLocalName()、getNamespace()およびgetExpandedName() // を使用して、Namespace情報を取得します。

attrname = nsAttr.getExpandedName(); attrqname = nsAttr.getQualifiedName(); attrval = nsAttr.getNodeValue();

System.out.println(" " + attrqname + "(" + attrname + ")" + " = " + attrval); } } System.out.println();

XML Parser for Javaの使用 16-19

Page 44: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

XML Parser for Javaの使用 : DOMNamespace()クラス

} }

static URL createURL(String fileName) { URL url = null; try { url = new URL(fileName); } catch (MalformedURLException ex) { File f = new File(fileName); try { String path = f.getAbsolutePath(); String fs = System.getProperty("file.separator"); if (fs.length() == 1) { char sep = fs.charAt(0); if (sep != '/') path = path.replace(sep, '/'); if (path.charAt(0) != '/') path = '/' + path; } path = "file://" + path; url = new URL(path); } catch (MalformedURLException e) { System.out.println("Cannot create url for: " + fileName); System.exit(0); } } return url; }}

注意注意注意注意 : 例 2では、DTD入力は示されていません。

16-20 Oracle8iアプリケーション開発者ガイド - XML Vol.2

Page 45: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

XML Parser for Javaの使用 : SAXParser()クラス

XML Parser for Javaの使用の使用の使用の使用 : SAXParser()クラスクラスクラスクラス図 16-5に、SAXParser()クラスを使用したコードを作成する際に必要な主な手順を示します。SAXParser()クラスの実装について、次の例に示します。

� 「XML Parser for Javaの例 3: XML Parser for Javaおよび SAX API(SAXSample.java)の使用」

図図図図 16-5 SAXParser()クラスの使用クラスの使用クラスの使用クラスの使用

XML Parser for Javaの例の例の例の例 3: XML Parser for Javaおよびおよびおよびおよび SAX API((((SAXSample.java)の使用)の使用)の使用)の使用

// このファイルでは、XML Parser for JavaおよびSAX APIの簡単な使用方法を示します。// アプリケーションに提供されたXMLファイルは解析され、このファイルの内容に// 関する情報のいくつかが出力されます。

import org.xml.sax.*;import java.io.*;import java.net.*;import oracle.xml.parser.v2.*;

public class SAXSample extends HandlerBase{

ファイル、�文字列バッファ�またはURLの

XML入力�

新しいSAXParser()

.parse()

コールバック・�メソッド�

メソッド· setValidationMode· setPreserveWhiteSpace· setDocType· setBaseURL· setDocumentHandler· setDTDHandler· setEntity Resolver· setErrorHandler

XML Parser for Java: SAXParser()

XML Parser for Javaの使用 16-21

Page 46: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

XML Parser for Javaの使用 : SAXParser()クラス

// ロケータを格納します。 Locator locator;

static public void main(String[] argv) { try { if (argv.length != 1) { // XMLファイルの名前を指定する必要があります。 System.err.println("Usage: SAXSample filename"); System.exit(1); } // (1) パーサー用に新しいハンドラを作成します。 SAXSample sample = new SAXSample();

// (2) パーサーのインスタンスを取得します。 Parser parser = new SAXParser();

// (3) ハンドラをパーサーに設定します。 parser.setDocumentHandler(sample); parser.setEntityResolver(sample); parser.setDTDHandler(sample); parser.setErrorHandler(sample); // (4) ファイルをURLに変換して解析します。 try { parser.parse(fileToURL(new File(argv[0])).toString()); } catch (SAXParseException e) { System.out.println(e.getMessage()); } catch (SAXException e) { System.out.println(e.getMessage()); } } catch (Exception e) { System.out.println(e.toString()); } }

static URL fileToURL(File file) {

16-22 Oracle8iアプリケーション開発者ガイド - XML Vol.2

Page 47: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

XML Parser for Javaの使用 : SAXParser()クラス

String path = file.getAbsolutePath(); String fSep = System.getProperty("file.separator"); if (fSep != null && fSep.length() == 1) path = path.replace(fSep.charAt(0), '/'); if (path.length() > 0 && path.charAt(0) != '/') path = '/' + path; try { return new URL("file", null, path); } catch (java.net.MalformedURLException e) { throw new Error("unexpected MalformedURLException"); } }

////////////////////////////////////////////////////////////////////// // (5) DocumentHandlerインタフェースの実装例 //////////////////////////////////////////////////////////////////////

public void setDocumentLocator (Locator locator) { System.out.println("SetDocumentLocator:"); this.locator = locator; }

public void startDocument() { System.out.println("StartDocument"); }

public void endDocument() throws SAXException { System.out.println("EndDocument"); } public void startElement(String name, AttributeList atts) throws SAXException { System.out.println("StartElement:"+name); for (int i=0;i<atts.getLength();i++) { String aname = atts.getName(i); String type = atts.getType(i); String value = atts.getValue(i);

System.out.println(" "+aname+"("+type+")"+"="+value);

XML Parser for Javaの使用 16-23

Page 48: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

XML Parser for Javaの使用 : SAXParser()クラス

} }

public void endElement(String name) throws SAXException { System.out.println("EndElement:"+name); }

public void characters(char[] cbuf, int start, int len) { System.out.print("Characters:"); System.out.println(new String(cbuf,start,len)); }

public void ignorableWhitespace(char[] cbuf, int start, int len) { System.out.println("IgnorableWhiteSpace"); } public void processingInstruction(String target, String data) throws SAXException { System.out.println("ProcessingInstruction:"+target+" "+data); } ////////////////////////////////////////////////////////////////////// // (6) EntityResolverインタフェースの実装例 //////////////////////////////////////////////////////////////////////

public InputSource resolveEntity (String publicId, String systemId) throws SAXException { System.out.println("ResolveEntity:"+publicId+" "+systemId); System.out.println("Locator:"+locator.getPublicId()+" "+ locator.getSystemId()+ " "+locator.getLineNumber()+" "+locator.getColumnNumber()); return null; }

////////////////////////////////////////////////////////////////////// // (7) DTDHandlerインタフェースの実装例 //////////////////////////////////////////////////////////////////////

public void notationDecl (String name, String publicId, String systemId) {

16-24 Oracle8iアプリケーション開発者ガイド - XML Vol.2

Page 49: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

XML Parser for Javaの使用 : SAXParser()クラス

System.out.println("NotationDecl:"+name+" "+publicId+" "+systemId); }

public void unparsedEntityDecl (String name, String publicId, String systemId, String notationName) { System.out.println("UnparsedEntityDecl:"+name + " "+publicId+" "+ systemId+" "+notationName); }

////////////////////////////////////////////////////////////////////// // (8) ErrorHandlerインタフェースの実装例 //////////////////////////////////////////////////////////////////////

public void warning (SAXParseException e) throws SAXException { System.out.println("Warning:"+e.getMessage()); }

public void error (SAXParseException e) throws SAXException { throw new SAXException(e.getMessage()); }

public void fatalError (SAXParseException e) throws SAXException { System.out.println("Fatal error"); throw new SAXException(e.getMessage()); }}

XML Parser for Javaの使用 16-25

Page 50: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

XML Parser for Javaの使用 : XSLT Processor

XML Parser for Javaの使用の使用の使用の使用 : XSLT ProcessorXML Parser for Javaに XSLT Processorを実装するには、XSLProcessorクラスを使用します。

図 16-6に、XSLProcessorクラスが使用する全体的なプロセスを示します。

1. 新しい XSLProcessor()クラスを宣言すると、XSLTプロセスが開始します。

2. 2つの入力があります。

� スタイルシートスタイルシートスタイルシートスタイルシート : 最初に、スタイルシートが構築されます。新しいXSLStylesheet()クラスは、次の使用可能なメソッドのいずれかを使用して宣言されます。

* removeParam()

* resetParam()

* setParam()

� XML入力入力入力入力 : これは、特定のスタイルシートに対して 1~ N回繰り返すことができます。これによって、「スタイルシートを処理する」の手順が行われます。

どちらの入力も、次の 4つのタイプのいずれかになります。

� 入力ストリーム

� URL

� XMLドキュメント

� リーダー

3. 次のようにして、スタイルシートの結果オブジェクトおよび XML入力が「スタイルシートを処理する」の手順に送られます。

XSLProcessor.processXSL(xslstylesheet, xml instance)

4. XSLProcessor.processXSL()メソッドが、選択されたスタイルシートを使用して、XML入力を 1~ N回処理します。

5. XSLProcessor.processXSL()が、出力ストリームか DOMドキュメントのいずれかを出力します。

XML Parser for Javaの XSLT Processorを、次の例に示します。

� 「XML Parser for Javaの例 4: (XSLSample.java)」

� 「XML Parser for Javaの例 5: DOM APIおよび XSLT Processorの使用」

16-26 Oracle8iアプリケーション開発者ガイド - XML Vol.2

Page 51: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

XML Parser for Javaの使用 : XSLT Processor

図図図図 16-6 XSLProcessorクラス・プロセスクラス・プロセスクラス・プロセスクラス・プロセス

スタイルシート�を構築する: new XSLStylesheet()

XMLを1~N回�入力する�

スタイルシート�を入力する�

スタイルシート・�オブジェクト�

出力ストリーム(ストリームに�書き込む)�

DOMドキュメント�

XSLProcessor.processXSL(xslstylesheet, xml instance)

メソッド· removeParam()· resetParam()· setParam()

· 入力ストリーム· URL· XMLドキュメント· リーダー

スタイルシートを�処理する�

新しいXSLProcessor()

1~N回�

XML Parser for Java: XSLProcessorクラス

XML Parser for Javaの使用 16-27

Page 52: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

XML Parser for Javaの使用 : XSLT Processor

XML Parser for Javaの例の例の例の例 4: ((((XSLSample.java))))/** * このファイルでは、Oracle XML ParserのXSL処理機能の簡単な使用方法を * 示します。入力XMLドキュメントは、特定の入力スタイルシートを使用して * 変換されます。 */

import org.w3c.dom.*;import java.util.*;import java.io.*;import java.net.*;import oracle.xml.parser.v2.*;

public class XSLSample { /** * スタイルシートを使用してXMLドキュメントを変換します。 * @param argsには、入力XMLおよびXMLドキュメントを指定します。 */ public static void main (String args[]) throws Exception { DOMParser parser; XMLDocument xml, xsldoc, out; URL xslURL; URL xmlURL;

try {

if (args.length != 2) { // XSLおよびXMLファイルの名前を指定する必要があります。 System.err.println("Usage: java XSLSample xslfile xmlfile"); System.exit(1); }

// XSLおよびXMLドキュメントを解析します。 parser = new DOMParser(); parser.setPreserveWhitespace(true);

// 入力XSLファイルを解析します。 xslURL = createURL(args[0]); parser.parse(xslURL); xsldoc = parser.getDocument();

16-28 Oracle8iアプリケーション開発者ガイド - XML Vol.2

Page 53: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

XML Parser for Javaの使用 : XSLT Processor

// 入力XMLファイルを解析します。 xmlURL = createURL(args[1]); parser.parse(xmlURL); xml = parser.getDocument();

// スタイルシートをインスタンス化します。 XSLStylesheet xsl = new XSLStylesheet(xsldoc, xslURL); XSLProcessor processor = new XSLProcessor();

// 発生する可能性がある警告を表示します。 processor.showWarnings(true); processor.setErrorStream(System.err);

// XSLを処理します。 DocumentFragment result = processor.processXSL(xsl, xml);

// 結果を保持する出力ドキュメントを作成します。 out = new XMLDocument();

// 出力ドキュメント用にダミー・ドキュメント要素を作成します。 Element root = out.createElement("root"); out.appendChild(root);

// 変換済ツリーをダミー・ドキュメント要素に追加します。 root.appendChild(result); // 変換済ドキュメントを出力します。 out.print(System.out); } catch (Exception e) { e.printStackTrace(); } }

// ファイル名からURLを作成するためのヘルパー・メソッドです。 static URL createURL(String fileName) { URL url = null; try { url = new URL(fileName); } catch (MalformedURLException ex) { File f = new File(fileName); try

XML Parser for Javaの使用 16-29

Page 54: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

XML Parser for Javaの使用 : XSLT Processor

{ String path = f.getAbsolutePath(); // このコードは、getAbsolutePathの戻り値に // 一貫性がないために、WindowsプラットフォームでURLを // 有効にするために必要です。 String fs = System.getProperty("file.separator"); if (fs.length() == 1) { char sep = fs.charAt(0); if (sep != '/') path = path.replace(sep, '/'); if (path.charAt(0) != '/') path = '/' + path; } path = "file://" + path; url = new URL(path); } catch (MalformedURLException e) { System.out.println("Cannot create url for: " + fileName); System.exit(0); } } return url; }}

16-30 Oracle8iアプリケーション開発者ガイド - XML Vol.2

Page 55: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

XML Parser for Javaの使用 : XSLT Processor

XML Parser for Javaの例の例の例の例 5: DOM APIおよびおよびおよびおよび XSLT Processorの使用の使用の使用の使用このコード例は、/sampleサブディレクトリにはありません。次の Javaコードでは、XML Parser for Javaを使用して次のタスクを実行します。

� XMLドキュメントを解析します。

� DOM APIを使用して XMLデータを操作します。

� XSLT Processorを使用してデータを変換します。

import org.w3c.dom.*;import java.util.*;import java.io.*;import java.net.*;import oracle.xml.parser.v2.*;public class XSLTransform { public static void main (String args[]) throws Exception { DOMParser parser; XMLDocument xml, xsldoc, out;

URL xslURL; URL xmlURL;

try { if (args.length != 2) { // XSLおよびXMLファイルの名前を指定します。 System.err.println("Usage: java XSLTransform xslfile xmlfile"); System.exit(1); }

// XSLおよびXMLドキュメントを解析します。 parser = new DOMParser(); parser.setPreserveWhitespace(true); xslURL = createURL(args[0]); parser.parse(xslURL); xsldoc = parser.getDocument(); xmlURL = createURL(args[1]); parser.parse(xmlURL); xml = parser.getDocument();

// スタイルシートをインスタンス化します。

XML Parser for Javaの使用 16-31

Page 56: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

XML Parser for Javaの使用 : XSLT Processor

XSLStylesheet xsl = new XSLStylesheet(xsldoc, xslURL);

XSLProcessor processor = new XSLProcessor();

// 発生する可能性があるすべての警告を表示します。 processor.showWarnings(true); processor.setErrorStream(System.err);

// XSLを処理します。 DocumentFragment result = processor.processXSL(xsl, xml);

// 結果を保持する出力ドキュメントを作成します。 out = new XMLDocument();

// 出力ドキュメント用にダミー・ドキュメント要素を作成します。 Element root = out.createElement("root"); out.appendChild(root);

// 変換済ツリーをダミー・ドキュメント要素に追加します。 root.appendChild(result); // 変換済ドキュメントを出力します。 out.print(System.out); } catch (Exception e) { e.printStackTrace(); } }}

XSLTの例の例の例の例 5に関するコメントに関するコメントに関するコメントに関するコメント図 16-4および図 16-6を参照してください。次に、例 5に関するコメントを示します。

1. プログラムでは、次の 2つの URLドキュメントが入力されています。

� URL xmlURL

� URL xslURL

2. 2つのドキュメントを解析し、空白を保存するためのプロパティを設定します。

parser = new DOMParser();parser.setPreserveWhitespace(true);

3. XSLおよび XMLドキュメントを取得します。

16-32 Oracle8iアプリケーション開発者ガイド - XML Vol.2

Page 57: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

XML Parser for Javaの使用 : XSLT Processor

xslURL = createURL(args[0]);parser.parse(xslURL);xsldoc = parser.getDocument();

xmlURL = createURL(args[1]);xmlURL = createURL(args[1]);parser.parse(xmlURL);xml = parser.getDocument();

4. 新しい XSLStylesheetおよび XSLProcessorクラスを初期化します。

XSLStylesheet xsl = new XSLStylesheet(xsldoc, xslURL);

XSLProcessor processor = new XSLProcessor(); processor.setErrorStream(System.err);

5. スタイルシートを処理します。

DocumentFragment result = processor.processXSL(xsl, xml);

6. DOMとして解析済 XMLドキュメントを出力します。

out = new XMLDocument();Element root = out.createElement("root");out.appendChild(root);root.appendChild(result);

XML Parser for Javaの使用 16-33

Page 58: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

XML Parser for Javaの使用 : SAXNamespace()クラス

XML Parser for Javaの使用の使用の使用の使用 : SAXNamespace()クラスクラスクラスクラスSAXNamespace()クラスの使用方法を、次の例に示します。

� 「XML Parser for Javaの例 6: (SAXNamespace.java)」

XML Parser for Javaの例の例の例の例 6: ((((SAXNamespace.java))))// このファイルでは、SAX APIへの名前空間の拡張の簡単な// 使用方法を示します。

import org.xml.sax.*;import java.io.*;import java.net.URL;import java.net.MalformedURLException;

// 名前空間をサポートするためのSAXインタフェースへの拡張です。import oracle.xml.parser.v2.XMLDocumentHandler;import oracle.xml.parser.v2.DefaultXMLDocumentHandler;import oracle.xml.parser.v2.NSName;import oracle.xml.parser.v2.SAXAttrList;

import oracle.xml.parser.v2.SAXParser;

public class SAXNamespace { static public void main(String[] args) { String fileName;

//ファイル名を取得します。 if (args.length == 0) { System.err.println("No file Specified!!!"); System.err.println("USAGE: java SAXNamespace <filename>"); return; } else { fileName = args[0]; } try { // パーサーのハンドラを作成します。 // Namespaceのサポート用に、org.xml.sax.DocumentHandlerではなく // XMLDocumentHandlerインタフェースを使用します。 XMLDocumentHandler xmlDocHandler = new XMLDocumentHandlerImpl();

// すべての他のインタフェースには、ハンドラ・ベースが提供する

16-34 Oracle8iアプリケーション開発者ガイド - XML Vol.2

Page 59: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

XML Parser for Javaの使用 : SAXNamespace()クラス

// デフォルトを使用します。 HandlerBase defHandler = new HandlerBase();

// パーサーのインスタンスを取得します。 SAXParser parser = new SAXParser(); // パーサーにハンドラを設定します。 // DocumentHandlerをXMLDocumentHandlerに設定します。 parser.setDocumentHandler(xmlDocHandler);

// 他のハンドラをdefHandlerに設定します。 parser.setErrorHandler(defHandler); parser.setEntityResolver(defHandler); parser.setDTDHandler(defHandler); try { parser.parse(fileToURL(new File(fileName)).toString()); } catch (SAXParseException e) { System.err.println(args[0] + ": " + e.getMessage()); } catch (SAXException e) { System.err.println(args[0] + ": " + e.getMessage()); } } catch (Exception e) { System.err.println(e.toString()); } } static public URL fileToURL(File file) { String path = file.getAbsolutePath(); String fSep = System.getProperty("file.separator"); if (fSep != null && fSep.length() == 1) path = path.replace(fSep.charAt(0), '/'); if (path.length() > 0 && path.charAt(0) != '/') path = '/' + path; try { return new URL("file", null, path); } catch (java.net.MalformedURLException e) { /* 仕様によると、これはファイル・プロトコルが識別されなかったときのみに

XML Parser for Javaの使用 16-35

Page 60: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

XML Parser for Javaの使用 : SAXNamespace()クラス

起こります。*/ throw new Error("unexpected MalformedURLException"); } }

private SAXNamespace() throws IOException { } } /*********************************************************************** XMLDocumentHandlerインタフェースの実装です。ここでは、新しいstartElement インタフェースおよびendElementインタフェースのみが実装されます。他のすべての インタフェースは、HandlerBaseクラスで実装されます。 **********************************************************************/

class XMLDocumentHandlerImpl extends DefaultXMLDocumentHandler{

public void XMLDocumentHandlerImpl() { }

public void startElement(NSName name, SAXAttrList atts) throws SAXException {

// NSNameインタフェースにメソッドgetQualifiedName()、getLocalName()、 // getNamespace()およびgetExpandedName()を使用して、名前空間情報を取得します。 String qName; String localName; String nsName; String expName; qName = name.getQualifiedName(); System.out.println("ELEMENT Qualified Name:" + qName); localName = name.getLocalName(); System.out.println("ELEMENT Local Name :" + localName);

nsName = name.getNamespace(); System.out.println("ELEMENT Namespace :" + nsName);

expName = name.getExpandedName(); System.out.println("ELEMENT Expanded Name :" + expName);

for (int i=0; i<atts.getLength(); i++) {

16-36 Oracle8iアプリケーション開発者ガイド - XML Vol.2

Page 61: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

XML Parser for Javaの使用 : SAXNamespace()クラス

// SAXAttrListにメソッドgetQualifiedName()、getLocalName()、getNamespace() // およびgetExpandedName()を使用して、名前空間情報を取得します。 qName = atts.getQualifiedName(i); localName = atts.getLocalName(i); nsName = atts.getNamespace(i); expName = atts.getExpandedName(i);

System.out.println(" ATTRIBUTE Qualified Name :" + qName); System.out.println(" ATTRIBUTE Local Name :" + localName); System.out.println(" ATTRIBUTE Namespace :" + nsName); System.out.println(" ATTRIBUTE Expanded Name :" + expName);

// 属性の型および値を、索引または修飾名ごとに // 取得できます。 String type = atts.getType(qName); String value = atts.getValue(qName);

System.out.println(" ATTRIBUTE Type :" + type); System.out.println(" ATTRIBUTE Value :" + value); System.out.println(); } }

public void endElement(NSName name) throws SAXException { // NSNameインタフェースにメソッドgetQualifiedName()、getLocalName()、 // getNamespace()およびgetExpandedName()を使用して、名前空間情報を // 取得します。 String expName = name.getExpandedName(); System.out.println("ELEMENT Expanded Name :" + expName); }}

XML Parser for Javaの使用 16-37

Page 62: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

XML Parser for Java: コマンドライン・インタフェース

XML Parser for Java: コマンドライン・インタフェースコマンドライン・インタフェースコマンドライン・インタフェースコマンドライン・インタフェース

oraxml - Oracle XML Parseroraxmlは、XMLドキュメントを解析し、XMLドキュメントが整形式であるか、および妥当であるかを確認するコマンドライン・インタフェースです。

oraxmlを使用するには、次の条件を確認する必要があります。

� 環境変数 CLASSPATHが、Oracle XML Parser for Javaに付属する xmlparserv2.jarファイルを指すように設定されている。

� 環境変数 PATHが、JDK 1.1.xまたは JDK 1.2に付属する Javaインタプリタを検索できる。

oraxmlを起動するには、次の構文を使用します。

oraxml options* source

oraxmlには、通常、解析する XMLファイルが指定されます。オプションについては、表16-2を参照してください。

oraxsl - Oracle XSL Processororaxslは、複数の XMLドキュメントへのスタイルシートの適用に使用されるコマンドライン・インタフェースです。このインタフェースには、動作を指定する多くのコマンドライン・オプションがあります。

oraxslを使用するには、次の条件を確認する必要があります。

� 環境変数 CLASSPATHが、Oracle XML Parser for Javaに付属する xmlparserv2.jarファイルを指すように設定されている。

� 環境変数 PATHが、JDK 1.1.xまたは JDK 1.2に付属する Javaインタプリタを検索できる。

表表表表 16-2 oraxml: コマンドライン・オプションコマンドライン・オプションコマンドライン・オプションコマンドライン・オプション

オプションオプションオプションオプション 用途用途用途用途

-h ヘルプ・モード(oraxml起動構文を出力します。)

-v 妥当性検証モード(このオプションを使用しない場合、解析では整形式であるかのみが確認されます。)

-w 警告の表示(デフォルトでは、オフになっています。)

-debug デバッグ・モード(デフォルトでは、オフになっています。)

-e <エラー・ログ > エラーを書き込むファイル(エラーおよび警告を書き込むログ・ファイルを指定します。)

16-38 Oracle8iアプリケーション開発者ガイド - XML Vol.2

Page 63: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

XML Parser for Java: コマンドライン・インタフェース

oraxslを起動するには、次の構文を使用します。

oraxsl options* source? stylesheet? result?

oraxslには、通常、スタイルシート、変換する XMLファイルおよび結果ファイル(オプション)が指定されます。結果ファイルが指定されない場合、このインタフェースは、変換済ドキュメントを標準出力として出力します。複数の XMLドキュメントをスタイルシートによって変換する必要がある場合は、かわりに -lまたは -dオプションを -sおよび -rオプションと組み合せて使用します。これらのオプションおよび他のオプションについては、表16-3を参照してください。

:

表表表表 16-3 oraxsl: コマンドライン・オプションコマンドライン・オプションコマンドライン・オプションコマンドライン・オプション

オプションオプションオプションオプション 用途用途用途用途

-h ヘルプ・モード(oraxsl起動構文を出力します。)

-v 冗長モード(デバッグ情報のいくつかが出力されます。この出力は、処理中に発生した問題の追跡に有効な場合があります。)

-w 警告の表示(デフォルトでは、オフになっています。)

-debug 新規オプション -デバッグ・モード(デフォルトでは、オフになっています。)

-e <エラー・ログ > エラーを書き込むファイル(エラーおよび警告を書き込むログ・ファイルを指定します。)

-t <スレッド数 > 処理に使用するスレッド数(複数のスレッドを使用すると、複数ドキュメントの処理時のパフォーマンスを向上できます。)

-l <XMLファイル・リスト > 変換するファイルのリスト(処理するファイルを明示的にリストできます。)

-d <ディレクトリ > 変換するファイルがあるディレクトリ(デフォルト動作では、ディレクトリ内のすべてのファイルが処理されます。)そのディレクトリ内のファイルの特定のサブセット(1つのファイルのみなど)を処理する必要がある場合、-lを使用して処理するファイルのみを指定し、この動作を変更する必要があります。-xまたは -iを使用して拡張子に基づいてファイルを選択することで、この動作を変更することもできます。

-x <ソースの拡張子 > 排除する拡張子(-dとともに使用します。指定した拡張子を持つすべてのファイルが排除されます。)

-i <ソースの拡張子 > 挿入する拡張子(-dとともに使用します。指定した拡張子を持つファイルのみが選択されます。)

-s <スタイルシート > 使用するスタイルシート(-dまたは -lを指定する場合、このオプションを使用して、使用するスタイルシートを指定する必要があります。完全なパスを指定する必要があります。)

XML Parser for Javaの使用 16-39

Page 64: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

XML Parser for Java: コマンドライン・インタフェース

-r <結果の拡張子 > 結果に使用する拡張子(-dまたは -lを指定する場合、このオプションを指定して、変換の結果に使用する拡張子を指定する必要があります。このため、拡張子「out」を指定して入力ドキュメント「foo」を変換すると、「foo.out」になります。デフォルトでは、結果は現在のディレクトリに出力されます。この動作は、結果を保存するディレクトリを指定する -oを使用して変更できます。)

-o <結果のディレクトリ > 結果を保存するディレクトリ(-rとともに使用する必要があります。)

表表表表 16-3 oraxsl: コマンドライン・オプション(続き)コマンドライン・オプション(続き)コマンドライン・オプション(続き)コマンドライン・オプション(続き)

オプションオプションオプションオプション 用途用途用途用途

16-40 Oracle8iアプリケーション開発者ガイド - XML Vol.2

Page 65: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

XSLT Processor用の XML拡張関数

XSLT Processor用の用の用の用の XML拡張関数拡張関数拡張関数拡張関数

XSLT Processorの拡張関数の拡張関数の拡張関数の拡張関数 : 概要概要概要概要XSLT Processor用の XML拡張関数を使用すると、XSLT Processorのユーザーは、特定のJavaメソッドを XSLの式からコールできます。

Javaの拡張関数は、次の URLで始まる名前空間にあります。

http://www.oracle.com/XSL/Transform/java/

次の名前空間にある拡張関数は、classnameクラスにあるメソッドを参照します。

http://www.oracle.com/XSL/Transform/java/classname

たとえば、次のような名前空間があるとします。

http://www.oracle.com/XSL/Transform/java/java.lang.String

この名前空間は、XSLから java.lang.Stringメソッドをコールするために使用できます。

静的メソッドと非静的メソッドの比較静的メソッドと非静的メソッドの比較静的メソッドと非静的メソッドの比較静的メソッドと非静的メソッドの比較メソッドがクラスの非静的メソッドである場合、最初のパラメータはメソッドが起動されるインスタンスとして使用され、残りのパラメータがメソッドに渡されます。

拡張関数が静的メソッドである場合、その拡張関数のすべてのパラメータが、静的関数へのパラメータとして渡されます。

XML Parser for Java - XSLの例の例の例の例 1: 静的関数静的関数静的関数静的関数次に、XSLの静的関数の例を示します。

<xsl:stylesheet xmlns:math="http://www.oracle.com/XSL/Transform/java/java.lang.Math"> <xsl:template match="/"> <xsl:value-of select="math:ceil('12.34')"/> </xsl:template> </xsl:stylesheet>

「13」が出力されます。

XML Parser for Javaの使用 16-41

Page 66: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

XSLT Processor用の XML拡張関数

コンストラクタ拡張関数コンストラクタ拡張関数コンストラクタ拡張関数コンストラクタ拡張関数拡張関数「new」は、クラスの新しいインスタンスを作成し、コンストラクタとして動作します。

XML Parser for Java - XSLの例の例の例の例 2: コンストラクタ拡張関数コンストラクタ拡張関数コンストラクタ拡張関数コンストラクタ拡張関数次に、コンストラクタ関数の例を示します。

<xsl:stylesheetxmlns:jstring="http://www.oracle.com/XSL/Transform/java/java.lang.String"> <xsl:template match="/"> <!-- 新しいjava.lang.Stringを作成し、変数str1に格納します。 --> <xsl:variable name="str1" select="jstring:new('Hello World')"/> <xsl:value-of select="jstring:toUpperCase($str1)"/> </xsl:template> </xsl:stylesheet>

「HELLO WORLD」が出力されます。

戻り値拡張関数戻り値拡張関数戻り値拡張関数戻り値拡張関数拡張関数の結果は、XSLに定義されている次の 5つの型を含むどの型でも出力できます。

� NodeList

� Boolean

� String

� Number

� ResultTree

これらの結果は、変数に格納するか、他の拡張関数に渡すことができます。

結果の型が XSLに定義されている 5つの型のうちの 1つである場合、その結果は XSLの式の結果として戻すことができます。

XML Parser for Java - XSLの例の例の例の例 3: 戻り値拡張関数戻り値拡張関数戻り値拡張関数戻り値拡張関数次に、戻り値拡張関数を表す XSLの例を示します。

<!-- 拡張関数の名前空間を宣言します。 --> <xsl:stylesheet xmlns:parser = "http://www.oracle.com/XSL/Transform/java/oracle.xml.parser.v2.DOMParser" xmlns:document = "http://www.oracle.com/XSL/Transform/java/oracle.xml.parser.v2.XMLDocument" >

16-42 Oracle8iアプリケーション開発者ガイド - XML Vol.2

Page 67: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

XSLT Processor用の XML拡張関数

<xsl:template match ="/"> <!-- パーサーの新しいインスタンスを作成し、myparser変数に格納します。--> <xsl:variable name="myparser" select="parser:new()"/> <!-- DOMParserの非静的メソッドをコールします。非静的メソッドであるため、最初のパラメータはメソッドがコールされたインスタンスです。これは、$myparser.parse('test.xml')と同等です。 --> <xsl:value-of select="parser:parse($myparser, 'test.xml')"/> <!-- XML DOMツリーのドキュメント・ノードを取得します。 --> <xsl:variable name="mydocument" select="parser:getDocument($myparser)"/> <!-- mydocumentでgetelementsbytagnameを起動します。 --> <xsl:for-each select="document:getElementsByTagName($mydocument,'elementname')"> ...... </xsl:for-each> </xsl:template></xsl:stylesheet>

データ型拡張関数データ型拡張関数データ型拡張関数データ型拡張関数パラメータ数および型に基づいたオーバーロードがサポートされています。暗黙的な型変換は、XSLに定義されたとおりに 5つの XSL型の間で行われます。

型変換は、String、Number、Boolean、ResultTree間、および NodeSetから String、Number、Boolean、ResultTreeへ暗黙的に行われます。

相互に暗黙的な変換が可能な 2つの型に基づくオーバーロードは許可されません。

XML Parser for Javaの例の例の例の例 4: データ型拡張関数データ型拡張関数データ型拡張関数データ型拡張関数次のオーバーロードでは、Stringおよび Numberは相互に暗黙的な変換が可能なため、XSLでエラーが発生します。

� abc(int i){}

� abc(String s){}

XSL型と Java型間のマッピングは次のとおり行われます。

String -> java.lang.StringNumber -> int, float, doubleBoolean -> booleanNodeSet -> XMLNodeListResultTree -> XMLDocumentFragment

XML Parser for Javaの使用 16-43

Page 68: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

FAQ: XML Parser for Java

FAQ: XML Parser for JavaXML Parser for Javaの FAQは、次の項目で構成されています。

� XMLドキュメントと相対位置にある DOCTYPEの DTDファイル

� DOM APIおよび SAX API

� 検証

� 複数スレッドでの XSLProcessor/XSLStylesheetの使用

� キャラクタ・セット

� 子としての XMLドキュメントの追加

� XML Parserのアンインストール

� XML Parser for Java: インストール

� XML Parserに関連する一般的な質問

� XSLT Processorおよび XSLスタイルシート

� XML/XSLに関する推奨書籍

XMLドキュメントと相対位置にあるドキュメントと相対位置にあるドキュメントと相対位置にあるドキュメントと相対位置にある DOCTYPEのののの DTDファイルファイルファイルファイル

質問質問質問質問XML Parserが DTDファイルを検出できません。

回答回答回答回答<!DOCTYPE>宣言に定義されている DTDファイルは、入力 XMLドキュメントと相対位置にある必要があります。相対位置にない場合は、setBaseURL(url)ファンクションを使用してベース URLを設定し、入力が InputStreamからの場合に DTDの相対アドレスを解決する必要があります。

16-44 Oracle8iアプリケーション開発者ガイド - XML Vol.2

Page 69: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

FAQ: XML Parser for Java

外部外部外部外部 DTDを使用したを使用したを使用したを使用した XMLファイルの検証ファイルの検証ファイルの検証ファイルの検証

質問質問質問質問外部 DTDを使用して XMLファイルを検証できますか ?

回答回答回答回答XMLドキュメントに、適用可能な DTDへの参照を含める必要があります。この参照がないと、XML Parserは検証に使用する DTDを検出できません。参照の指定方法は、外部 DTDを指定するときに使用する XMLの標準方法です。参照を指定しない場合、XMLドキュメントに DTDを埋め込む必要があります。

DTDのキャッシュ機能のキャッシュ機能のキャッシュ機能のキャッシュ機能

質問質問質問質問DTDキャッシュ機能はありますか ? DTDをキャッシュするために XML Parserを使用してDTDを設定する方法を教えてください。

回答回答回答回答キャッシュ機能はありますが、オプションであり、自動的には有効になりません。

DTDを設定するメソッドは、setDoctype()です。次に例を示します。

// InputSourceを使用してテストします。 parser = new DOMParser(); parser.setErrorStream(System.out); parser.showWarnings(true); FileReader r = new FileReader(args[0]); InputSource inSource = new InputSource(r); inSource.setSystemId(createURL(args[0]).toString()); parser.parseDTD(inSource, args[1]); dtd = (DTD)parser.getDoctype(); r = new FileReader(args[2]); inSource = new InputSource(r); inSource.setSystemId(createURL(args[2]).toString()); parser.setDoctype(dtd); parser.setValidationMode(true); parser.parse(inSource);

doc = (XMLDocument)parser.getDocument(); doc.print(new PrintWriter(System.out));

XML Parser for Javaの使用 16-45

Page 70: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

FAQ: XML Parser for Java

外部外部外部外部 DTDの認識の認識の認識の認識

質問質問質問質問XML Parser for Javaは、サーバーから実行している場合はどのようにして外部 DTDを認識しますか ? Javaコードは loadjavaによってロードされ、Oracle8iサーバー・プロセスで実行しています。XMLファイルには外部 DTD参照があります。

1. SAXParserによる方法のような、DTDがデータベースにある場合にストリームや文字列などにリダイレクトするためのより一般的な方法はありますか ?

2. SAXParserの resolveEntity()による方法のような、DTDをリダイレクトするためのより一般的な方法はありますか ?

回答回答回答回答1. 現在使用できるメソッドは、setBaseURL()のみです。

2. 次の方法で、希望する結果を得ることができます。

a. DOMパーサーの parseDTD()メソッドを使用して外部 DTDを解析します。

b. getDoctype()をコールして oracle.xml.parser.v2.DTDのインスタンスを取得します。

c. DTDをプログラム的に設定するドキュメントに、setDoctype( yourDTD );を使用します。この方法は、オラクル社の製品である JARファイル以外から DTDを読み込む場合に使用します。

jarファイルからの外部ファイルからの外部ファイルからの外部ファイルからの外部 DTDのロードのロードのロードのロード

質問質問質問質問すべての DTDを jarファイルに挿入して、XML Parserに DTDが必要なときに、jarから取得するように設定する必要があります。XML Parserは、現在ベース URL(setBaseURL())をサポートしていますが、このURLは、DTDが公開されている場所を指すのみです。

回答回答回答回答この問題を解決するには、次の操作を組み合せて使用します。

1. 次の構文を使用して DTDを InputStreamとしてロードします。

InputStream is = YourClass.class.getResourceAsStream("/foo/bar/your.dtd");

これによって、DTDが指定されている CLASSPATH上の最初の相対位置にある/foo/bar/your.dtdがオープンされます。/foo/bar/your.dtdが CLASSPATHにある場合は、jar以外の場所からオープンされます。

2. 次のコードによって DTDを解析します。

DOMParser d = new DOMParser();

16-46 Oracle8iアプリケーション開発者ガイド - XML Vol.2

Page 71: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

FAQ: XML Parser for Java

d.parseDTD(is, "rootelementname");d.setDoctype(d.getDoctype());

3. ここで、次の構文を使用してドキュメントを解析します。

d.parse("yourdoc");

DTDを使用したを使用したを使用したを使用した XMLドキュメントの正確性の確認ドキュメントの正確性の確認ドキュメントの正確性の確認ドキュメントの正確性の確認

質問質問質問質問Javaオブジェクトを XMLにエクスポートしています。XMLドキュメントで DOMを構築し、出力メソッドを使用して DOMをエクスポートすることはできますが、これらのドキュメントの DTDを設定できません。パーサーを構築して DTDを解析し、Document doc = parser.getDocument()および DocType dtd = doc.getDocumentType()を使用してその DTDを取得します。

新しく構築した XMLドキュメントの DTDを設定し、この DTDを後で使用してドキュメントの正確性を確認する方法を教えてください。

回答回答回答回答DTDオブジェクトの取得方法は正しいです。ただし、DOM APIを使用して DOMツリーを作成している間は検証を行うことができません。このため、ドキュメントに DTDを設定しても、構築した DOMツリーの検証には有効ではありません。XMLファイルを検証する唯一の方法は、DOMParserまたは SAXParserを使用して XMLドキュメントを解析することです。

XMLドキュメントと分離したドキュメントと分離したドキュメントと分離したドキュメントと分離した DTDオブジェクトの解析オブジェクトの解析オブジェクトの解析オブジェクトの解析

質問質問質問質問XMLドキュメントの解析とは別に、DTDオブジェクトを解析および取得する方法を教えてください。

回答回答回答回答parseDTD()メソッドを使用すると、DTDファイルを個別に解析し、DTDオブジェクトを取得できます。これを行うコード例を次に示します。

DOMParser domparser = new DOMParser();domparser.setValidationMode(true); /* DTDファイルを解析します。*/domparser.parseDTD(new FileReader(dtdfile));DTD dtd = domparser.getDocType();

XML Parser for Javaの使用 16-47

Page 72: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

FAQ: XML Parser for Java

DTDに対する解析検証での大文字に対する解析検証での大文字に対する解析検証での大文字に対する解析検証での大文字 /小文字の識別小文字の識別小文字の識別小文字の識別

質問質問質問質問XMLファイルに、<xn:subjectcode>というタグがあります。DTDでは、このタグは<xn:subjectCode>と定義されています。このファイルをこの DTDに対して解析および検証すると、次のエラーが発生します。

XML-0148:(Error)Invalid element 'xn:subjectcode' in content of 'xn:Resource', ...

要素名を <xn:subjectcode>から <xn:subjectCode>に変更すると、このエラーは発生しなくなります。パーサーは、DTDに対する検証では大文字 /小文字を識別しますか ?それとも、要素のタグ定義内に名前空間があり、その名前空間とともに要素が定義されると、大文字 /小文字の識別が有効になるのですか ?

回答回答回答回答XMLは本来大文字 /小文字を識別します。これに準拠するために、Oracle XML Parserは大文字 /小文字を識別します。妥当性非検証モードで実行すると、整形式であるかのみが確認されます。ただし、<test></Test>は、妥当性非検証モードでもエラーになります。

CDATAセクションからの埋込みセクションからの埋込みセクションからの埋込みセクションからの埋込み XMLフォームの取得フォームの取得フォームの取得フォームの取得

質問質問質問質問1. PAYLOADを取り出して追加の処理を行う必要があります。

2. PAYLOADの値を選択しても、データが CDATAセクション内にあるため解析されません。

3. XSLTのみを使用して埋込み XMLを取り出す方法を教えてください。以前は SAXを使用してこれを行うことができましたが、現在の設定では XSLTしか使用できません。

回答回答回答回答1. ご希望の操作は、次のとおり行えます。

<PAYLOAD><![CDATA[<?xml version = '1.0' encoding = 'ASCII' standalone = 'no'?><ADD_PO_003> <CNTROLAREA> <BSR> <VERB value="ADD">ADD</VERB> <NOUN value="PO">PO</NOUN> <REVISION value="003">003</REVISION> </BSR> </CNTROLAREA></ADD_PO_003>]]>

16-48 Oracle8iアプリケーション開発者ガイド - XML Vol.2

Page 73: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

DOM APIおよび SAX API

</PAYLOAD>

CDATAによる方法は、ある意味で不適切です。CDATA内にテキストとして挿入されているネストした XMLドキュメントには、異なるエンコーディングを使用できません。このため、埋込みドキュメントの XML宣言を取得することは、あまり意味がありません。XML宣言を必要としない場合は、CDATAの動作を示すテキスト・チャンクのかわりに、実際の要素としてメッセージを <PAYLOAD>に埋め込むことをお薦めします。

これは次のとおり行います。String s = YourDocumentObject.selectSingleNode("/OES_MESSAGE/PAYLOAD");

2. 結果を大きいテキスト・チャンクで戻すように指定しているため、データは解析されません。このテキスト・チャンクは、ユーザーが次のとおり解析する必要があります(CDATA方法を使用しないメリットの 1つです)。

YourParser.parse( new StringReader(s));

sは、前述の手順で戻された文字列です。

3. CDATAに特別な要素はありません。テキストのみです。山カッコをエスケープせずにテキストの内容を出力する必要がある場合は、次の構文を使用します。

<xsl:value-of select="/OES_MESSAGE/PAYLOAD" disable-output-escaping="yes"/>

DOM APIおよびおよびおよびおよび SAX API

DOM APIの使用の使用の使用の使用

質問質問質問質問パーサーを使用して特定のタグの要素数を取得する方法を教えてください。

回答回答回答回答getElementsByTagName()メソッドを使用します。このメソッドは、指定したタグ名を持つすべての子要素の NodeListを戻します。その NodeList内の要素数を調べて、特定のタグの要素数を判断できます。

XML Parser for Javaの使用 16-49

Page 74: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

DOM APIおよび SAX API

DOMパーサーの動作パーサーの動作パーサーの動作パーサーの動作

質問質問質問質問XML DOMパーサーはどのように動作しますか ?

回答回答回答回答パーサーは XML形式のドキュメントを受け入れ、構造に基づいて DOMツリーをメモリー内に構築します。ドキュメントが整形式であるかどうかを確認し、オプションで DTDに準拠しているかどうかを確認します。DOMレベル 1をサポートするメソッドも提供されています。

後で設定する値を使用したノードの作成後で設定する値を使用したノードの作成後で設定する値を使用したノードの作成後で設定する値を使用したノードの作成

質問質問質問質問値を後で設定できるノードを作成する方法を教えてください。

回答回答回答回答ノード型を説明する表に関する DOM仕様を確認すると、要素ノードを作成する場合にnodeValueが NULLになるため、ノードを設定できないことがわかります。ただし、テキスト・ノードを作成して要素ノードへ追加できます。テキスト・ノードに値を格納できます。

XMLツリーの全検索ツリーの全検索ツリーの全検索ツリーの全検索

質問質問質問質問XMLツリーの全検索方法を教えてください。

回答回答回答回答ツリーは、DOM APIを使用して全検索できます。または、XPath構文を取る selectNodes()メソッドを使用して、XMLドキュメント内を操作できます。selectNodes()は、oracle.xml.parser.v2.XMLNodeの一部です。

16-50 Oracle8iアプリケーション開発者ガイド - XML Vol.2

Page 75: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

DOM APIおよび SAX API

XMLファイルからの要素の取得ファイルからの要素の取得ファイルからの要素の取得ファイルからの要素の取得

質問質問質問質問XMLファイルから要素を取得する方法を教えてください。

回答回答回答回答DOMを使用している場合、getElementsByTagName()メソッドを使用してドキュメント内のすべての要素を取得できます。

DTDによるによるによるによる DOMツリーの検証ツリーの検証ツリーの検証ツリーの検証

質問質問質問質問XMLドキュメントに DTDを追加すると、このDTDは DOMツリーを検証しますか ?

回答回答回答回答検証しません。DOM APIを使用して DOMツリーを作成している間は検証を行うことができません。このため、ドキュメントに DTDを設定しても、作成した DOMツリーの検証には有効ではありません。XMLファイルを検証する唯一の方法は、DOMParserまたはSAXParserを使用して XMLドキュメントを解析することです。

最初の子ノードの要素の値最初の子ノードの要素の値最初の子ノードの要素の値最初の子ノードの要素の値

質問質問質問質問DOMツリーを介さずに、要素の最初の子ノードの値を効率的に取得する方法を教えてください。

回答回答回答回答ツリー全体が必要ない場合、SAXインタフェースを使用して必要なデータを戻します。SAXインタフェースはイベント駆動であるため、ドキュメント全体を解析する必要はありません。

XML Parser for Javaの使用 16-51

Page 76: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

DOM APIおよび SAX API

DOCTYPEノードの作成ノードの作成ノードの作成ノードの作成

質問質問質問質問DOCTYPEノードの作成方法を教えてください。

回答回答回答回答DOCTYPEノードは現在、parseDTDメソッドを使用してのみ作成できます。たとえば、emp.dtdには次の DTDがあります。

<!ELEMENT employee (Name, Dept, Title)> <!ELEMENT Name (#PCDATA)> <!ELEMENT Dept (#PCDATA)> <!ELEMENT Title (#PCDATA)>

次のコードを使用して DOCTYPEノードを作成できます。

parser.parseDTD(new FileInputStream(emp.dtd), "employee"); dtd = parser.getDocType();

XMLNode.selectNodes()メソッドメソッドメソッドメソッド

質問質問質問質問selectNodes()メソッドは XMLNodeクラスでどのように使用すればいいですか ?

回答回答回答回答selectNodes()メソッドは、XMLElementノードおよび XMLDocumentノードに使用します。このメソッドは、XSLが許可する選択パターンに基づいてツリー /サブツリーから内容を取得するために使用されます。selectNodesのオプションの 2つ目のパラメータは、名前空間の接頭辞を解決するために使用されます(接頭辞付きの展開された名前空間の URLを戻します)。XMLElementは、2つ目のパラメータとして送信されるように NSResolverを実装します。XMLElementは、入力ドキュメントに基づいて接頭辞を解決します。名前空間の定義をオーバーライドする必要がある場合、NSResolverインタフェースを実装できます。次に、selectNodesを使用したコード例を示します。

public class SelectNodesTest {public static void main(String[] args) throws Exception {String pattern = "/family/member/text()";String file = args[0];

if (args.length == 2)

16-52 Oracle8iアプリケーション開発者ガイド - XML Vol.2

Page 77: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

DOM APIおよび SAX API

pattern = args[1];

DOMParser dp = new DOMParser();

dp.parse(createURL(file)); // DOMSampleからのcreateURLを含めます。XMLDocument xd = dp.getDocument();XMLElement e = (XMLElement) xd.getDocumentElement();NodeList nl = e.selectNodes(pattern, e);for (int i = 0; i < nl.getLength(); i++) { System.out.println(nl.item(i).getNodeValue()); } }}

> java SelectNodesTest family.xmlSarahBobJoanneJim

> java SelectNodesTest family.xml //member/@memberidm1m2m3m4

SAX APIを使用したデータ値の取得を使用したデータ値の取得を使用したデータ値の取得を使用したデータ値の取得

質問質問質問質問XMLドキュメントの解析に SAXを使用しています。データ値の取得方法を教えてください。

回答回答回答回答SAXによる解析の間、要素の値は、startElementイベントの後から対応する endElementイベントがコールされるまでに通知された文字の連結になります。

XML Parser for Javaの使用 16-53

Page 78: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

DOM APIおよび SAX API

SAXSample.java

質問質問質問質問SAXSampleのプログラム内に、setDocumentLocatorおよびその他のメソッドを明示的にコールする行がありませんが、これらのメソッドが実行されています。これらのメソッドはいつ、どこからコールされるのですか ?

回答回答回答回答SAXは、イベントベースの XML解析用の標準インタフェースです。このパーサーは、解析イベントを setDocumentLocator()や startDocument()などのコールバックのメソッドを介して直接通知します。アプリケーション(この場合は SAXSample)は、異なるイベントを処理するハンドラを実装します。http://www.megginson.com/SAX/index.htmlでは、イベント駆動の APIである SAXの基本的な説明を参照できます。

DOMParserによるによるによるによる Parserインタフェースの実装インタフェースの実装インタフェースの実装インタフェースの実装

質問質問質問質問XML Parserの DOMParserは、org.xml.sax.Parserインタフェースを実装しますか ?ドキュメントでは、DOMParserは XMLContstantsを実装し、APIにはこのクラスが含まれないと記載されています。

回答回答回答回答SAXを処理し、org.xml.sax.Parserインタフェースを実装させるためには、oracle.xml.parser.v2.SAXParserが必要です。

DOMを使用した新しい文書型ノードの作成を使用した新しい文書型ノードの作成を使用した新しい文書型ノードの作成を使用した新しい文書型ノードの作成

質問質問質問質問XMLファイルを作成しようとしています。NodeFactoryを使用してドキュメントを構築し(createDocument())、その後 setStandalone("no")および setVersion("1.0")を指定します。

appendChild( new XMLNode("test", Node.DOCUMENT_TYPE_NODE))を使用してDOCTYPEノードを追加しようとすると、ClassCastExceptionが発生します。このタイプのノードを追加するメカニズムを教えてください。NodeFactoryには、DOCTYPEノードを作成するメカニズムがないことはわかっています。

16-54 Oracle8iアプリケーション開発者ガイド - XML Vol.2

Page 79: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

DOM APIおよび SAX API

回答回答回答回答DOM APIを介して新しい DOCUMENT_TYPE_NODEオブジェクトを作成するメカニズムはありません。DTDオブジェクトを取得する唯一の方法は、DTDファイルまたは XMLファイルを DOMParserを使用して解析し、getDocType()メソッドを使用することです。

新しい XMLNode("test",Node.DOCUMENT_TYPE_NODE)は、DTDオブジェクトを作成しないことに注意してください。これは、タイプを DOCUMENT_TYPE_NODEに設定してXMLNodeオブジェクトを作成します。この方法は、実際には使用するべきではありません。appendChildが(タイプに基づいて)DTDオブジェクトを予期するため、ClassCastExceptionが発生します。

また、DOM APIを使用して DOMツリーを作成している間は、検証を行うことができません。このため、ドキュメントに DTDを設定しても、作成した DOMツリーの検証には有効ではありません。XMLファイルを検証する唯一の方法は、DOMParserまたは SAXParserを使用して XMLドキュメントを解析することです。

特定のタグの最初の子ノード値の問合せ特定のタグの最初の子ノード値の問合せ特定のタグの最初の子ノード値の問合せ特定のタグの最初の子ノード値の問合せ

質問質問質問質問XML Parser for Javaを使用しています。「微分積分」、「数学」、「Jim Green」、「Jack」、「Mary」および「Paul」を含む XMLドキュメントがあるとします。特定のタグの最初の子ノードの値を取得する必要があります。これを効率的に行うメソッドが見つかりません。最も近いメソッドは、下位ツリー全体を全検索する getElementsByTag("Name")です。

回答回答回答回答ツリー全体が必要ない場合、最適な方法は、SAXインタフェースを使用して必要なデータを戻すことです。SAXインタフェースはイベント駆動であるため、ドキュメント全体を解析する必要はありません。

変数のデータからの変数のデータからの変数のデータからの変数のデータからの XMLドキュメントの生成ドキュメントの生成ドキュメントの生成ドキュメントの生成

質問質問質問質問単純な変数に含まれた情報から XMLドキュメントを生成する例がありますか ?クライアントが Javaフォームに記入し、特定のデータを含む XMLドキュメントを取得する必要がある場合のような例です。

回答回答回答回答ご質問の内容を 2通りに解釈して回答を示します。Javaで指定した 2つの変数があるとします。

String firstname = "Gianfranco";

XML Parser for Javaの使用 16-55

Page 80: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

DOM APIおよび SAX API

String lastname = "Pietraforte";

これを XMLドキュメントにする 2つの基本的な方法は、次のとおりです。

1. XMLドキュメントを文字列にして、解析します。

String xml = "<person><first>"+firstname+"</first>"+ "<last>"+lastname+"</last></person"; DOMParser d = new DOMParser(); d.parse( new StringReader(xml)); Document xmldoc = d.getDocument();

2. DOM APIを使用してドキュメントを構築し、それぞれを統合します。

Document xmldoc = new XMLDocument();Element e1 = xmldoc.createElement("person");xmldoc.appendChild(e1);Element e2 = xmldoc.createElement("first");e1.appendChild(e2);Text t = xmldoc.createText(firstname);e2.appendChild(t);// 以降同様

要素タグへのデータの出力要素タグへのデータの出力要素タグへのデータの出力要素タグへのデータの出力 : DOM API

質問質問質問質問DOM APIを使用して次の要素を Javaで出力する方法を教えてください。

<name>macy</name>

「macy」を出力する必要がありますが、使用するクラスおよびメソッドがわかりません。「name」は正常にコンソールに出力できました。

回答回答回答回答DOMの場合、<name>macy</name>は、値が「macy」である子ノード(テキスト・ノード)を持つ「name」という名前の要素であることを理解してください。

したがって、次のコードを実行できます。

String value = myElement.getFirstChild().getNodeValue();

16-56 Oracle8iアプリケーション開発者ガイド - XML Vol.2

Page 81: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

DOM APIおよび SAX API

ハッシュ表値のペアからのハッシュ表値のペアからのハッシュ表値のペアからのハッシュ表値のペアからの XMLファイルの構築ファイルの構築ファイルの構築ファイルの構築

質問質問質問質問キー値のペアのハッシュ表がありますが、DOM APIを使用してこの表から XMLファイルを構築する方法を教えてください。 hashtable{key = value,name = george,zip = 20000}を設定しています。これを構築する方法を教えてください。

<key>value</key><name>george</name><zip>20000</zip>’

これを自動的に行うユーティリティがありますか ?

回答回答回答回答1. ハッシュ表からキーの一覧を取得します。

2. enum.hasMoreElements()中にループします。

3. 一覧内の各キーに対して、DOMドキュメントに createElement()を使用して、そのキーにハッシュ表エントリの *value*の値を指定している子テキスト・ノードを持つキー名によって、要素を作成します。

XML Parser for Java: Node.appendChild()のののの wrong_document_err

質問質問質問質問XML Parserの実装について質問があります。次の使用例について考えてみます。

Document doc1 = new XMLDocument();Element element1 = doc1.creatElement("foo");Document doc2 = new XMLDocument();Element element2 = doc2.createElement("bar");element1.appendChild(element2);

appendChild()ルーチンをコールすると、WRONG_DOCUMENT_ERRの DOMExceptionが発生するのは正常なのでしょうか ? XML Parserに付属する XSLSample.javaを見て疑問に思いました。ご意見をお聞かせください。

回答回答回答回答element1の所有者ドキュメントは doc1であり、element2の所有者ドキュメントは doc2であるため、このエラーは必ず発生します。appendChild()は、単一ツリー内でのみ動作しますが、例では 2つの異なるツリーを操作しています。

XML Parser for Javaの使用 16-57

Page 82: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

DOM APIおよび SAX API

質問質問質問質問XMLParserに付属する XSLSample.javaでは、次のように記述されています。

DocumentFragment result = processor.processXSL(xsl, xml); // 結果を保存する出力ドキュメントを作成します。out = new XMLDocument(); //出力ドキュメント用のダミー・ドキュメント要素を作成します。Element root = out.createElement("root"); out.appendChild(root); // 変換済ツリーをダミー・ドキュメント要素に追加します。root.appendChild(result);

ノード・ルートおよび結果が異なるXMLドキュメントから作成されました。

これでは、結果を追加するときにWRONG_DOCUMENT_ERRが発生しませんか ?

回答回答回答回答この例では、ルート・ノードを持たないドキュメント・フラグメントを使用しています。したがって、XMLドキュメントは 2つではありません。

質問質問質問質問ドキュメント・フラグメントをノードに追加するとき、ドキュメント・フラグメントの子ノードのみが挿入され、ドキュメント・フラグメント自体は挿入されません。パーサーは、これらの子ノードの所有者ドキュメントを確認しますか ?これは、IBMの XMLパーサーの動作であると思います。

コメントコメントコメントコメントこれは、以前発生した問題です。ドキュメント・フラグメントは、定義上、単なるノードのリストであることが多いため、ルート・ノードにバインドするべきではありません。ルート・ノード(存在する場合)は、単一の子として考える必要があります。たとえば、請求書自体ではなく、請求書ドキュメントのすべての行を取り、ProviderOrderドキュメントに追加するとします。これに意味があるかどうかはこの場合考慮しないとします。ドキュメント・フラグメントを他のドキュメントに追加するために、XSLT Procssorが行うように、ルートなしでドキュメント・フラグメントを作成するにはどうすればいいでしょうか ?

16-58 Oracle8iアプリケーション開発者ガイド - XML Vol.2

Page 83: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

DOM APIおよび SAX API

ノードの作成ノードの作成ノードの作成ノードの作成 : ノード値設定時のノード値設定時のノード値設定時のノード値設定時の DOMException

質問質問質問質問次のエラーが戻ります。

oracle.xml.parser.XMLDOMException: Node cannot be modifiedwhile trying to set the value of a newly created node as below: String eName="Mynode"; XMLNode aNode = new XMLNode(eName, Node.ELEMENT_NODE); aNode.setNodeValue(eValue);

後で値を設定できるノードを作成する方法を教えてください。

回答回答回答回答ノード・タイプに関する DOMの注記を参照してください。要素ノードを作成している場合、nodeValueが NULLであり、設定できないことがわかります。

XML Parser for Javaの使用 16-59

Page 84: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

検証

検証検証検証検証

DTD: DOCTYPEおよび妥当性検証パーサーの理解および妥当性検証パーサーの理解および妥当性検証パーサーの理解および妥当性検証パーサーの理解

質問質問質問質問次の DTDへの参照を含む XML文字列があります。この DTDは、プログラムを起動するディレクトリ内に物理的に格納されています。妥当性検証 XMLパーサーによって、このファイルが見つからないと通知されます。

<!DOCTYPE xyz SYSTEM "xyz.dtd" >

DTDをディスク上に置くときの規則を教えてください。 DOCTYPE属性について説明してください。

回答回答回答回答解析しているのは InputStreamですか、それとも URLですか ? InputStreamを解析している場合、パーサーはその InputStreamの送信元を識別しないため、現在のファイルと同じディレクトリにある DTDを検索できません。これを解決するには、setBaseURL()を設定してパーサーに URL情報の一部を与え、DTDを取得するときに残りの情報を導出するようにします。

複数スレッドでの複数スレッドでの複数スレッドでの複数スレッドでの XSLProcessor/XSLStylesheetの使用の使用の使用の使用

質問質問質問質問複数スレッドは、単一の XSLProcessor/XSLStylesheetインスタンスを使用して同時変換を実行できますか ?

回答回答回答回答XMLファイルごとに 1つの XSLProcessor/XSLStylesheetのみを使用して複数ファイルを処理している場合、複数スレッドを使用して同時に処理できます。binディレクトリにあるreadme.htmlファイルに、複数スレッド処理用のスレッド・パラメータを持つ ORAXSLについての説明があります。

16-60 Oracle8iアプリケーション開発者ガイド - XML Vol.2

Page 85: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

検証

複数スレッドでドキュメントのクローンを使用する場合の安全性複数スレッドでドキュメントのクローンを使用する場合の安全性複数スレッドでドキュメントのクローンを使用する場合の安全性複数スレッドでドキュメントのクローンを使用する場合の安全性

質問質問質問質問ドキュメントのクローンを複数スレッドで使用することは安全ですか ? public void setParam(String ,String)によって発生する oracle.xml.parser.v2.XSLStylesheetクラスのXSLExceptionメソッドはサポートされていますか ?サポートされていない場合、実行時にXSLT Processorにパラメータを渡す別の方法はありますか ?

回答回答回答回答コンストラクタが設定したグローバル領域を他のスレッドにコピーする場合は、安全です。

そのメソッドは、XML Parser V2.0.2.5以降でサポートされています。

コメントコメントコメントコメントXSLExceptionメソッドはドキュメント内にありますが、XSLStylesheetクラス(Windows用 zip版)には実装されていません。まず、最新の ZIPファイルをダウンロードしてください。

public static void serve(Document template, Document data,Element userdata,PrintWriter out) { XMLDocument clone = (XMLDocument)data.cloneNode(true); clone.getDocumentElement().appendChild(userdata.cloneNode(true)); serve(template, clone, out);}

XML Parser for Javaの使用 16-61

Page 86: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

キャラクタ・セット

キャラクタ・セットキャラクタ・セットキャラクタ・セットキャラクタ・セット

XML Parserでのでのでのでの ISO 8859-1エンコーディングエンコーディングエンコーディングエンコーディング

質問質問質問質問エンコーディングが ISO 8859-1の XMLドキュメントがあります。これらのドキュメントをXML Parserの SAX APIによって解析しようとしています。文字 (char[], int, int)では、内容も ISO 8859-1(Latin1)で出力する必要があります。

System.out.println()を使用すると、正しく出力できません。ドイツ語のウムラウトが、出力ストリームでは「?」になります。内部では、「_」、「÷」、「'」、「ý」、「_」、「›」、「?」がそれぞれ「65508」、「65526」、「65532」、「65476」、「65494」、「65500」、「65503」として格納されます。Latin1で出力する方法を教えてください。使用しているホスト・システムは、SPARC Solaris 2.6です。

回答回答回答回答System.out.println()を使用することはできません。OutputStreamWriterなど、エンコーディングを識別する出力ストリームを使用する必要があります。

OutputStreamWriteを構築して、次のとおり write(char[], int, int)メソッドを使用できます。

print.Ex:OutputStreamWriter out = new OutputStreamWriter(System.out, "8859_1");/* ISO 8859-1用のJavaエンコーディング文字列*/

UTF-8エンコーディングでエンコーディングでエンコーディングでエンコーディングで NCLOBに格納されたに格納されたに格納されたに格納された XMLの解析の解析の解析の解析

質問質問質問質問UTF-8エンコーディングを使用して NCLOB列に格納された XMLを解析できません。次のコンポーネントを実行しています。

� Windows NT 4.0 Server Pack

� Oracle 8i(8.1.5)

� JDeveloper 3.0

� JDK 1.1.8

� Oracle XML Parser(2.0.2.5?)

16-62 Oracle8iアプリケーション開発者ガイド - XML Vol.2

Page 87: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

キャラクタ・セット

データベースにロードした次の XMLの例には、2つの UTF-8マルチバイト・キャラクタが含まれています。

<?xml version="1.0" encoding="UTF-8"?><G><A>GÂotingen, Brück_W</A></G>G(0xc2, 0x82)otingen, Br(0xc3, 0xbc)ck_W

これらのマルチバイト・キャラクタは両方とも有効な UTF-8エンコーディングであり、ISO 8859-1では次のとおり定義されます。

0xC2 LATIN CAPITAL LETTER A WITH CIRCUMFLEX0xFC LATIN SMALL LETTER U WITH DIAERESIS

デフォルト接続オブジェクトを使用してデータベースに接続し、SELECT問合せを実行し、OracleResultSetを取得し、getCLOBメソッドをコールして CLOBオブジェクトに関するgetAsciiStream()をコールする Javaストアド・ファンクションを作成しました。その後、このファンクションは、次のコードのフラグメントを実行して XMLを DOMオブジェクトに変換します。

DOMParser parser = new DOMParser();parser.setPreserveWhitespace(true);parser.parse(istr); // istr getAsciiStreamXMLDocument xmldoc = parser.getDocument();

ストアド・ファンクションが次のタスクを行う前に、このコードによって前述の XMLに「無効な UTF-8エンコーディング」が含まれるという例外が発生します。

� 最初のマルチバイト・キャラクタ(Oxc2,Ox82)を XMLから削除すると、正常に解析されます。

� この文字を削除せずに、Oracle JDBC Thin Driver(ここではストアド・ファンクションとして RDBMS内で実行していないことに注意してください)を介して接続すると、XMLは正常に解析され、XMLドキュメントであらゆる処理を行えます。

サンプル XMLを、JDBCドライバを使用してデータベースにロードしました。2つのデータベース構成WE8ISO8859P1/WE8ISO8859P1およびWE8ISO8859P1/UTF8を試してみましたが、どちらでも同じ問題が発生しました。

回答回答回答回答確かに文字(0xc2,0x82)は有効な UTF-8です。getAsciiStream()がコールされたときに文字に異常が発生したのではないかと思います。getAsciiStream()のかわりに、getUnicodeStream()および getBinaryStream()を使用してみてください。

正常に実行できない場合は、手順 parser.parse(istr)で文字がパーサーに送信される前に、文字が異常でないことを確認するために出力してみてください。

XML Parser for Javaの使用 16-63

Page 88: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

キャラクタ・セット

XML内の内の内の内の NLSサポートサポートサポートサポート

質問質問質問質問データベースの nvarchar2フィールド内に日本語のデータを格納しています。PL/SQL Webツールキットを利用する動的 SQLプロシージャによって、OASおよびブラウザを介してデータにアクセスできます。このプロシージャは XML Parserを使用して、ブラウザに戻す前に、結果セットを XMLに適切にフォーマットします。

問題は、戻された日本語データがさかさまの疑問符としてブラウザに表示されることです。このデータを正確に戻して漢字として表示する方法を教えてください。

回答回答回答回答Javaおよび XMLのデフォルト・キャラクタ・セットは UTF-8ですが、UTF8 OS、データベースでの UTF8の使用、または UTF8を使用したWebページの作成については聞いたことがありません。つまり、キャラクタ・コード変換の問題があります。漢字を正常に表示することはできます。XML Parser for PL/SQLおよび XML Parser for Javaは、両方とも日本語で動作します。ただし、ご質問の件に対して簡単には説明できません。

XML Parser for Javaでのでのでのでの UTF-16エンコーディングエンコーディングエンコーディングエンコーディング

質問質問質問質問次のような XMLドキュメントがあります。

Documento de Prueba de gestin de contenidos. Roberto P_rez Lita

次の方法でこのドキュメントを解析します。

DOMParser parser=new DOMParser(); parser.setPreserveWhitespace(true); parser.setErrorStream(System.err); parser.setValidationMode(false); parser.showWarnings(true);parser.parse ( new FileInputStream(new File("PruebaA3Ingles.xml")));

次のようなエラーが戻ります。

XML-00231 : (Error) Encoding 'UTF-16' is not currently supported

XML Parser for Java V2.0.2.5を使用しています。マニュアルには、このバージョンのパーサーは UTF-16エンコーディングをサポートしていると記載されています。スペイン語を含むドキュメントを解析する方法はありますか ?

16-64 Oracle8iアプリケーション開発者ガイド - XML Vol.2

Page 89: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

子としての XMLドキュメントの追加

回答回答回答回答オラクル社では、XML Parser for Javaの新しいリリースをアップロードしたばかりです。この最新のリリースは UTF-16をサポートしますが、他のユーティリティでの UTF-16エンコーディングの使用には問題があります。

子としての子としての子としての子としての XMLドキュメントの追加ドキュメントの追加ドキュメントの追加ドキュメントの追加

他の要素の子としての他の要素の子としての他の要素の子としての他の要素の子としての XMLドキュメントの追加ドキュメントの追加ドキュメントの追加ドキュメントの追加

質問質問質問質問XMLドキュメントを既存の要素の子として追加しています。次に例を示します。

import org.w3c.dom.*;import java.util.*;import java.io.*;import java.net.*;import oracle.xml.parser.v2.*;public class ggg {public static void main (String [] args) throws Exception {new ggg().doWork();;public void doWork() throws Exception {XMLDocument doc1 = new XMLDocument();Element root1=doc1.createElement("root1");XMLDocument doc2= new XMLDocument();Element root2=doc2.createElement("root2");root1.appendChild(root2);doc1.print(System.out);};};

次のように通知されます。

D:\Temp\Oracle\sample>c:\jdk1.2.2\bin\javac -classpath D:\Temp\Oracle\lib\xmlparserv2.jar;. ggg.javaD:\Temp\Oracle\sample>c:\jdk1.2.2\bin\java -classpath D:\Temp\Oracle\lib\xmlparserv2.jar;. gggException in thread "main" java.lang.NullPointerException at oracle.xml.parser.v2.XMLDOMException.(XMLDOMException.java:67) at oracle.xml.parser.v2.XMLNode.checkDocument(XMLNode.java:919) at oracle.xml.parser.v2.XMLNode.appendChild(XMLNode.java, Compiled Code) at oracle.xml.parser.v2.XMLNode.appendChild(XMLNode.java:494) at ggg.doWork(ggg.java:20) at ggg.main(ggg.java:12)

XML Parser for Javaの使用 16-65

Page 90: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

子としての XMLドキュメントの追加

回答回答回答回答 a次のコードは正常に実行できます。

DocumentFragment rootNode = new XMLDocumentFragment(); DOMParser d = new DOMParser(); d.parse("http://.../stuff.xml"); Document doc = d.getDocument(); Element e = doc.getDocumentElement(); // これを他のドキュメントに追加する前に、 // 最初のドキュメントから削除する必要があります。doc.removeChild(e); rootNode.appendChild(e);

ドキュメントが保持できるルートノードは 1つのみであるため、これを行うにはDocumentFragmentクラスを使用する必要があります。

回答回答回答回答 bすべてのノードには、ノードが作成されたドキュメントへの参照が含まれているため、他のドキュメントで作成されたノードの追加には特に問題はありません。ドキュメント・フラグメントによってこれは解決されるため、1つのルートに関する問題のみではないと思われます。com.w3c.dom.Documentを org.w3c.dom.DocumentFragmentに変換する簡単な方法はあるのでしょうか ?

XMLドキュメントの子としてのドキュメントの子としてのドキュメントの子としてのドキュメントの子としての XMLドキュメント・フラグメントの追加ドキュメント・フラグメントの追加ドキュメント・フラグメントの追加ドキュメント・フラグメントの追加

質問質問質問質問次のようなコードのフラグメントがあります。

XSLStylesheet XSLProcessorStylesheet = new XSLStylesheet(XSLProcessorDoc, XSLProcessorURL);XSLStylesheet XSLRendererStylesheet = new XSLStylesheet(XSLRendererDoc, XSLRendererURL);XSLProcessor processor = new XSLProcessor();// processorprocessor.showWarnings(true)を設定します。;processor.setErrorStream(System.err);XMLDocumentFragment processedXML = processor.processXSL(XSLProcessorStylesheet, XMLInputDoc);XMLDocumentFragment renderedXML = processor.processXSL(XSLRendererStylesheet, processedXML);Document resultXML = new XMLDocument();resultXML.appendChild(renderedXML);

最後の行で、mainスレッド oracle.xml.parser.v2に例外が発生します。

XMLDOMException: Node of this type cannot be added.

16-66 Oracle8iアプリケーション開発者ガイド - XML Vol.2

Page 91: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

子としての XMLドキュメントの追加

結果ドキュメント・フラグメントが、整形式の XMLドキュメントであることがわかっていても(およびルート要素を 1つのみ持つことがわかっていても)、毎回ルート要素を作成する必要がありますか ?

回答回答回答回答ドキュメント・フラグメントは 2つ以上の「ルート」要素(より適切な用語がないため)を含むことができるため、この問題が発生します。これに対処するには、Nodeクラスのメソッドを使用してドキュメント・フラグメントから 1つのルート要素を取得し、Elementにキャストします。

XML Parser for Javaの使用 16-67

Page 92: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

XML Parserのアンインストール

XML Parserのアンインストールのアンインストールのアンインストールのアンインストール

データベースからのデータベースからのデータベースからのデータベースからの XML Parserの削除の削除の削除の削除

質問質問質問質問あるバージョンの XML Parserをアンインストールし、新しいバージョンをインストールする方法を教えてください。 dropjavaなどコマンドでは、スキーマにロードされている他のパッケージが残ります。以前のバージョンを完全に削除してから新しいバージョンを正しい方法でインストールする必要があります。

回答回答回答回答USER_OBJECTS表に次の SQL文を記述する必要があります。

SELECT 'drop java class '''&#0124; &#0124; dbms_java.longname(object_name)&#0124; &#0124;''';from user_objects whereOBJECT_TYPE = 'JAVA CLASS'and DBMS_JAVA.LONGNAME(OBJECT_NAME) LIKE 'oracle/xml/parser/%'

これによって、一連の DROP JAVA CLASSコマンドが起動されます。これらのコマンドは、SQL*Plusの SPOOL コマンドを使用してファイルに獲得できます。

その後、そのスプール・ファイルを SQLスクリプトとして実行すると、すべての適切なクラスが削除されます。

16-68 Oracle8iアプリケーション開発者ガイド - XML Vol.2

Page 93: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

XML Parser for Java: インストール

XML Parser for Java: インストールインストールインストールインストール

XML Parserがインストールできない場合がインストールできない場合がインストールできない場合がインストールできない場合

質問質問質問質問XML Parserをインストールしようとすると次のエラー・メッセージが戻されます。

loadjava -user username/manager -r -v xmlparserv2.jarError:Exception in thread "main" java.lang.NoClassDefFounderr:oracle.aurora.server.tools at oracle/jdbc/driver/OracleDriver.. etc..

回答回答回答回答これは、CLASSPATH内に JDBC classes111.zipが検出されなかったためのエラーです。loadjavaユーティリティは、データベースに接続し、JDBCドライバを使用してクラスをロードします。

「loadjava」を確認すると、classes111.zipへのパスは次のとおりでした。

<ORACLE_HOME>/jdbc/lib/classes111.zip

リリース 8.1.6では、classes111.zipは次のディレクトリにあります。

<ORACLE_HOME/jdbc/admin

XML Parser for Javaの使用 16-69

Page 94: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

XML Parserに関連する一般的な質問

XML Parserに関連する一般的な質問に関連する一般的な質問に関連する一般的な質問に関連する一般的な質問

XML Parserの動作の動作の動作の動作

質問質問質問質問XML Parserの役割は何ですか ?

回答回答回答回答XML Parserは、XLMドキュメントを受け入れて、ドキュメントの要素と属性、およびイベント API(SAX)に対してアクセスまたは変更を行なうツリーベース API(DOM)を戻します。イベント APIは、登録するリスナーを提供し、特定の要素または属性、およびその他のドキュメント・イベントを通知します。

XMLファイルのファイルのファイルのファイルの HTMLファイルへの変換ファイルへの変換ファイルへの変換ファイルへの変換

質問質問質問質問XMLファイルを HTMLファイルに変換する方法を教えてください。

回答回答回答回答XMLを HTMLにレンダリングするための XSLスタイルシートを作成する必要があります。任意の形式で HTMLドキュメントを作成し、ダミー・データを移入します。スタイルシートを記述した XMLドキュメントのデータを HTMLに移入する XSLTコマンドによって、このデータを置き換えます。

XML Schemaに対する検証に対する検証に対する検証に対する検証

質問質問質問質問XML Parser は XML Schemaに対する検証を行いますか ?

回答回答回答回答XML Parser は、妥当性検証モードおよび非検証モードの両方をサポートします。XML Schemaは、W3Cの XML Schema委員会で作成中です。完成次第サポートする予定です。現在、Oracle XML Parserは、DTDに対する妥当性検証および非検証をサポートしています。

16-70 Oracle8iアプリケーション開発者ガイド - XML Vol.2

Page 95: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

XML Parserに関連する一般的な質問

XMLドキュメントへのバイナリ・データの挿入ドキュメントへのバイナリ・データの挿入ドキュメントへのバイナリ・データの挿入ドキュメントへのバイナリ・データの挿入

質問質問質問質問XMLドキュメントにバイナリ・データを挿入する方法を教えてください。

回答回答回答回答ドキュメントに直接バイナリ・データを挿入する方法はありません。ただし、これに対処するには 2つの方法があります。

� バイナリ・データは、異なるファイルに常駐する未解析の外部エンティティとして参照できます。

� バイナリ・データは、非エンコーディング(バイナリ・データを ASCIIデータに変換)をして CDATAセクションに含めることができます。エンコーディング方法には、CDATAセクションに正当な文字のみを作成するように確認する必要があるという制限があります。

XML Schemaの概要の概要の概要の概要

質問質問質問質問XML Schemaとは何ですか ?

回答回答回答回答XML Schemaとは、データ型の概念を XMLドキュメントに適用するためにW3Cが策定している XML標準であり、DTD構文を XMLに基づく構文に置き換えるものです。詳細は、http://www.w3.org/TR/xmlschema-1/および http://www.w3.org/TR/xmlschema-2/を参照してください。

XML/SQL標準の定義へのオラクル社の参加標準の定義へのオラクル社の参加標準の定義へのオラクル社の参加標準の定義へのオラクル社の参加

質問質問質問質問オラクル社は XML/XSL標準の定義に参加していますか ?

回答回答回答回答オラクル社は、XML/XSLに関連する XML Schema、XML Query、XSL、XLink/XPointer、XML Infoset、DOMおよび XML CoreのW3Cワーキング・グループに積極的に参加しています。

XML Parser for Javaの使用 16-71

Page 96: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

XML Parserに関連する一般的な質問

XDKのバージョン番号のバージョン番号のバージョン番号のバージョン番号

質問質問質問質問ダウンロードした XDKツールキットのバージョン番号はどのようにしてわかりますか ?

回答回答回答回答アーカイブ内、および Release Notesページにリンクされた readme.htmlを参照すると、完全なバージョン番号を確認できます。

XMLドキュメントへのドキュメントへのドキュメントへのドキュメントへの <、、、、>、、、、>=およびおよびおよびおよび <=の挿入の挿入の挿入の挿入

質問質問質問質問XMLドキュメントに >、<、>=および <=を挿入する方法を教えてください。

回答回答回答回答<にはエンティティ &lt;、および >にはエンティティ &gt;を使用する必要があります。

XML Namespace(名前空間)および(名前空間)および(名前空間)および(名前空間)および XML Schemaのサポートのサポートのサポートのサポート

質問質問質問質問XML Namespaceおよび XML Schemaはサポートされていますか ?

回答回答回答回答現在の XML Parserは XML Namespaceをサポートします。XML Schemaは、将来のリリースでサポートされます。

XML Parser for Java バージョンバージョンバージョンバージョン 2以上での以上での以上での以上での JDK 1.1.xの使用の使用の使用の使用

質問質問質問質問XML Parser for Java バージョン 2以上で JDK 1.1.xを使用できますか ?

回答回答回答回答XML Parser for Java のバージョン 2は、Java2とは関連がありません。これは、XML Parser for Java バージョン 1とは下位互換性がなく、XSLTをサポートしていることを示します。XML Parser for Javaバージョン 2以上では JDK 1.1.xは正常に動作します。

16-72 Oracle8iアプリケーション開発者ガイド - XML Vol.2

Page 97: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

XML Parserに関連する一般的な質問

ページでの結果のソートページでの結果のソートページでの結果のソートページでの結果のソート

質問質問質問質問100のレコードを、一度に 10ずつ表示するとします。各列名にリンクを作成し、その列に基づいて、クリックによってページごとにデータをソートする必要があります。どうすればいいですか ?

回答回答回答回答目的によって方法は異なります。Internet Explorer 5.0専用にページを作成して XMLデータを受け取る場合、Microsoft社の XSLを使用してページ内でデータをソートできます。その他のブラウザ用にページを作成し、そのブラウザがデータを HTMLで受け取る場合、XSQLスクリプトでソート・パラメータを設定し、このパラメータを ORDER BY句で使用する必要があります。skip-rowsパラメータとともに渡します。

XML Parser for Javaの実行に必要なの実行に必要なの実行に必要なの実行に必要な Oracle8i

質問質問質問質問XML Parser for Javaの実行に Oracle8iは必要ですか ?

回答回答回答回答XML Parser for Javaは、サポートされている Java VMのすべてのバージョンで使用できます。Oracle 8iと異なる点は、データベースにロードして、内部 JVMである Oracle 8i JVMを使用できることのみです。その他のデータベースのバージョンまたはサーバーでは、外部JVM内で実行し、必要に応じて JDBCを介してデータベースに接続します。

XMLファイルでのエンコーディングの動的な設定ファイルでのエンコーディングの動的な設定ファイルでのエンコーディングの動的な設定ファイルでのエンコーディングの動的な設定

質問質問質問質問XMLドキュメントでエンコーディングを動的に設定できますか ?

回答回答回答回答できません。仕様のとおりに、ドキュメント内で適切なエンコーディング宣言を含める必要があります。setEncoding()を使用して、ドキュメントの入力にエンコーディングを設定することはできません。SetEncoding()および oracle.xml.parser.v2.XMLDocumentを使用して、出力に正しいエンコーディングを設定します。

XML Parser for Javaの使用 16-73

Page 98: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

XML Parserに関連する一般的な質問

文字列の解析文字列の解析文字列の解析文字列の解析

質問質問質問質問文字列を解析する方法を教えてください。

回答回答回答回答文字列に含まれている XMLドキュメントを直接解析する方法は現在はありません。文字列は、解析する前に InputStreamまたは InputSourceに変換する必要があります。簡単な方法は、文字列内のバイトを使用して ByteArrayInputStreamを生成することです。

XMLドキュメントの表示ドキュメントの表示ドキュメントの表示ドキュメントの表示

質問質問質問質問XMLドキュメントを表示する方法を教えてください。

回答回答回答回答Internet Explorer 5ブラウザを使用している場合、直接 XMLドキュメントを表示できます。それ以外のブラウザの場合、XML Parserの XSLT Processorを使用すると、XSLスタイルシートを使用して HTMLドキュメントを作成できます。Oracle XML Transviewer Beansを使用しても、XMLドキュメントを表示できます。

System.out.primtln()および特殊文字および特殊文字および特殊文字および特殊文字

質問質問質問質問System.out.println()を特殊文字のエンコーディングに使用すると問題があります。

回答回答回答回答System.out.println()は使用できません。OutputStreamWriterなど、エンコーディングを識別する出力ストリームを使用する必要があります。OutputStreamWriteを構築して、write(char[], int, int)メソッドを使用して出力します。

/* 例 */OutputStreamWriter out = new OutputStreamWriter(System.out, "8859_1");/* ISO 8859-1用のJavaエンコーディング文字列です。*/

16-74 Oracle8iアプリケーション開発者ガイド - XML Vol.2

Page 99: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

XML Parserに関連する一般的な質問

文字データからのアンパサンド(文字データからのアンパサンド(文字データからのアンパサンド(文字データからのアンパサンド(&)の取得)の取得)の取得)の取得

質問質問質問質問文字データからアンパサンド(&)を取得する方法を教えてください。

回答回答回答回答XMLデータではアンパサンドをそのまま使用できません。かわりに、エンティティ &amp;を使用する必要があります。このエンティティは、XML標準で定義されています。

文字列データ型からの文字列データ型からの文字列データ型からの文字列データ型からの XMLの解析の解析の解析の解析

質問質問質問質問文字列データ型から XMLを解析する方法を教えてください。

回答回答回答回答次の例を参照してください。

/* xmlDocはXMLの文字列です。*/byte aByteArr [] = xmlDoc.getBytes();ByteArrayInputStream bais = new ByteArrayInputStream (aByteArr, 0, aByteArr.length);domParser.parse(bais);

XMLドキュメントから文字列へのデータの取得ドキュメントから文字列へのデータの取得ドキュメントから文字列へのデータの取得ドキュメントから文字列へのデータの取得

質問質問質問質問XMLドキュメントから文字列にデータを取得する方法を教えてください。

回答回答回答回答次に例を示します。

XMLDocument Your Document;:StringWriter sw = new StringWriter();PrintWriter pw = new PrintWriter(sw);YourDocument.print(pw);String YourDocInString = sw.toString();

XML Parser for Javaの使用 16-75

Page 100: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

XML Parserに関連する一般的な質問

エスケープの出力の無効化エスケープの出力の無効化エスケープの出力の無効化エスケープの出力の無効化

質問質問質問質問XML Parser for Javaはエスケープの出力の無効化をサポートしますか ?

回答回答回答回答サポートします。バージョン 2.022以降の XML Parser for Javaは、xsl:textによってエスケープの出力を無効にするオプションを提供します。

Oracle 8.0.5でのでのでのでの XML Parser for Javaの使用の使用の使用の使用

質問質問質問質問XML Parser for Javaは、Oracle 8iでしか使用できないのですか ? Oracle 8.0で使用できますか ?

回答回答回答回答XML Parser for Javaは、サポートされている Java VMのすべてのバージョンで使用できます。Oracle8iと異なる点は、データベースにロードして、内部 JVMである Oracle8i JVMを使用できることのみです。8.0.5では、外部で実行し、JDBCを介して接続します。

複数の複数の複数の複数の XMLドキュメントのデリミタ付けドキュメントのデリミタ付けドキュメントのデリミタ付けドキュメントのデリミタ付け

質問質問質問質問複数の XMLドキュメントを単一の文字列として読み込む(および分離する)必要があります。解決策の 1つとして、XMLドキュメント内には存在しないことが確実ないくつかの(プログラムによって生成された)特殊文字を使用して、これらの XMLドキュメントにデリミタを付けることができます。その後、個々のドキュメントを簡単にトークン化して、必要に応じて取得 /解析できます。

このような方法は行われたことがありますか ?デリミタとして使用できる文字の提案はありますか(たとえば、#x0~ #x8の範囲の文字は XMLドキュメント内に存在できますか)?

回答回答回答回答正当性に関しては、文字を 8ビットに制限する場合は #x0~ #x8、#xB、#xC、#xEおよび#xFは正当ではありません。ただし、これはドキュメントを事前処理し、すべてのパーサーがすべての不当な文字を拒否するわけではないという、例外に依存しない場合です。

その後、要素をドキュメントに追加できます。

16-76 Oracle8iアプリケーション開発者ガイド - XML Vol.2

Page 101: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

XML Parserに関連する一般的な質問

XMLおよびエンティティ参照およびエンティティ参照およびエンティティ参照およびエンティティ参照 : XML Parser for Java

質問質問質問質問1. XML Parser for Javaは、&[whatever]などのエンティティ参照を拡張しません。かわりに、すべての値を NULLにします。拡張させる方法を教えてください。

2. 内部エンティティに(スウェーデン語の文字…„÷などの)国際化文字は指定できないようです。この問題を解決する方法を教えてください。

回答回答回答回答1. エンティティ参照の処理に関しては、多くのリグレッション・テストが正常に行われているため、エンティティの定義 /使用に単純なエラーがあると思われます。単純なエラーには、「 ]> Alpha, then &status」などがあります。

2. キャラクタ・セットのエンコーディングを何語に設定する必要があるのですか ?

DDLを挿入せずにを挿入せずにを挿入せずにを挿入せずに XMLドキュメントを分割して格納する方法ドキュメントを分割して格納する方法ドキュメントを分割して格納する方法ドキュメントを分割して格納する方法

質問質問質問質問1. 任意の XMLドキュメントを分割して、挿入する DDLを作成せずにデータベースに格納

することができますか ?

2. 問合せにおいて、XMLドキュメントの階層を検索することは可能ですか ?

回答回答回答回答1. できません。既存のスキーマがあるか、または XMLから DDLを作成するスタイルシー

トが存在している必要があります。

2. Oracle8iリリース 8.1.6の interMedia Textからは、これを行うことができます。

XMLドキュメントのマージドキュメントのマージドキュメントのマージドキュメントのマージ

質問質問質問質問2つの XMLドキュメントをマージする方法を教えてください。

回答回答回答回答現在の DOMの仕様では行うことができません。DOM2の仕様では、できるようになる可能性があります。

XML Parser for Javaの使用 16-77

Page 102: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

XML Parserに関連する一般的な質問

これを行うには、DOMによる方法か、XSLTベースの方法を使用できます。DOMを使用する場合、所有者エラーを回避するために、他のドキュメントにノードを追加する前に、1つのドキュメントからノードを削除する必要があります。

次に、XSLTベースの方法の例を示します。次の 2つの XMLソース・ファイルがあるとします。

demo1.xml

<messages> <msg> <key>AAA</key> <num>01001</num> </msg> <msg> <key>BBB</key> <num>01011</num> </msg></messages>

demo2.xml

<messages> <msg> <key>AAA</key> <text>This is a Message</text> </msg> <msg> <key>BBB</key> <text>This is another Message</text> </msg></messages>

一致する「<key>」の値に基づいて demo1.xmlを demo2.xmlに結合するスタイルシートを次に示します。

demomerge.xsl

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"><xsl:output indent="yes"/><xsl:variable name="doc2" select="document('demo2.xml')"/> <xsl:template match="@*|node()"> <xsl:copy> <xsl:apply-templates select="@*|node()"/> </xsl:copy> </xsl:template><xsl:template match="msg"> <xsl:copy> <xsl:apply-templates select="@*|node()"/>

16-78 Oracle8iアプリケーション開発者ガイド - XML Vol.2

Page 103: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

XML Parserに関連する一般的な質問

<text><xsl:value-of select="$doc2/messages/msg[key=current()/key]/text"/></text> </xsl:copy></xsl:template></xsl:stylesheet>

コマンドライン「oraxsl」を使用してこれをテストする場合、次のとおり行います。

$ oraxsl demo1.xml demomerge.xsl

次のようなマージ結果を取得します。

<messages> <msg> <key>AAA</key> <num>01001</num> <text>This is a Message</text> </msg> <msg> <key>BBB</key> <num>01011</num> <text>This is another Message</text> </msg></messages>

2つの表の間にある同等のデータベースによる「結合」ほど、サイズが大きいファイルには効果的ではありません。ただし、単に「Cannot Find Class(クラスが見つかりません)」というエラーに対処するために XMLファイルを使用する場合には有効です。

タグの値の取得タグの値の取得タグの値の取得タグの値の取得

質問質問質問質問XMLドキュメントの解析に SAXを使用しています。特定のタグの値を取得する方法を教えてください。たとえば、Javaの場合、titleの値を取得する方法を教えてください。 startElementメソッド、endElementメソッドおよび charactersメソッドがあることは知っています。

回答回答回答回答SAXによる解析の間、要素の値は、startElementイベントの後から対応する endElementイベントがコールされるまでに通知された文字の連結になります。

XML Parser for Javaの使用 16-79

Page 104: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

XML Parserに関連する一般的な質問

ユーザーへのユーザーへのユーザーへのユーザーへの JAVASYSPRIVの付与の付与の付与の付与

質問質問質問質問Windows NT 4.0上で Oracle XML Parser for Javaを使用しています。外部 DTDを使用してXMLドキュメントを解析しているとき、次のエラーが戻されます。

<!DOCTYPE listsamplereceipt SYSTEM"file:/E:/ORACLE/utl_file_dir/dadm/ae.dtd">java.lang.SecurityExceptionatoracle.aurora.rdbms.SecurityManagerImpl.checkFile(SecurityManagerImpl.java)atoracle.aurora.rdbms.SecurityManagerImpl.checkRead(SecurityManagerImpl.java)atjava.io.FileInputStream.<init>(FileInputStream.java)atjava.io.FileInputStream.<init>(FileInputStream.java)atsun.net.www.MimeTable.load(MimeTable.java)atsun.net.www.MimeTable.<init>(MimeTable.java)atsun.net.www.MimeTable.getDefaultTable(MimeTable.java)atsun.net.www.protocol.file.FileURLConnection.connect(FileURLConnection.java)atsun.net.www.protocol.file.FileURLConnection.getInputStream(FileURLConnection.java)atjava.net.URL.openStream(URL.java)atoracle.xml.parser.v2.XMLReader.openURL(XMLReader.java:2313)atoracle.xml.parser.v2.XMLReader.pushXMLReader(XMLReader.java:176)at...

この原因を教えてください。

回答回答回答回答このコードを実行しているユーザーが外部ファイルまたは URLをオープンできるように、このユーザーに JAVASYSPRIVを付与します。

他の他の他の他の XMLファイルへの外部ファイルへの外部ファイルへの外部ファイルへの外部 XMLファイルの挿入ファイルの挿入ファイルの挿入ファイルの挿入 : 解析済外部エンティティ解析済外部エンティティ解析済外部エンティティ解析済外部エンティティ

質問質問質問質問1. 外部 XMLファイルを他の XMLファイルへ挿入しようとしています。Oracle Parser for

Javaは、解析済外部エンティティをサポートしますか ?

2. 当社のアプリケーションのリリース 10.7および 11.0を持つ顧客に出荷された Oracle Parser for Javaのバージョンが 1.0であるため、バージョン 1.0を使用しています。バージョン 1.0でこれが可能ですか ?それとも、これを行う他のコード例がありますか ?

ファイル b.xmlを次の形式にすることができません。

<?xml version="1.0" ?><b>

16-80 Oracle8iアプリケーション開発者ガイド - XML Vol.2

Page 105: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

XML Parserに関連する一般的な質問

<ok/></b>

Oracle XML Parserには、XMLファイルを解析して解析済の出力を参照できるユーティリティが付属していますか ?

回答回答回答回答1. IE 5.0は、XMLファイルを解析し解析済の出力を表示します。HTMLページをロードするようにファイルをロードしてください。

IE5でのブラウズおよび Oracle XML Parserによる解析の両方に、次の構文が使用できます。これは Oracle XML Parserのバージョン 1.0でも確実に動作しますが、バージョン 1.0より高速な最新のバージョンの XML Parserを使用する必要があります。

ファイル : a.xml

<?xml version="1.0" ?><!DOCTYPE a [<!ENTITY b SYSTEM "b.xml">]> <a>&b;</a>

ファイル : b.xml

<ok/>

a.xmlをブラウズ /解析すると、次の文が返ります。

<a> <ok/></a>

2. 断言はできません。解析済外部エンティティは、整形式のドキュメント・フラグメントである必要があるのみです。CLASSPATHにある次のプログラム(バージョン 1.0のxmlparser.jarの場合)には、解析および解析済ドキュメントの出力が示されています。ここでは、文字列から解析していますが、URLが指定される場合は、ファイルからの解析にも同じメカニズムが使用されます。

import oracle.xml.parser.*;import java.io.*;import java.net.*;import org.w3c.dom.*;import org.xml.sax.*;/*** 文字列からのXMLファイルの単純な解析例です。** 成功した場合は結果を出力します。**** 使用例: java ParseXMLFromString <hello><world/></hello>*/public class ParseXMLFromString {

XML Parser for Javaの使用 16-81

Page 106: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

XML Parserに関連する一般的な質問

public static void main( String[] arg ) throws IOException, SAXException { String theStringToParse = "<?xml version='1.0'?>"+ "<hello>"+ " <world/>"+ "</hello>"; XMLDocument theXMLDoc = parseString( theStringToParse ); // ドキュメントを標準出力に出力します。 theXMLDoc.print(System.out); } public static XMLDocument parseString( String xmlString ) throws IOException, SAXException { XMLDocument theXMLDoc = null; // ドキュメントを解析するためにoracle.xml.parser.v2.DOMParserを作成します。 XMLParser theParser = new XMLParser(); // 文字列上で入力ストリームをオープンします。 ByteArrayInputStream theStream = new ByteArrayInputStream( xmlString.getBytes() ); // パーサーを、非検証モードで動作するように設定します。 theParser.setValidationMode(false); try { // InputStreamからのドキュメントを解析します。 theParser.parse( theStream ); // パーサーから解析済のXMLドキュメントを取得します。 theXMLDoc = theParser.getDocument(); } catch (SAXParseException s) { System.out.println(xmlError(s)); throw s; } return theXMLDoc; } private static String xmlError(SAXParseException s) { int lineNum = s.getLineNumber(); int colNum = s.getColumnNumber(); String file = s.getSystemId(); String err = s.getMessage(); return "XML parse error in file " + file + "\n" + "at line " + lineNum + ", character " + colNum + "\n" + err; }}

16-82 Oracle8iアプリケーション開発者ガイド - XML Vol.2

Page 107: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

XML Parserに関連する一般的な質問

OraXSL Parser

質問質問質問質問oracle.xml.parser.v2.OraXSLはどこからダウンロードできますか ?

回答回答回答回答これは、統合されている XML Parser for Javaバージョン 2.0リリース以上の一部です。XML Parser、DOM、XPathの実装および XSLTエンジンは、単一のパッケージに統合されています。

XML Parser for Javaの使用 16-83

Page 108: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

XSLT Processorおよび XSLスタイルシート

XSLT Processorおよびおよびおよびおよび XSLスタイルシートスタイルシートスタイルシートスタイルシート

XSLでのでのでのでの HTMLエラーエラーエラーエラー

質問質問質問質問何が問題であるのかわかりません。次に news_xsl.xslファイルを示します。

<?xml version ="1.0"?><xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl"> <xsl:template match="/"> <HTML> <HEAD> <TITLE> Sample Form </TITLE> </HEAD> <BODY> <FORM> <input type="text" name="country" size="15"> </FORM> </BODY> </HTML> </xsl:template></xsl:stylesheet>

ERROR:End tag 'FORM' does not match the start tag 'input'. Line 14, Position 12 </FORM>-----------^news.xml<?xml version="1.0" ?><?xml-stylesheet type="text/xsl" href="news_xsl.xsl"?><GREETING/>

回答回答回答回答HTMLとは異なり、XMLではすべての開始タグに終了タグが必要であることを理解する必要があります。したがって、この場合の入力にも、対応する終了タグを含める必要があります。これを解決するには次のとおりスクリプトを変更します。

<FORM><input type="text" name="country" size="15"> </input></FORM>

または

<FORM><input type="text" name="country" size="15"/></FORM>

16-84 Oracle8iアプリケーション開発者ガイド - XML Vol.2

Page 109: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

XSLT Processorおよび XSLスタイルシート

さらに、HTMLとは異なり XMLではタグの大文字 /小文字が識別されることを理解しておく必要もあります。これらのことに注意してください。

<xsl:output method="html"/>のサポートのサポートのサポートのサポート

質問質問質問質問出力メソッド「html」は、XML/XSL Parserの最近のバージョンでサポートされていますか ? <BR>タグを <xsl:output method="xml"/>宣言で使用しようとしましたが、XMLドキュメントが整形式 でないという XSLExceptionエラー・メッセージが表示されました。そこで、出力メソッド宣言 <xsl:output method="html"/>を試してみましたが、同じ結果になりました。

使用した単純な XSLスタイルシートを次に示します。

<?xml version="1.0"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method="html"/> <xsl:template match="/"> <HTML> <HEAD></HEAD> <BODY> <P> Blah blah<BR> More blah blah<BR> </P> </BODY> </HTML> </xsl:template>

質問は、<IMG>、<BR>などの整形式でないタグを XSLスタイルシートでどのように使用するのかということです。

回答回答回答回答<xsl:output>のすべてのオプションはサポートされています。ここでの問題は、使用している XSLスタイルシートが整形式の XMLドキュメントである必要があることです。このため、使用しているすべての <BR>要素のかわりに、<BR/>を使用する必要があります。<xsl:output method="html"/>は、XSLTエンジンが変換の結果を書き出すときに、適切なHTMLドキュメントを要求します。XSLTエンジンは、整形式の XMLを読み込む必要があります。

質問質問質問質問前述の質問の回答に関して質問があります。XMLから HTMLへの変換を行う XSLスタイルシートがあります。すべて正常に動作しますが、整形式でない HTMLタグに対してのみ正常に動作しません。前述の例を使用して次のとおり指定するとします。

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"><xsl:output method="html"/>......<input type="text" name="{NAME}" size="{DISPLAY_LENGTH}" maxlength="{LENGTH}"></input>......</xsl:stylesheet>

XML Parser for Javaの使用 16-85

Page 110: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

XSLT Processorおよび XSLスタイルシート

これは HTMLを次の書式でレンダリングします。

<HTML>......<input type="text" name="in1" size="10" maxlength="20"/>......</HTML>

IEはこれを処理できますが、Netscapeは処理できません。ブラウザ間で完全に互換性のある HTMLを、XSLを使用して生成する方法はありますか ?

回答回答回答回答質問において、次のタグを使用しているとします。

<input ... />

次のタグは使用していません。

<input>

この場合は、HTML出力は行われていないようなので、XSLProcessor.processXSL()をコールする方法が誤っているようです。次の構文を使用してください。

void processXSL(style,sourceDoc,PrintWriter)

次の構文は使用しないでください。

DocumentFragment processXSL(style,sourceDoc)

これで正常に動作します。

Netscape 4.0: XSLによるによるによるによる <meta>タグの出力の回避タグの出力の回避タグの出力の回避タグの出力の回避

質問質問質問質問<xsl:output method="html" encoding="iso-8859-1" indent = "no" />を使用しています。XSLTが先頭に <META http-equiv="Content-Type" content="text/html; charset=iso-8859-1">を出力しないようにできますか ? Netscape 4.0ではこの文の処理に問題があります。ページが 2回レンダリングされます。

回答回答回答回答XSLT 1.0勧告のセクション 16.2(「HTML Output Method」)では、HEAD要素がある場合は、HTML出力メソッドは、実際に使用されているキャラクタのエンコーディングを指定して、HEAD要素の開始タグの直後にMETA要素を追加すると記述されています。

次に例を示します。

<HEAD><META http-equiv="Content-Type" content="text/html; charset=EUC-JP">

16-86 Oracle8iアプリケーション開発者ガイド - XML Vol.2

Page 111: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

XSLT Processorおよび XSLスタイルシート

したがって、すべての XSLT 1.0互換のエンジンにはこれを追加する必要があります。

質問質問質問質問Netscape 4.0には次のようなエラーがあります。

Mozillaは、メタエンコーディング・タグを検出すると、ページのレンダリングを停止してリフレッシュを行います。このため、画面の表示がちらつきます。おそらくサーブレットOutputstreamで置換を行う必要があるのですが、実行したくありません。代替策はありますか ?

回答回答回答回答次のような代替策が可能です。

� HTMLページに <HEAD>セクションを指定しないことです。XSLTの仕様によると、これによって <META>タグの挿入が抑制されます。

� 出力にmethod="HTML"は使用しないでください。<HTML>(大文字 /小文字の組合せにかかわらず)で始まる結果ツリーの仕様に従ってデフォルトで HTMLになるため、明示的にmethod="xml"またはmethod="text"を指定する必要があります。

どちらも簡単ではありませんが、対応策にはなります。

XSLエラー・メッセージエラー・メッセージエラー・メッセージエラー・メッセージ

質問質問質問質問XSLエラー・メッセージに関する詳細情報の参照先を教えてください。「XSL-1900: exception occurred」というエラーが表示されます。これは何を意味していますか ?この例外の原因をどこで調べることができますか ?

回答回答回答回答Javaを使用している場合、例外ルーチンを作成してエラーをトラップできます。JDeveloperなどのツールも有効です。

Oracleコンポーネントのエラー・メッセージは、通常はより簡単に理解できるようにしています。XSL-1900は、発生可能な内部エラーまたは不適切な使用を示します。このエラーが発生するコードの例を、サンプル XMLおよび DTDファイル(適切な場合)とともにお知らせください。

XML Parser for Javaの使用 16-87

Page 112: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

XSLT Processorおよび XSLスタイルシート

HTMLの生成の生成の生成の生成 : 「「「「<」文字」文字」文字」文字

質問質問質問質問user_tab_columns表の列名および次の XSLコードを使用して、データを入力するためのHTMLフォームを生成しようとしています。

<xsl:template match="ROW"><xsl:value-of select="COLUMN_NAME"/><: lt;INPUT NAME="<xsl:value-of select="COLUMN_NAME"/>></xsl:template>

「gt;」は「>」として生成されますが、「lt;」は「#60;」として生成されます。「<」文字を生成する方法を教えてください。

コメントコメントコメントコメント次の構文を使用すると正常に生成されます。

<xsl:text disable-output-escaping="yes">entity-reference</xsl:text>

oraxslでは正常に行われるがでは正常に行われるがでは正常に行われるがでは正常に行われるが XSLSample.javaでは正常に行われないでは正常に行われないでは正常に行われないでは正常に行われない HTMLででででの「の「の「の「<」の変換」の変換」の変換」の変換

質問質問質問質問XMLから HMTLを表示できません。XMLファイルの XMLタグ内に、HTMLフラグメントを次のとおり格納しています。

<PRE><body.htmlcontent><&#60;table width="540" border="0" cellpadding="0" cellspacing="0">&#60;tr>&#60;td>&#60;font face="Helvetica, Arial" size="2">&#60;!-- STILL IMAGE GOES HERE -->&#60;img src="graphics/imagegoeshere.jpg" width="200" height="175" align="right" vspace="0" hspace="7">&#60;!-- END STILL IMAGE TAG -->&#60;!-- CITY OR TOWN NAME GOES FIRST FOLLOWED BY TWO LETTER STATE ABBREVIATION -->&#60;b>City, state abbreviation&#60;/b> - &#60;!-- CITY OR TOWN NAME ENDS HERE -->&#60;!-- STORY TEXT STARTS HERE -->Story text goes here.. &#60;!-- STORY TEXT ENDS HERE -->&#60;/font>&#60;/td>&#60;/tr>&#60;/table></body.htmlcontent></PRE>

次の構文を XMLで使用します。

<xsl:value-of select="body.HTMLcontent" disable-output-escaping="yes"/>

16-88 Oracle8iアプリケーション開発者ガイド - XML Vol.2

Page 113: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

XSLT Processorおよび XSLスタイルシート

それでも、HTML出力は次のとおりになります。

<PRE>&#60;</PRE>

すべての HTMLタグがブラウザに表示されます。HTMLを適切に表示する方法を教えてください。

コメントコメントコメントコメント正常に表示されているようには見えません。すべての「<」は「#60;」になり、コード内では「#60;」の前にアンパサンド(&)が追加されます。ブラウザでもそのように表示されます。

さらに理解できないことに、これは oraxslでは正常に表示されますが、XSLSample.javaでは正常に表示されません。

回答回答回答回答これには理由があります。次に原因を示します。

� oraxslは、内部的に void XSLProcessor.processXSL (style,source,printwriter);を使用します。

� XSLSample.javaは、DocumentFragment XSLProcessor.processXSL (style,source);を使用します。

oraxslは、<xsl:output>、および妥当な XMLでない可能性がある出力の書出しに関連するすべてのオプション(出力のエスケープの無効化を含みます)をサポートします。XSLSample.javaは、完全な XML対 XMLツリーから戻されます。したがって出力がなく、結果の DOMツリー・フラグメントのみが返されているため、<xsl:output>またはエスケープの無効化は使用されません。

XSLTの例の例の例の例

質問質問質問質問XSLTの良い例または簡単なチュートリアルがあるサイトはありますか ?

回答回答回答回答次のサイトには、XML/XSLT/XPathに関する多くのチュートリアルがあります。

http://zvon.vscht.cz/ZvonHTML/Zvon/zvonTutorials_en.html

XML Parser for Javaの使用 16-89

Page 114: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

XSLT Processorおよび XSLスタイルシート

XSLTの機能の機能の機能の機能

質問質問質問質問1. Oracle XDKが実装する XSLTの機能のリストはありますか ?

2. XML Parser は、IE5よりも多くの機能勧告を実装しますか ? XML Parserの方が多くの機能を実装していると思います。<xsl:choose...および <xsl:if...は、XML Parserでは正常に動作しますが、IE5では見慣れないメッセージが戻されます。

回答回答回答回答1. XML Parserは、http://www.w3.org/TR/XSLTにあるW3Cの XSLTバージョン 1.0勧告をサポートしています。

2. そのとおりです。XML Parserは XSLT勧告に準拠しています。

XSLを使用したを使用したを使用したを使用した XMLドキュメントから他の形式への変換ドキュメントから他の形式への変換ドキュメントから他の形式への変換ドキュメントから他の形式への変換

質問質問質問質問XMLドキュメントをある形式から他の形式に、XSL(または XSLT)スタイルシートを使用して変換しようとしてます。これを Javaコードに組み込む前に、次のコマンドラインから変換をテストしようとしました。

> java oracle.xml.parser.v2.oraxsl jwnemp.xml jwnemp.xsl newjwnemp.xml

問題は、前述のコマンドを使用すると、変換済の XMLファイル(newjwnemp.xml)ではなく、jwnemp.xslからのコードを含むファイルが返されることです。この原因がわかりません。2つの入力ファイルを添付しました。

<?xml version="1.0"?> <employee_data> <employee_row> <employee_number>7950</employee_number> <employee_name>CLINTON</employee_name> <employee_title>PRESIDENT</employee_title> <manager>1111</manager> <date_of_hire>20-JAN-93</date_of_hire> <salary>125000</salary> <commission>1000</commission> <department_number>10</department_number> </employee_row> </employee_data>

<?xml version='1.0'?> <ROWSET xmlns:xsl="HTTP://www.w3.org/1999/XSL/Transform">

16-90 Oracle8iアプリケーション開発者ガイド - XML Vol.2

Page 115: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

XSLT Processorおよび XSLスタイルシート

<xsl:for-each select="employee_data/employee_row"> <ROW> <EMPNO><xsl:value-of select="employee_number"/></EMPNO> <ENAME><xsl:value-of select="employee_name"/></ENAME> <JOB><xsl:value-of select="employee_title"/></JOB> <MGR><xsl:value-of select="manager"/></MGR> <HIREDATE><xsl:value-of select="date_of_hire"/></HIREDATE> <SAL><xsl:value-of select="salary"/></SAL> <COMM><xsl:value-of select="commission"/></COMM> <DEPTNO><xsl:value-of select="department_number"/></DEPTNO> </ROW> </xsl:for-each> </ROWSET>

回答回答回答回答xmlns:xsl="..."名前空間宣言に、不適切な XSL名前空間の URIが指定されているため、ほとんどの場合この問題が発生します。

xmlns:xsl="http://www.w3.org/1999/XSL/Transform"を使用すると解決します。

xmlns:xsl="すべての他の文字列 "を使用すると、ご質問のような問題が発生します。

XSLに関する情報に関する情報に関する情報に関する情報

質問質問質問質問XSLの使用に関する情報が入手できません。どこで入手できますか ? XMLおよび XSLのファイルを入手して、このテクノロジを使用して実現できることを会社に示す必要があります。XMLのみでは、ユーザーにとってはあまり印象的ではありません。

回答回答回答回答入門的な XSL例は、次のページにあります。

http://metalab.unc.edu/xml/books/bible/updates/14.html

このページでは、XSLの要点が英語で説明されています。XSLは、実際は XMLファイル以上のものではありません。したがって、顧客に示してもそれほど印象的ではないと思います。XSLに関する主要なWebサイトもあります。

http://www.w3.org/style/XSL/

XML Parser for Javaの使用 16-91

Page 116: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

XSLT Processorおよび XSLスタイルシート

XSL Processorおよび複数の出力および複数の出力および複数の出力および複数の出力

質問質問質問質問1つの XMLおよび XSLから複数の結果を作成する XSL Processorについての記述を見たことがあります。これはどのように行われるのですか ?

回答回答回答回答XML Parser 2.0.2.8の <ora:output>のサポートによって処理されます。

XML/XSLに関する推奨書籍に関する推奨書籍に関する推奨書籍に関する推奨書籍

質問質問質問質問XML/XSLを理解するための推奨書籍はありますか ?

回答回答回答回答XMLテクノロジについて詳しく説明した記事、ホワイトペーパーおよび書籍は数多くあり、Webから入手できます。次に、最も有効なリソースを示します。

� 『XML, Java, and the Future of the Web by Jon Bosak』Sun Microsystems社(http://metalab.unc.edu/pub/sun-info/standards/xml/why/xmlapps.htm)

� 『XML for the Absolute Beginner』Mark Johnson、JavaWorld著(http://www.javaworld.com/jw-04-1999/jw-04-xml_p.html)

� 『XML And Databases』Ronald Bourret著(ダルムシュタット工科大学)(http://www.informatik.tu-darmstadt.de/DVS1/staff/bourret/xml/)

� 『XMLAndDatabases.htm』W3C

� XML仕様(http://www.w3.org/XML/)

� XML.com: XMLリソースおよびコメントの広範囲なコレクション(http://www.xml.com/)

� 『Annotated XML Specification』Tim Bray、XML.com著(http://www.xml.com/axml/testaxml.htm)

� 『The XML FAQ』W3C XML Special Interest Group作成(http://www.ucc.ie/xml/ XML.org): 企業が XMLデータを交換できる、XML DTDの業界情報公開機関

� http://xml.org/

� xDev: DataChannel XML開発者のページ(http://xdev.datachannel.com/)

16-92 Oracle8iアプリケーション開発者ガイド - XML Vol.2

Page 117: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

XSLT Processorおよび XSLスタイルシート

XDKのバージョン番号のバージョン番号のバージョン番号のバージョン番号

質問質問質問質問ダウンロードした XDKツールキットのバージョン番号はどのようにしてわかりますか ?

回答回答回答回答アーカイブ内、および Release Notesページにリンクされた readme.htmlを参照すると、完全なバージョン番号を確認できます。

XMLドキュメントへのバイナリ・データの挿入ドキュメントへのバイナリ・データの挿入ドキュメントへのバイナリ・データの挿入ドキュメントへのバイナリ・データの挿入

質問質問質問質問XMLドキュメントにバイナリ・データを挿入する方法を教えてください。

回答回答回答回答ドキュメントに直接バイナリ・データを挿入する方法はありません。ただし、これに対処するには 2つの方法があります。

� バイナリ・データは、異なるファイルに常駐する未解析の外部エンティティとして参照できます。

� バイナリ・データは、非エンコーディング(バイナリ・データを ASCIIデータに変換)して CDATAセクションに含めることができます。エンコーディング方法には、CDATAセクションに正当な文字のみを作成するように確認する必要があるという制限があります。

HTMLへのへのへのへの XMLの変換の変換の変換の変換

質問質問質問質問XMLファイルを HTMLファイルに変換する方法を教えてください。

回答回答回答回答XMLを HTMLにレンダリングするための XSLスタイルシートを作成する必要があります。任意の形式で HTMLドキュメントを作成し、ダミー・データを移入します。スタイルシートを記述した XMLドキュメントのデータを HTMLに移入する XSLTのコマンドによってこのデータを置き換えます。

XML Parser for Javaの使用 16-93

Page 118: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

XSLT Processorおよび XSLスタイルシート

HP/UXプラットフォーム用のプラットフォーム用のプラットフォーム用のプラットフォーム用の XML Developer's Kit

質問質問質問質問HP/UXプラットフォーム用の XML Parserまたは XDKをリリースする計画がありますか ?

回答回答回答回答XML Parser for C/C++ および Class Generator for C++ の HP-UX版は入手可能です。

16-94 Oracle8iアプリケーション開発者ガイド - XML Vol.2

Page 119: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

XML Class Generator for Ja

17

XML Class Generator for Javaの使用の使用の使用の使用

この章の内容は次のとおりです。

� XML Class Generator for Javaへのアクセス

� XML Class Generator for Javaの使用

� XML Class Generator for Javaの例

� 入力用 DTDの例

� XML Class Generator for Javaのサンプル・ファイル(sample/ディレクトリ内)

� XML Class Generator for Javaのサンプル(sample/ディレクトリ内)の実行方法

� XML Class Generator for Javaの Javaの例 1: SampleMain.java

� XML Class Generator for Javaの Javaの例 2: TestWidl.java

� XML Class Generator for Javaの XMLの例 2: DTD入力 - widl.out

� FAQ: Class Generator for Java

vaの使用 17-1

Page 120: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

XML Class Generator for Javaへのアクセス

XML Class Generator for JavaへのアクセスへのアクセスへのアクセスへのアクセスXML Class Generator for Javaは、Oracle8iに付属しています。

XML Class Generator for Javaは、$ORACLE_HOME/xdk/java/classgenにあります。

XML Class Generator for Javaの使用の使用の使用の使用XML Class Generator for Javaは、XML DTDから Javaソース・ファイルを作成します。これは、次のような状況で有効です。

� アプリケーションが、DTDに基づいて他のアプリケーションに XMLメッセージを送信する場合

� XMLドキュメントを構成するためのWebフォームのバックエンドとして使用する場合

Javaアプリケーションは、Class Generatorのクラスを使用して、入力したDTDに準拠するXMLドキュメントを構成、検証および出力できます。

また、XML Class Generator for Javaは、オプションでソース・ファイル内に Javadocコメントを生成します。XML Class Generatorには、Oracle XML Parser for Javaが必要です。

図 17-1に、XML Class Generator for Javaの使用方法の概要を示します。

図図図図 17-1 XML Class Generator for Java

XML Class Generator for Javaは、XML Parser for Javaと連携して機能します。XML Parser for Javaは、DTDを解析し、解析済ドキュメントを Class Generatorに渡します。

図 17-2に、XML Class Generator for Javaの使用方法を示します。

次に、XML Class Generator for Javaの操作を示します。

DTDに基づく�妥当なXMLドキュメント�

XML Class Generator for Java

Javaアプリケーション�

解析済�DTD

XML Parser for Java

JcJc

JcJc

DTDに基づく�Javaクラス�

(要素ごとに1クラス)�

DTD

17-2 Oracle8iアプリケーション開発者ガイド - XML Vol.2

Page 121: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

XML Class Generator for Javaの使用

1. 新しい ClassGenerator()クラスがインスタンス化され、generate()メソッドをコールします。使用可能な ClassGenerator()クラスのプロパティは次のとおりです。

� setGeneraterComments()(デフォルト = TRUE)

� setJavaPackage(string)(デフォルト = パッケージ指定なし)

� setOutputDirectory(string)(デフォルト = 現在のディレクトリ)

2. DTDを使用する場合、parseDTD()メソッドから getDocType()を使用して返されるDTDオブジェクトも入力されます。16-12ページの図 16-4「XML Parser for Java: DOMParser()」を参照してください。

3. generate()メソッドが Javaクラスを生成します。この Javaクラスは、XMLドキュメントを構築するために使用できます。

図図図図 17-2 XML Class Generator for Javaの使用方法の使用方法の使用方法の使用方法

参照参照参照参照 :

� 付録 C「XDK for Java: 仕様および早見表」

� 『Oracle8i XMLリファレンス・ガイド』

� 3-17ページの「Oracleの XMLコンポーネントを使用した XMLドキュメントの生成 : Java」

[DTDオブジェクト]新しい�

ClassGenerator()

generate()

Javaクラス�

使用可能なプロパティ:· setGenerateComments() [デフォルト = TRUE]· setJavaPackage(String) [デフォルト = パッケージなし]· setOutputDirectory(String) [デフォルト = 現在のディレクトリ]· setSerializationMode(boolean) · setValidationMode(boolean)

getDocType()を使用して�parseDTD()から戻される�

これらを使用�してXMLドキュ�メントを構築�する�

XML Java Class Generator

XML Class Generator for Javaの使用 17-3

Page 122: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

XML Class Generator for Javaの例

XML Class Generator for Javaの例の例の例の例この項では、次のことに関する例を示します。

� XML Class Generator for Javaを使用して、DTDを処理し、DTD内の要素用のクラスを生成する方法

� 要素クラス・メソッドを使用して、妥当な XMLドキュメントを構成する方法

この項には、次の例が含まれます。

� XML Class Generator for Javaの DTDの例 1: 従業員データ

� XML Class Generator for Javaの例 1: Javaクラスを生成するための DTDの処理

� XML Class Generator for Javaの例 2: Javaクラスからの妥当な XMLドキュメントの作成

� XML Class Generator for Javaの例 3: Javaアプリケーションによって構築されるXMLドキュメント

入力用入力用入力用入力用 DTDの例の例の例の例従業員データ用の DTDファイル employee.dtdが、Class Generatorへの入力として使用されます。この場合、DTDは、XMLドキュメント・ルートを EMPに、行要素をEMP_ROWに指定します。EMPは、1つ以上の EMP_ROWで構成されます。

各 EMP_ROWには、従業員番号用に必要な EMPNO属性に加え、従業員名用の ENAME、職種用の JOB、マネージャ用のMGRなどのいくつかのオプション属性が含まれます。オプション属性には、要素定義で「?」が後ろに付きます。

XML Class Generator for Javaのののの DTDの例の例の例の例 1: 従業員データ従業員データ従業員データ従業員データ<!-- 従業員データ用DTD --> <!ELEMENT EMP (EMP_ROW)*> <!ELEMENT EMP_ROW (EMPNO, ENAME?, JOB?, MGR?, HIREDATE?, SAL?, COMM?, DEPTNO?)> <!ATTLIST EMP_ROW ROWNO CDATA #REQUIRED> <!ELEMENT EMPNO (#PCDATA)> <!ELEMENT ENAME (#PCDATA)> <!ELEMENT JOB (#PCDATA)> <!ELEMENT MGR (#PCDATA)> <!ELEMENT HIREDATE (#PCDATA)> <!ELEMENT SAL (#PCDATA)> <!ELEMENT COMM (#PCDATA)> <!ELEMENT DEPTNO (#PCDATA)>

17-4 Oracle8iアプリケーション開発者ガイド - XML Vol.2

Page 123: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

入力用 DTDの例

XML Class Generator for Javaの例の例の例の例 1: Javaクラスを生成するためのクラスを生成するためのクラスを生成するためのクラスを生成するための DTDの処理の処理の処理の処理次の例では、DTDを処理し、DTDの要素に対応するクラスを生成します。17-4ページの「XML Class Generator for Javaの DTDの例 1: 従業員データ」に示すとおり、DTDに対して

Class Generatorを実行すると、EMP、EMP_ROW、EMPNO、ENAMEなどの各要素用のJavaクラスが作成されます。

Javaアプリケーションは、これらのクラスに対して定義されたメソッドを使用して、従業員データを含む妥当な XMLドキュメントを作成できます。

import java.io.*;import java.net.*;import oracle.xml.parser.*;import oracle.xml.classgen.*;import org.w3c.dom.Element;

public class SampleMain{ public SampleMain() { } public static void main (String args[]) { // 引数を検証します。 if (args.length < 1) { System.out.println("Usage: java SampleMain "+ "[-root <rootName>] <fileName>"); System.out.println("fileName\t Input file, XML document or " + "external DTD file"); System.out.println("-root <rootName> Name of the root Element " + "(required if the input file is an external DTD)"); return ; } try // 外部DTDファイルをオープンします。 { // パーサーをインスタンス化します。 XMLParser parser = new XMLParser();

if (args.length == 3) parser.parseDTD(fileToURL(args[2]), args[1]); else parser.parse(fileToURL(args[0]));

XMLDocument doc = parser.getDocument(); DTD dtd = (DTD)doc.getDoctype(); String doctype_name = null;

XML Class Generator for Javaの使用 17-5

Page 124: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

入力用 DTDの例

if (args.length == 3) { doctype_name = args[1]; } else { // XMLドキュメントからルート要素名を取得します。 doctype_name = doc.getDocumentElement().getTagName(); }

// Javaファイルを生成します。 ClassGenerator generator = new ClassGenerator();

// コメントの生成をTRUEに設定します。 generator.setGenerateComments(true); // 出力ディレクトリを設定します。 generator.setOutputDirectory("."); // 妥当性検証モードをTRUEに設定します。 generator.setValidationMode(true);

// Javaソースを生成します。 generator.generate(dtd, doctype_name);

} catch (Exception e) { System.out.println ("XML Class Generator: Error " + e.toString()); e.printStackTrace(); } }

static public URL fileToURL(String sfile) { File file = new File(sfile); String path = file.getAbsolutePath(); String fSep = System.getProperty("file.separator"); if (fSep != null && fSep.length() == 1) path = path.replace(fSep.charAt(0), '/'); if (path.length() > 0 && path.charAt(0) != '/') path = '/' + path; try { return new URL("file", null, path); } catch (java.net.MalformedURLException e) { // ファイル・プロトコルが認識されない

17-6 Oracle8iアプリケーション開発者ガイド - XML Vol.2

Page 125: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

入力用 DTDの例

// 場合にのみ発生します。 throw new Error("unexpected MalformedURLException"); } }}

XML Class Generator for Javaの例の例の例の例 2: Javaクラスからの妥当なクラスからの妥当なクラスからの妥当なクラスからの妥当な XMLドキュメンドキュメンドキュメンドキュメントの作成トの作成トの作成トの作成

この Javaの例では、生成されたメソッドの使用方法を示します。emp_row1およびemp_row2という 2つの行要素が作成されます。empno1、ename1などの各列用の要素も作成されます。

XMLドキュメント・ツリーを構築するには、様々なデータ要素をツリー・ノードとして各行要素に割り当て、グループ化します。その後各行要素は、ドキュメント・ルート要素である EMPLISTにノードとして追加されます。

この例では、Class Generatorによって生成されたクラスは、大文字で表示されます。

import oracle.xml.classgen.*;import oracle.xml.parser.*;

public class CreateEmployees{ public static void main (String args[]) { try { EMP EMPLIST = new EMP(); DTD dtd = EMPLIST.getDTDNode(); //ベース・ドキュメントから //Static変数を取得します。

// 新しい従業員emp_row1 EMP_ROW emp_row1 = new EMP_ROW(1); // 行を作成し、ROWNOを設定します。 EMPNO empno1 = new EMPNO("7654"); ENAME ename1 = new ENAME("MARTIN"); JOB job1 = new JOB("SALESMAN"); MGR mgr1 = new MGR("7698"); HIREDATE hiredate1 = new HIREDATE("1981-09-28 00:00:00.0"); SAL sal1= new SAL("1250"); COMM comm1= new COMM("1400"); DEPTNO deptno1 = new DEPTNO("30");

// 新しい従業員emp_row2 EMP_ROW emp_row2 = new EMP_ROW(2); // 行を作成し、ROWNOを設定します。

XML Class Generator for Javaの使用 17-7

Page 126: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

入力用 DTDの例

EMPNO empno2 = new EMPNO("7788"); ENAME ename2 = new ENAME("SCOTT "); JOB job2 = new JOB("ANALYST "); MGR mgr1 = new MGR("7566"); HIREDATE hiredate2 = new HIREDATE("1987-04-19 00:00:00.0"); SAL sal2= new SAL("3000"); COMM comm2= new COMM(""); DEPTNO deptno2 = new DEPTNO("20");

emp_row1.addnode(empno1); // ツリー・ノードとしてデータをemp_row1に追加します。 emp_row1.addnode(ename1); ...

emp_row2.addnode(empno2); // ツリー・ノードとしてデータをemp_row2に追加します。 emp_row2.addnode(ename2); ... EMPLIST.addNode(emp1); // ツリー・ノードとしてemp_row1を // EMPLISTドキュメント・ルートに追加します。 EMPLIST.addNode(emp2); // ツリー・ノードとしてemp_row2を // EMPLISTドキュメント・ルートに追加します。

EMPLIST.validateContent(); EMPLIST.print(System.out); } catch (Exception e) { System.out.println(e.toString()); e.printStackTrace(); } }}

17-8 Oracle8iアプリケーション開発者ガイド - XML Vol.2

Page 127: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

入力用 DTDの例

XML Class Generator for Javaの例の例の例の例 3: Javaアプリケーションによって構築されるアプリケーションによって構築されるアプリケーションによって構築されるアプリケーションによって構築されるXMLドキュメントドキュメントドキュメントドキュメント

前述の「XML Class Generator for Javaの例 2: Javaクラスからの妥当な XMLドキュメントの作成」に示す Javaアプリケーションは、次のような XMLドキュメントを作成します。

<?xml version="1.0"?><!DOCTYPE EMP SYSTEM "employee.dtd"><EMP> <EMP_ROW ROWNO = "1"> <EMPNO>7654</EMPNO> <ENAME>MARTIN</ENAME> <JOB>SALESMAN</JOB> <MGR>7698</MGR> <HIREDATE>1981-09-28 00:00:00.0</HIREDATE> <SAL>1250</SAL> <COMM>1400</COMM> <DEPTNO>30</DEPTNO> /EMP_ROW> <EMP_ROW ROWNO = "2"> <EMPNO>7788</EMPNO> <ENAME>SCOTT</ENAME> <JOB>ANALYST</JOB> <MGR>7566</MGR> <HIREDATE>1987-04-19 00:00:00.0</HIREDATE> <SAL>3000</SAL> <COMM></COMM> <DEPTNO>20</DEPTNO> </EMP_ROW></EMP>

XML Class Generator for Javaの使用 17-9

Page 128: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

XML Class Generator for Javaのサンプル・ファイル(sample/ディレクトリ内)

XML Class Generator for Javaのサンプル・ファイル(のサンプル・ファイル(のサンプル・ファイル(のサンプル・ファイル(sample/ディレクトリ内)ディレクトリ内)ディレクトリ内)ディレクトリ内)

表 17-1に、Oracleソフトウェアに付属するサンプル・ファイルを示します。これらのファイルは、$ORACLE_HOME/xdk/java/classgen/sampleディレクトリにあります。

XML Class Generator for Javaのサンプル(のサンプル(のサンプル(のサンプル(sample/ディレクトリディレクトリディレクトリディレクトリ内)の実行方法内)の実行方法内)の実行方法内)の実行方法

サンプル・プログラムを実行するには、sample/ディレクトリから次のコマンドを使用します。

make target 'demo'

その後、次の 3つの手順に従って、サンプル・コードを実行します。

1. SampleMainをコンパイルおよび実行して、Javaソース・ファイルを生成します。

「classgen.jar」、「xmlparserv2.jar」および現在のディレクトリを含むようにCLASSPATHを設定します。

� javac SampleMain.java

� java SampleMain -root WIDL Widl.dtd

または

� java SampleMain Widl.xml

2. SampleMainによって生成された次の Javaソース・ファイルをコンパイルします。

� BINDING.java

� CONDITION.java

表表表表 17-1 XML Class Generator for Java: サンプル・ファイル(サンプル・ファイル(サンプル・ファイル(サンプル・ファイル(sample/ディレクトリ内)ディレクトリ内)ディレクトリ内)ディレクトリ内)

サンプル・ファイル名サンプル・ファイル名サンプル・ファイル名サンプル・ファイル名 説明説明説明説明

SampleMain.java DTDに基づいて Javaソース・ファイルを生成するためのサンプル・アプリケーション

Widl.dtd サンプル DTD

Widl.xml Widl.dtdに基づくサンプル XMLファイル

TestWidl.java SampleMainによって生成された Javaソース・ファイルを使用して、XMLドキュメントを構成するためのサンプル・アプリケーション

Widl.out TestWidl.outによって出力された XMLドキュメント

17-10 Oracle8iアプリケーション開発者ガイド - XML Vol.2

Page 129: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

XML Class Generator for Javaのサンプル(sample/ディレクトリ内)の実行方法

� REGION.java

� SERVICE.java

� VARIABLE.java

� WIDL.java.

3. テスト・アプリケーションを実行して、XMLドキュメントを出力します。

� javac TestWidl.java

� java TestWidl

XML Class Generator for Javaのののの DTDの例の例の例の例 1: DTD入力入力入力入力 - widl.dtd次の例に示す widl.dtdは、XMLファイル widl.xmlが参照する DTDファイルです。

<!ELEMENT WIDL ( SERVICE | BINDING )* > <!ATTLIST WIDL NAME CDATA #IMPLIED VERSION (1.0 | 2.0 | ...) "2.0" BASEURL CDATA #IMPLIED OBJMODEL (wmdom | ...) "wmdom" >

<!ELEMENT SERVICE EMPTY> <!ATTLIST SERVICE NAME CDATA #REQUIRED URL CDATA #REQUIRED METHOD (Get | Post) "Get" INPUT CDATA #IMPLIED OUTPUT CDATA #IMPLIED >

<!ELEMENT BINDING ( VARIABLE | CONDITION | REGION )* > <!ATTLIST BINDING NAME CDATA #REQUIRED TYPE (Input | Output) "Output">

<!ELEMENT VARIABLE EMPTY> <!ATTLIST VARIABLE NAME CDATA #REQUIRED TYPE (String | String1 | String2) "String" USAGE (Function | Header | Internal) "Function" VALUE CDATA #IMPLIED MASK CDATA #IMPLIED NULLOK (True | False) #REQUIRED

XML Class Generator for Javaの使用 17-11

Page 130: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

XML Class Generator for Javaのサンプル(sample/ディレクトリ内)の実行方法

>

<!ELEMENT CONDITION EMPTY> <!ATTLIST CONDITION TYPE (Success | Failure | Retry) "Success" REF CDATA #REQUIRED MATCH CDATA #REQUIRED SERVICE CDATA #IMPLIED >

<!ELEMENT REGION EMPTY> <!ATTLIST REGION NAME CDATA #REQUIRED START CDATA #REQUIRED END CDATA #REQUIRED>

XML CLass Generator for Javaのののの XMLの例の例の例の例 1: XML入力入力入力入力 - widl.xmlこの XMLファイルは、SampleMain.javaを入力します。

<?xml version="1.0"?><!DOCTYPE WIDL SYSTEM "Widl.dtd"><WIDL> <SERVICE NAME="sname" URL="surl"/> <BINDING NAME="bname"/></WIDL>

XML Class Generator for Javaのののの Javaの例の例の例の例 1: SampleMain.javaSampleMain.javaは、入力した DTD、widl.dtdまたは widl.xmlに基づいて Javaソース・ファイルを生成します。

import java.io.*;import java.net.*;import oracle.xml.parser.v2.*;import oracle.xml.classgen.*;import org.w3c.dom.Element;

/** * XML Class Generatorを使用するサンプル・クラス */public class SampleMain{

17-12 Oracle8iアプリケーション開発者ガイド - XML Vol.2

Page 131: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

XML Class Generator for Javaのサンプル(sample/ディレクトリ内)の実行方法

public SampleMain() { }

public static void main (String args[]) { // 引数を検証します。 if (args.length < 1) { System.out.println("Usage: java SampleMain "+ "[-root <rootName>] <fileName>"); System.out.println("fileName\t Input file, XML document or " + "external DTD file"); System.out.println("-root <rootName> Name of the root Element " + "(required if the input file is an external DTD)"); return ; } try // XMLファイル/外部DTDファイルをオープンします。 { // パーサーをインスタンス化します。 DOMParser parser = new DOMParser(); XMLDocument doc = null; DTD dtd = null;

if (args.length == 3) { parser.parseDTD(fileToURL(args[2]), args[1]); dtd = (DTD)parser.getDoctype(); } else { parser.setValidationMode(true); parser.parse(fileToURL(args[0])); doc = parser.getDocument(); dtd = (DTD)doc.getDoctype(); }

String doctype_name = null;

if (args.length == 3) { doctype_name = args[1]; } else { /* XMLドキュメントからルート要素名を取得します。*/ doctype_name = doc.getDocumentElement().getTagName();

XML Class Generator for Javaの使用 17-13

Page 132: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

XML Class Generator for Javaのサンプル(sample/ディレクトリ内)の実行方法

}

// Javaファイルを生成します。 ClassGenerator generator = new ClassGenerator();

// コメントの生成をTRUEに設定します。 generator.setGenerateComments(true); // 出力ディレクトリを設定します。 generator.setOutputDirectory("."); // 妥当性検証モードをTRUEに設定します。 generator.setValidationMode(true);

// Javaソースを生成します。 generator.generate(dtd, doctype_name);

} catch (Exception e) { System.out.println ("XML Class Generator: Error " + e.toString()); e.printStackTrace(); } }

static public URL fileToURL(String sfile) { File file = new File(sfile); String path = file.getAbsolutePath(); String fSep = System.getProperty("file.separator"); if (fSep != null && fSep.length() == 1) path = path.replace(fSep.charAt(0), '/'); if (path.length() > 0 && path.charAt(0) != '/') path = '/' + path; try { return new URL("file", null, path); } catch (java.net.MalformedURLException e) { /* 仕様によると、これはファイル・プロトコルが認識されない場合にのみ 発生します。 */ throw new Error("unexpected MalformedURLException"); } }}

17-14 Oracle8iアプリケーション開発者ガイド - XML Vol.2

Page 133: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

XML Class Generator for Javaのサンプル(sample/ディレクトリ内)の実行方法

XML Class Generator for Javaのののの Javaの例の例の例の例 2: TestWidl.javaTestWidl.javaは、SampleMain.javaによって生成された Javaソース・ファイルを使用してXMLドキュメントを構成します。

import oracle.xml.classgen.*;import oracle.xml.parser.v2.*;

public class TestWidl{ public static void main (String args[]) { try { WIDL w1 = new WIDL(); DTD dtd = w1.getDTDNode(); w1.setNAME("WIDL1"); w1.setVERSION(WIDL.VERSION_1_0); SERVICE s1 = new SERVICE("Service1", "Service_URL"); s1.setINPUT("File"); s1.setOUTPUT("File");

BINDING b1 = new BINDING("Binding1"); b1.setTYPE(BINDING.TYPE_INPUT);

BINDING b2 = new BINDING("Binding2"); b2.setTYPE(BINDING.TYPE_OUTPUT);

VARIABLE v1 = new VARIABLE("Variable1", VARIABLE.NULLOK_FALSE); v1.setTYPE(VARIABLE.TYPE_STRING); v1.setUSAGE(VARIABLE.USAGE_INTERNAL); v1.setVALUE("value");

VARIABLE v2 = new VARIABLE("Variable2", VARIABLE.NULLOK_TRUE); v2.setTYPE(VARIABLE.TYPE_STRING1); v2.setUSAGE(VARIABLE.USAGE_HEADER);

VARIABLE v3 = new VARIABLE("Variable3", VARIABLE.NULLOK_FALSE); v3.setTYPE(VARIABLE.TYPE_STRING2); v3.setUSAGE(VARIABLE.USAGE_FUNCTION); v3.setMASK("mask");

CONDITION c1 = new CONDITION("CRef1", "CMatch1"); c1.setSERVICE("Service1"); c1.setTYPE(CONDITION.TYPE_SUCCESS);

CONDITION c2 = new CONDITION("CRef2", "CMatch2");

XML Class Generator for Javaの使用 17-15

Page 134: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

XML Class Generator for Javaのサンプル(sample/ディレクトリ内)の実行方法

c2.setTYPE(CONDITION.TYPE_RETRY);

CONDITION c3 = new CONDITION("CRef3", "CMatch3"); c3.setSERVICE("Service3"); c3.setTYPE(CONDITION.TYPE_FAILURE);

REGION r1 = new REGION("Region1", "Start", "End"); b1.addNode(r1); b1.addNode(v1); b1.addNode(c1); b1.addNode(v2); b2.addNode(c2); b2.addNode(v3); w1.addNode(s1); w1.addNode(b1); w1.addNode(b2); w1.validateContent(); w1.print(System.out); } catch (Exception e) { System.out.println(e.toString()); e.printStackTrace(); } }}

XML Class Generator for Javaのののの XMLの例の例の例の例 2: DTD入力入力入力入力 - widl.outこの XMLファイル widl.outは、TestWidl.javaによって構成および出力されます。

<?xml version = '1.0' encoding = 'ASCII'?><!DOCTYPE WIDL SYSTEM "file:/oracore/java/xml/ORACORE_MAIN_SOLARIS_990115_XMLCLASSGEN/sample/out/WIDL.dtd"><WIDL NAME="WIDL1" VERSION="1.0"> <SERVICE NAME="Service1" URL="Service_URL" INPUT="File" OUTPUT="File"/> <BINDING NAME="Binding1" TYPE="Input"> <REGION NAME="Region1" START="Start" END="End"/> <VARIABLE NAME="Variable1" NULLOK="False" TYPE="String" USAGE="Internal" VALUE="value"/> <CONDITION REF="CRef1" MATCH="CMatch1" SERVICE="Service1" TYPE="Success"/> <VARIABLE NAME="Variable2" NULLOK="True" TYPE="String1" USAGE="Header"/> </BINDING> <BINDING NAME="Binding2" TYPE="Output"> <CONDITION REF="CRef2" MATCH="CMatch2" TYPE="Retry"/> <VARIABLE NAME="Variable3" NULLOK="False" TYPE="String2" USAGE="Function" MASK="mask"/> </BINDING></WIDL>

17-16 Oracle8iアプリケーション開発者ガイド - XML Vol.2

Page 135: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

FAQ: Class Generator for Java

FAQ: Class Generator for Javaこの項では、XML Class Generator for Javaについての質問および回答を示します。

自動生成自動生成自動生成自動生成

質問質問質問質問XML Class Generator for Javaを使用して、サンプル DTDスキーマ用にいくつかのクラス・ファイルを生成しました。生成されたクラスを調べると、通常の方法(メンバーに値を提供する方法)によってインスタンスを構成する API、および XML表示を出力ストリームに出力する APIのみがありました。この機能は、期待していたほど完全なものではありません。ドキュメント・クラスには、XMLドキュメント・オブジェクトを使用し、様々なメンバーを自動的に移入するためのコンストラクタが含まれていると予想していました。

このような機能は存在しますか ?

回答回答回答回答現在、XML Class Generator for Javaには、このような機能はありません。XML Parser for Javaのみが、DOMツリーを構築できます。

XMLからからからから Javaへのオブジェクト・マッピングへのオブジェクト・マッピングへのオブジェクト・マッピングへのオブジェクト・マッピング

質問質問質問質問XMLをメタデータの格納用メディアとして使用する必要があります。このメタデータは、複雑なネスト構造で構成されます。XMLは、このような構造に適しています。システム起動時に、これらのすべてのメタデータに最初のクラス Javaオブジェクトとしてアクセスする必要があります。ただし、Oracle XML Parserなどの XMLパーサー上で実行するカスタム・コードを作成し、これらのオブジェクトのインスタンス(1つの XMLファイル -> 1つのインスタンス)を構築しないで、アクセスする必要があります。

理想的なインタフェースは、DTD/XMLスキーマおよび XMLファイルを XML Class Generator(XML Parser上で実行)に渡すと、メタデータ・オブジェクトをインスタンス化するための Javaソース・コードを出力するインタフェースです。

たとえば、meta.dtd(スキーマ)およびmeta.xmlがあり、これらをMeta.java.class Meta {public String metaName;public int numMeta;public Date dateMeta;}にマップする必要がある場合、meta.dtd(スキーマ)およびmeta.xmlに対して XML Class Generatorを実行し、次の種類のソース・コード出力を取得する必要があります。

MetaBuilder.javaclass MetaBuilder {public init() { Meta metaInstance = new Meta(); metaInstance.metaName = "Example1";

XML Class Generator for Javaの使用 17-17

Page 136: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

FAQ: Class Generator for Java

metaInstance.numMeta = 1; metaInstance.dateMeta = new Date("07/16/1999");}

これを行えるように Class Generatorの機能を拡張する予定はありますか ?この機能を使用すると、RMIで XMLドキュメントを送信するのではなく、ネットワークで Javaオブジェクトを送信することができます。

回答回答回答回答これに対する直接的な解決策はわかりません。これが実現すると、オラクル社の Class Generatorにとって大きな拡張となります。

DTD Class Generator: 機能する子クラス機能する子クラス機能する子クラス機能する子クラス

質問質問質問質問ある記事を構成する XML Class Generatorコード用のコードをポスト中、修正方法が不明なエラーが発生しました。プログラムは、XMLParserオブジェクトのインスタンス化を試行します。この XMLParserオブジェクトのクラスは、抽象クラスとして定義されています。このクラスのどの子クラスが、コードを実行するために機能しますか ?

回答回答回答回答XML Parser for Javaバージョン 1では、XMLParserは具体クラスでした。現在のバージョン 2では抽象クラスであり、DOMParserまたは SAXParserを構成する必要があります。この記事は、DOMParserを使用している可能性が高いといえます。

XML Class Generatorのインストールのインストールのインストールのインストール

質問質問質問質問XML Class Generator for Javaのインストール手順を教えてください。

回答回答回答回答基本的に、次の 2つの手順です。

1. XML Class Generator for Javaをダウンロードします。

2. /binディレクトリの classgen.jarおよびダウンロードした XML Parser for Javaのxmlparserv2.jarの両方を含むように CLASSPATHを設定します。

17-18 Oracle8iアプリケーション開発者ガイド - XML Vol.2

Page 137: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

FAQ: Class Generator for Java

XML Class Generator for Javaの役割の役割の役割の役割

質問質問質問質問XML Class Generator for Javaの役割を教えてください。

回答回答回答回答XML Class Generator for Javaは、XML DTDから Javaソース・ファイルを作成します。これは、アプリケーションが DTDに従って、または構成するWebフォームおよび XMLドキュメントのバックエンドとして他のアプリケーションに XMLメッセージを送信する必要がある場合に有効です。Javaアプリケーションは、これらのクラスを使用して、入力用DTDに準拠する XMLドキュメントを構成、検証および出力できます。この Class Generatorは、Oracle XML Parser for Javaと連携して機能します。XML Parser for Javaは、DTDを解析し、解析済ドキュメントを Class Generatorに渡します。

質問質問質問質問XML Class Generator for Javaを使用した XMLデータの取得方法を教えてください。

回答回答回答回答まず、JDBCの結果セットを使用して、データベースからデータを取得します。次に、XML Class Generatorによって生成されたクラスを使用して、オブジェクトをインスタンス化します。

XMLファイルに基づくオブジェクトの自動インスタンス化ファイルに基づくオブジェクトの自動インスタンス化ファイルに基づくオブジェクトの自動インスタンス化ファイルに基づくオブジェクトの自動インスタンス化 : XML Class Generatorの使用の使用の使用の使用

質問質問質問質問XMLファイルに基づいてオブジェクトを自動的にインスタンス化できますか ?

回答回答回答回答現在、クラスを生成し、そのクラスでコンストラクタ・メソッドをコールして各オブジェクトをインスタンス化するために使用できるのは、DTDのみです。

XML Class Generator for Javaの使用 17-19

Page 138: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

FAQ: Class Generator for Java

DTDのサポートのサポートのサポートのサポート

質問質問質問質問XML Class Generator for Javaは、すべての種類の DTDをサポートしますか ?

回答回答回答回答はい。XML Class Generator for Javaは、XML1.0に準拠するすべての種類の DTDをサポートします。

XML Class Generatorのサンプルの使用のサンプルの使用のサンプルの使用のサンプルの使用

質問質問質問質問「クラスが見つかりません」というエラーの修正方法を教えてください。

回答回答回答回答「クラスが見つかりません」というエラーを修正するためには、classgen.jarおよび

xmlparserv2.jarを CLASSPATHに含めてください。

Class Generator: 2回以上作成できないルート・オブジェクト回以上作成できないルート・オブジェクト回以上作成できないルート・オブジェクト回以上作成できないルート・オブジェクト

質問質問質問質問Class Generatorを使用して、DTDから Javaクラスのセットを生成しました。その後、引数として渡されたデータから XMLファイルを作成するために、これらのクラスを使用するJavaアプリケーションの作成を試みました。次のエラー・メッセージが表示されるため、CGDocumentから導出されたオブジェクトであるルート・オブジェクトを 2回以上作成できません。

oracle.xml.parser.XMLDOMException: Node doesn't belong to the current document

スター演算子(*)の処理方法を教えてください。アプリケーション起動時には、この要素が何回現れるかはわかりません。このため、element.addNode()のシーケンスを作成するための静的ループは構築していません。問題は、これらの一部が空になり、空の属性を持つ空の要素のセットを含む XMLドキュメントを取得することです。

回答回答回答回答毎回コンストラクタをコールすることによって、後続の XMLドキュメントを作成できます。整形式の XMLドキュメントは、複数のルート・ノードを持つことができません。このため、ドキュメント・ルートとして指定する要素に対しては、「*」を使用できません。

17-20 Oracle8iアプリケーション開発者ガイド - XML Vol.2

Page 139: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

FAQ: Class Generator for Java

Class Generator: DOM APIを使用したを使用したを使用したを使用した XMLファイルの新規作成ファイルの新規作成ファイルの新規作成ファイルの新規作成

質問質問質問質問DOM APIを使用して XMLファイルを作成する必要があります。テキスト・エディタで入力しないで、XMLファイルを作成する必要があります。

<xml> <future>is great</future></xml>

かわりに、DOM APIを使用して XMLファイルを作成する方法を教えてください。入力ファイルがある場合に、DOMを使用して XMLファイルを操作する例はありますが、入力ファイルがなく、タグ名およびその値がわかっている場合に、DOMを使用して XMLファイルを最初から作成するという例はありません。

回答回答回答回答最も簡単な方法は、XML Class Generator for Javaをダウンロードし、その Class Generatorに、作成する必要がある XMLドキュメントの DTDを指定することです。この Class Generatorは、DOMクラスを作成し、プログラムによって XMLドキュメントを作成します。ソフトウェアに付属のサンプルがあります。

XML Class Generator for Javaの使用 17-21

Page 140: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

FAQ: Class Generator for Java

17-22 Oracle8iアプリケーション開発者ガイド - XML Vol.2

Page 141: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

XSQL Serv

18

XSQL Servletの使用の使用の使用の使用

この章の内容は次のとおりです。

� XSQL Servletへのアクセス

� XSQL Servletを実行するために必要なこと

� XSQL Servletの機能

� Oracle XSQLページ : 設定および例

� CLASSPATHの適切な設定

� 接続定義の設定

� XSQLコマンドライン・ユーティリティの使用

� XSQL Page Processorの使用方法

� XSQL Page Processorアーキテクチャ

� 稼働中の XSQL Page Processor

� XSQL Page Processorによるアクション・ハンドラのアクションの処理方法

� XSQL Servletの例(demo/ディレクトリ内)

� demo/ディレクトリ内のデータの設定

� XSQL Servletの使用

� XSQLページの使用

� XSQL Page Processorのプログラム的な使用

� XSQLアクション・ハンドラのカスタマイズ

� XSQL ページでのカスタム XSQLアクション・ハンドラの使用

� ハンドラのカスタム XSQLアクション・ハンドラ要素の定義

� XSQLConfig.xmlを使用した環境のチューニング

� 制限事項

� FAQ - XSQL Servlet

letの使用 18-1

Page 142: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

XSQL Servletの入手方法

XSQL Servletの入手方法の入手方法の入手方法の入手方法XSQL Servletは、Oracle8iに付属しています。

XSQL Servletの機能の機能の機能の機能XSQL Servletは、XML Parser for Javaおよび XML SQL Utilityを使用して、SQL問合せ用の XMLページを生成します。XSQL Servletは、サーバー内の SQL、XMLおよび XSLTの機能を、通信メカニズムとしての HTTPプロトコルと組み合せて、次のタスクを実行できます。

� Web上のすべてのクライアント・デバイスからWebベースの情報要求を受信します。

� すべての場所から要求されたビジネス・データの論理ビューを問い合せます。

� XMLのデータグラムをWebを介してリクエスタに返すか、またはオプションで返します。

� 必要に応じて、情報を XML、HTMLまたは他のテキスト・フォーマットに変換します。

XSQL Servletを使用すると、基礎となる XMLコンポーネントの使用を自動化し、プログラミングを行わずに一般的な問題を解決できます。

Oracle XSQLページの概要ページの概要ページの概要ページの概要Oracle XSQLページはテンプレートです。SQLを十分に理解しているユーザーは、このテンプレートを使用して次の操作を宣言的に行うことができます。

� 1つ以上のパラメータ化された SQL問合せに基づいて、動的な XMLデータ・ページを作成します。

� 対応付けられた XSLTによる変換を使用してデータ・ページを変換し、XML、HTMLまたは他のテキストベースの形式で最終結果を生成します。

たとえば、今日 JFK空港に到着するすべてのフライトのリアルタイムの XMLダイアグラムを Oracle8iから提供するには、次の例のような AvailableFlightsToday.xsqlという名前の XSQLページを作成します。任意のテキスト・エディタを使用してください。

参照参照参照参照 : XSQL Servletの仕様および早見表については、付録 B「Oracle XML Parserおよび Class Generatorの言語間比較」を参照してください。

18-2 Oracle8iアプリケーション開発者ガイド - XML Vol.2

Page 143: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

XSQL Servletの機能

<?xml version="1.0"?><xsql:query connection="demo" xmlns:xsql="urn:oracle-xsql"> SELECT Carrier, FlightNumber, Origin, TO_CHAR(ExpectedTime,'HH24:MI') AS Due FROM FlightSchedule WHERE TRUNC(ExpectedTime) = TRUNC(SYSDATE) AND Arrived = 'N' AND Destination = '{@City}' ORDER BY ExpectedTime</xsql:query>

このファイルを保存し、次の URLをブラウズします。

http://yourcompany.com/AvailableFlightsToday.xsql?City=JFK

任意のWebサーバーに XSQL Servletをインストールし、そのサーバーの仮想ルート・ディレクトリに AvailableFlightsToday.xsqlファイルをコピーするのみで、目的が達成されます。

XSQLページでの問合せの結果は、自動的に XMLとしてマテリアライズされ、リクエスタに返されます。この XMLベースのデータグラムは、通常、他のサーバー・プログラムで処理するために要求されます。ただし、Internet Explorer 5.0などのブラウザを使用する場合、図 18-1に示すような XMLでの結果を直接表示できます。

XSQL Servletの使用 18-3

Page 144: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

XSQL Servletの機能

図図図図 18-1 XSQLページ(ページ(ページ(ページ(AvailableFlightsToday.xsq)問合せの)問合せの)問合せの)問合せの XML結果結果結果結果

図 18-1に示す正規の <ROWSET>および <ROW>の XML出力が、リクエスタが要求するXML形式でない場合、XSLTで記述されたスタイルシートを使用して、この XMLドキュメントを要求された形式に変換します。

通常、要求された形式は、文書型定義(DTD)によって伝送されます。DTDは、実際には、スキーマ定義です。DTDは、そのタイプのドキュメントが含むことができる XMLの内容を正式に定義します。

flight-list.dtdの定義が指定され、その DTDに準拠した形式で到着フライトのリストを生成する必要があるとします。Extensibility社製の XML Authorityなどのビジュアル・ツールを使用して、図 19-2に示すとおり flight-list.dtdの構造をブラウズできます。

Extensibility社製の XML Authority 1.1を使用して、業界標準の flight-list.dtdを調べます。

18-4 Oracle8iアプリケーション開発者ガイド - XML Vol.2

Page 145: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

XSQL Servletの機能

図図図図 18-2 Extensibility 社製の社製の社製の社製の XML Authorityを使用した業界標準のを使用した業界標準のを使用した業界標準のを使用した業界標準の flight-list.dtdの調査の調査の調査の調査

この図は、フライト・リスト用の標準の XML形式が、次の要素を含むことを示します。

� 1つ以上の <flight-list>要素

� それぞれ 1つの airline属性および number属性を持つ <flight>要素

� <arrives>要素

次の XSLTスタイルシート(flight-list.xsl)を XSQLページと対応付けると、到着フライトの問合せ結果のデフォルト形式である <ROWSET>および <ROW>を、業界標準の DTD形式に変換できます。

<!-- ROWSET/ROW結果をフライト・リスト形式に変換するXSLTスタイルシート --> <flight-list xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xsl:version="1.0"> <xsl:for-each select="ROWSET/ROW"> <flight airline="{CARRIER}" number="{FLIGHTNUMBER}"> <arrives><xsl:value-of select="DUE"/></arrives> </flight> </xsl:for-each></flight-list>

このスタイルシートは、結果として生成されたドキュメントで生成され、特殊な XSLTアクション・ハンドラ要素とともに分散される必要がある <flight-list>、<flight>、<arrives>などのリテラル要素を含むテンプレートです。このアクション・ハンドラ要素によって、次の操作を行うことができます。

� <xsl:for-each>を使用して、ソース・ドキュメント内の一致する要素に対するループを行います。

XSQL Servletの使用 18-5

Page 146: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

XSQL Servletの機能

� <xsl:value-of>を使用して、必要に応じてソース・ドキュメント要素の値をプラグインします。

� {something}を使用して、ソース・ドキュメント要素の値を属性値にプラグインします。

このスタイルシートでは、次の 2つの属性が最上位の <flight-list>要素に追加されていることに注意してください。

� xmlns:xsl="http://www.w3.org/1999/XSL/Transform"

これは、「xsl」という名前の XML名前空間(xmlns)を定義し、XSLT仕様を一意に識別するユニフォーム・ロケータ文字列を識別します。これは、URLのように見えますが、文字列 http://www.w3.org/1999/XSL/Transformを、XSLT 1.0仕様で定義されている要素セット用のグローバル主キーとして考えます。名前空間が定義されると、スタイルシートで <xsl:XXX>アクション・ハンドラ要素を使用し、必要に応じて値をループおよびプラグインできます。

� xsl:version="1.0"

この属性は、ドキュメントを XSLT 1.0スタイルシートとして識別します。version属性は、すべての XSLTスタイルシートが、妥当であると識別され、XSLT Processorによって認識されるために必要です。

次に示すとおり、<?xml-stylesheet?>処理命令をページの上部に追加して、スタイルシートを XSQLページに対応付けます。

<?xml version="1.0"?><?xml-stylesheet type="text/xsl" href="flight-list.xsl"?><xsql:query connection="demo" xmlns:xsql="urn:oracle-xsql"> SELECT Carrier, FlightNumber, Origin, TO_CHAR(ExpectedTime,'HH24:MI') AS Due FROM FlightSchedule WHERE TRUNC(ExpectedTime) = TRUNC(SYSDATE) AND Arrived ='N' AND Destination = '{@City}' ORDER BY ExpectedTime</xsql:query>

これによって、図 18-3に示すとおり、要求プログラムまたはブラウザによって、提供されたflight-list.dtdで指定された業界標準の形式で XMLを参照できるようになります。

18-6 Oracle8iアプリケーション開発者ガイド - XML Vol.2

Page 147: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

XSQL Servletの機能

図図図図 18-3 業界標準の業界標準の業界標準の業界標準の XML形式の形式の形式の形式の XSQLページページページページ

同じ XML情報を HTMLで返すには、単純に、異なる XSLTスタイルシートを使用します。

スタイルシートで、<flight-list>、<flight>などの要素を生成するのではなく、<table>、<tr>、<td>などの HTML要素を生成します。

動的に問い合された情報の結果は、図 18-4に示す HTMLページの表示に類似しています。XSQLページは、未加工の XML情報を戻すのではなく、サーバー側での XSLTによる変換を使用して、ブラウザに送信するために情報を HTMLとしてフォーマットします。

XSQL Servletの使用 18-7

Page 148: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

XSQL Servletの機能

図図図図 18-4 対応付けられた対応付けられた対応付けられた対応付けられた XSLTスタイルシートを使用したスタイルシートを使用したスタイルシートを使用したスタイルシートを使用した HTMLのレンダリングのレンダリングのレンダリングのレンダリング

flight-display.xslスタイルシートは、flight-list.xslスタイルシートの構文と同様に、テンプレートの HTMLページの表示に類似します。これには、<xsl:for-each>、<xsl:value-of>、<ROWSET>および <ROW>で構成された基礎となる XML問合せ結果の動的な値をプラグインするための {DUE}などの属性値テンプレートが含まれます。

<!-- ROWSET/ROW結果をHTMLに変換するXSLTスタイルシート --><html xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xsl:version="1.0"> <head> <style> td {font-family:verdana,arial; font-size:40; background-color:#f7f7e7; color:#000000 } th,table {font-family:verdana,arial; font-size:40; background-color:#cccc99; color:#336699 } </style> </head> <body> <center> <table border="0"> <tr> <th>Flight</th> <th>Arrives</th>

18-8 Oracle8iアプリケーション開発者ガイド - XML Vol.2

Page 149: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

XSQL Servletの機能

</tr> <xsl:for-each select="ROWSET/ROW"> <tr> <td> <table border="0" cellspacing="0" cellpadding="4"> <tr> <td><img align="absmiddle" src="images/{CARRIER}.gif"/> </td> <td width="180"> <xsl:value-of select="CARRIER"/> <xsl:text> </xsl:text> <xsl:value-of select="FLIGHTNUMBER"/> </td></tr></table> </td> <td align="center"> <xsl:value-of select="DUE"/> </td> </tr> </xsl:for-each> </table> </center> </body></html>

次の機能を組み合せて、前述のことを確認できます。

� Oracleデータベースから必要な情報を選択するためのパラメータ化された SQL文

� ポータブルな中間データ交換用フォーマットとしての業界標準の XML

� XMLベースのデータ・ページを、必要に応じて任意の XMLベースまたはHTMLベースの形式に変換するための XSLT

これによって、非常に興味深く、有効な結果を迅速に実現できます。

注意注意注意注意 : このスタイルシートは、HTMLと同じに見えますが、1つの小さい相違点があります。このスタイルシートは、整形式の HTMLです。これは、それぞれの開始タグが適切にクローズされ(<td>...</td>など)、空のタグに、<br>ではなく空の XML要素構文 <br/>が使用されることを意味します。

XSQL Servletの使用 18-9

Page 150: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

Oracle XSQLページ : 設定および例

Oracle XSQLページページページページ : 設定および例設定および例設定および例設定および例一度 XSQLページのセットを作成すると、次の操作によってページを使用できます。

� 任意のWebサーバー上でOracle XSQL Servletをインストールした後、XSQLページを要求します。

� バッチ・プログラムで Oracle XSQLコマンドライン・ユーティリティをコールします。

� 任意の Javaプログラム内から XSQLRequest.process()メソッドをコールします。

� JSPで <jsp:include page="foo.xsql">または<jsp:forward page="bar.xsql">を使用します。

図 18-5に、コアである XSQL Page Processor Engineと、その 3つのクライアントの 1つである XSQL Servletの関係を示します。これについては、図 18-6および図 18-8にも示しています。

XSQL Page Processorは、XSQLページの内容を解析、キャッシュおよび処理します。XSQL Servletは、HTTPによるWebサーバーを介した XSQLページへのアクセスを可能にするJava Servletです。

他の 2つのクライアントは次のとおりです。

� コマンドラインから XSQLページを処理できる XSQLコマンドライン・ユーティリティ

� カスタム Javaプログラム内からプログラムで XSQLページを処理するための単純なAPIを提供する XSQLRequestクラス

図図図図 18-5 XSQL Servletのインストールのインストールのインストールのインストール - XSQL Servletアーキテクチャの説明アーキテクチャの説明アーキテクチャの説明アーキテクチャの説明

コマンドライン�

18-10 Oracle8iアプリケーション開発者ガイド - XML Vol.2

Page 151: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

CLASSPATHの適切な設定

CLASSPATHの適切な設定の適切な設定の適切な設定の適切な設定コアである XSQL Page Processorと同様に、XSQL Servlet、XSQLRequestクラスおよびXSQLコマンドラインはすべて Javaプログラムであり、非常にポータブルで設定が簡単です。

唯一の設定要件は、実行して XSQLページを処理する Java VMの CLASSPATHに、適切なjarファイルが含まれていることです。jarファイルには、次のものが含まれます。

� Oracle JDBC Driver用の classes111.zip

� Oracle XML Parser for Java用の xmlparserv2.jar

� Oracle XML SQL Utility for Java用の oraclexmlsql.jar

� Oracle XSQL Servletおよび Oracle XSQL Pages Processor用の oraclexsql.jar

また、XSQL Page Processorの構成ファイル(XSQLConfig.xml)が格納されているディレクトリも、CLASSPATH内のディレクトリとして示される必要があります。この構成ファイルは、通常、./xsql/libディレクトリに格納されています。

� Windows NT上で配布された XSQLを C:¥xsqlにインストールした場合、CLASSPATHは次のとおり表示されます。

C:¥xsql¥lib¥classes111.zip;C:¥xsql¥lib¥xmlparserv2.jar;C:¥xsql¥lib¥oraclexmlsql.jar;C:¥xsql¥lib¥oraclexsql.jar;C:¥xsql¥lib

� UNIX上で配布された XSQLを /webディレクトリにインストールした場合、CLASSPATHは次のとおり表示されます。

/web/xsql/lib/classes111.zip:/web/xsql/lib/xmlparserv2.jar:/web/xsql/lib/oraclexmlsql.jar:/web/xsql/lib/oraclexsql.jar:/web/xsql/lib

XSQL Servletを使用するには、.xsqlファイルの拡張子を XSQL Servletの Javaクラスであるoracle.xml.xsql.XSQLServletに対応付ける手順が必要になります。Webサーバーの Servlet環境の CLASSPATHを設定する方法、および Servletをファイル拡張子に対応付ける方法は、Webサーバーによって異なります。Oracle XSQLページで使用するWebサーバー固有の設定情報については、Oracle XSQL Servletリリース・ノートを参照してください。

この章では、小規模で、簡単に使用でき、Java Servletをサポートする Oracle Web-to-goシングル・ユーザーWebサーバーを使用します。

XSQL Servletの使用 18-11

Page 152: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

接続定義の設定

接続定義の設定接続定義の設定接続定義の設定接続定義の設定XSQLページは、XSQL設定ファイルに定義されている接続用のニックネームを使用して、データベース接続を参照します。接続名は、次のような XSQLConfig.xmlファイルの<connectiondefs>セクションに定義されています。

: <connectiondefs> <connection name="demo">  <username>scott</username>  <password>tiger</password>  <dburl>jdbc:oracle:thin:@localhost:1521:testDB</dburl>   <driver>oracle.jdbc.driver.OracleDriver</driver> </connection> <connection name="prod"> <username>prodapp</username> <password>sumpti0us</password>    <dburl>jdbc:oracle:thin:@localhost:1521:prodDB</dburl> <driver>oracle.jdbc.driver.OracleDriver</driver> </connection></connectiondefs>:

任意の数の <connection>要素をこのファイルで使用し、必要な接続を定義できます。個々の XSQLページは、ページ内の最上位の要素(ドキュメント要素)に connection="xxx"属性を挿入して、使用する接続を参照します。

単一の問合せを含むページ単一の問合せを含むページ単一の問合せを含むページ単一の問合せを含むページ単一の問合せを含むページでは、次のようになります。

<?xml version="1.0"?><xsql:query connection="demo" xmlns:xsql="urn:oracle-xsql"> SELECT * FROM DUAL</xsql:query>

複数の問合せを含むページ複数の問合せを含むページ複数の問合せを含むページ複数の問合せを含むページ複数の問合せを含むページでは、次のようになります。

<?xml version="1.0"?><page connection="demo" xmlns:xsql="urn:oracle-xsql"> <xsql:query>SELECT 'X' as X FROM DUAL</xsql:query> <xsql:query>SELECT 'Y' as Y FROM DUAL</xsql:query></page>

これらの方法を使用して、XMLベースの製品カタログを公開できます。

18-12 Oracle8iアプリケーション開発者ガイド - XML Vol.2

Page 153: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

接続定義の設定

XSQLページの共通タグページの共通タグページの共通タグページの共通タグ表 18-1に、XSQL Servletの 3つの有効な共通タグを示します。すべてのタグのリストについては、『Oracle8i XMLリファレンス・ガイド』を参照してください。

ファイルを保存し、ブラウザを介してこのファイルを要求すると、すぐに結果を取得できます。

その他のその他のその他のその他の XSQLページの例ページの例ページの例ページの例この項では、その他の XSQLページについて単純な例を示します。この例は、次の URL要求に対する応答で表示される可能性があります。

http://yourcompany.com/AvailableFlightsToday.xsql?City=NYC

次に、XSQLページの例を示します。

<?xml version="1.0"?> <xsql:query connection="demo" xmlns:xsql="urn:oracle-xsql"> SELECT Carrier, FlightNumber, Origin, TO_CHAR(ExpectedTime,'HH24:MI') Due FROM FlightSchedule WHERE TRUNC(ArrivalTime) = TRUNC(SYSDATE) AND Destination = '{@City}' ORDER BY ExpectedTime </xsql:query>

HTMLまたは DTDに準拠するその他の XML形式で情報を戻すためには、次に示すとおり<?xml-stylesheet....?>タグを追加します。

<?xml version="1.0"?> <?xml-stylesheet type="text/xsl" href="FlightList.xsl"?> <xsql:query connection="demo" xmlns:xsql="urn:oracle-xsql"> SELECT Carrier, FlightNumber, Origin, TO_CHAR(ExpectedTime,'HH24:MI') Due FROM FlightSchedule WHERE TRUNC(ArrivalTime) = TRUNC(SYSDATE)

表表表表 18-1 XSQLの共通タグの共通タグの共通タグの共通タグ

XSQL タグの例タグの例タグの例タグの例 説明説明説明説明

<xsql:query> XMLベースの SQL問合せ結果を任意のテンプレートに組み込むには、<xsql:query>タグを使用します。

<?xml-stylesheet?> XSLスタイルシートをページに対応付けるには、ファイルの最初に <?xml-stylesheet?>命令行を追加します。

<xsql:action> データ・ページを作成するために実行できる処理のセットを拡張するには、<xsql:action>要素を使用します。

XSQL Servletの使用 18-13

Page 154: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

接続定義の設定

AND Destination = '{@City}' ORDER BY ExpectedTime </xsql:query>

A

組込み組込み組込み組込み XSQLアクション・ハンドラ要素アクション・ハンドラ要素アクション・ハンドラ要素アクション・ハンドラ要素表 18-2に、提供されるいくつかの組込み XSQLアクション・ハンドラ要素を示します。

.

注意注意注意注意 : {@City}は City=NYCに基づくパラメータです。このパラメータは、ハンドルで構成される処理で構成されます。この処理によって、簡単に情報を作成および変換できます。また、ハンドルによって、スタイルシートを変換できます。

表表表表 18-2 組込み組込み組込み組込み XSQLアクション・ハンドラ要素アクション・ハンドラ要素アクション・ハンドラ要素アクション・ハンドラ要素

アクション・ハンドラ要素アクション・ハンドラ要素アクション・ハンドラ要素アクション・ハンドラ要素 説明説明説明説明

<xsql:ref-cursor-function> PL/SQLストアド・ファンクションによって戻されたカーソルの結果セットの正規の XML表示を挿入します。Oracle8iで PL/SQLに組み込まれている新しい動的 SQL機能を、<xsql:set-page-param>とともに使用します。

<xsql:set-page-param> ページ・レベル(ローカル)のパラメータを設定します。設定後、このパラメータは、該当するページの SQL文内で参照できます。この値は、静的な値、他のパラメータ値、または SQL文の結果を使用して設定できます。

<xsql:include-param> パラメータおよびその値を要素として XSQLページに挿入します。

<xsql:set-session-param> HTTPセッション・レベルのパラメータを設定します。この値は、静的な値、他のパラメータ値、または SQL文の結果を使用して設定できます。

<xsql:set-cookie> HTTP Cookieを設定します。この値は、静的な値、他のパラメータ値、または SQL文の結果を使用して設定できます。

<xsql:insert-param> XMLを含む単一パラメータの値を挿入します。オプションで、その XMLを正規の形式に変換できます。

18-14 Oracle8iアプリケーション開発者ガイド - XML Vol.2

Page 155: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

XSQLコマンドライン・ユーティリティの使用

XSQLコマンドライン・ユーティリティの使用コマンドライン・ユーティリティの使用コマンドライン・ユーティリティの使用コマンドライン・ユーティリティの使用XSQLコマンドライン・ユーティリティでは、posted-xmlコマンドラインのパラメータの値として XMLのファイル名または URLを指定して、このユーティリティが処理(通常、データベースへの挿入のための処理)している XSQLページに XMLをポストできます。たとえば、posted-xml=filenameまたは posted-xml=http://somesite/someurlは両方とも有効です。

現在、カスタム・アクション・ハンドラは、getPageRequest().getPostedDocument()をコールするときに、必要に応じて何度でもポストされた XMLドキュメントの内容を参照できます。以前は、これをコールするときに、ポストされた XMLドキュメントの内容を 2回参照すると、NULLが戻されていました。

現在、Javaプログラム内から XSQLページを処理するためのプログラム APIであるXSQLRequestクラスには、processToXML()メソッドが含まれます。このため、ご使用のプログラムによるその後の処理に備えて、XSQLページを処理し、その出力を DOMドキュメント・オブジェクトとして取得できるようになりました。

XSQLCommandLine()クラスを使用して任意の XSQLページをコマンドラインで処理し、次のコマンドを使用して、その出力を標準出力またはファイルに送信します。

java oracle.xml.xsql.XSQLCommandLine xsqlURI [outputFile] [param1=value1 ... paramN=valueN]

このコマンドライン・ユーティリティを実行するために、次のファイルが提供されます。

� DOSバッチ・ファイル .¥bin¥xsql.bat

� シェル・スクリプト ./bin/xsql

これらは、すべての必要な jarファイル(前述の Servlet用に示したものと同じファイル)を含むように CLASSPATHを設定してから、JREをコールし、oracle.xml.xsql.XSQLCommandLine()クラスを実行します。

XSQLコマンドライン・ユーティリティの例コマンドライン・ユーティリティの例コマンドライン・ユーティリティの例コマンドライン・ユーティリティの例次に示す XSQLコマンドライン・ユーティリティの例を試してみてください。

� デモ・ファイル /xsql/airport/airport.xsqlをテストするには、次のとおり入力します。

xsql xsqlURI [outputFile] [param1=value1 ... paramN=valueN]

� airport.xsqlの処理結果を標準出力に出力するには、次のとおり入力します。

xsql airport.xsql airport=sfo xml-stylesheet=none

� 結果を output.htmlに出力するには、次のとおり入力します。

xsql airport.xsql output.html airport=sfo

XSQL Servletの使用 18-15

Page 156: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

XSQL Page Processorの使用方法

� XMLドキュメントを XSQLコマンドライン・ユーティリティが処理している XSQLページにポストするには、次のとおり URLまたはファイル名を posted-xmlコマンドライン・パラメータの値として指定します。

xsql insertnewsstory.xsql posted-xml=http://p.moreover.com/cgi-local/page?index_xml+xml

この例では、指定された URLにアクセスして取得される XMLの内容を挿入するために、insertnewsstory.xsqlという名前の XSQLページを使用しています。

XSQL Page Processorの使用方法の使用方法の使用方法の使用方法次の項では、XSQL Page Processorの使用方法について説明します。

XSQLの使用方法の概要の使用方法の概要の使用方法の概要の使用方法の概要図 18-6に、XSQL Page Processorの使用方法の概要を示します。

XSQL Page Processorには、主に次の 3つの方法でアクセスできます。

� XSQL Servletでのコールまたは要求からのアクセス。たとえば、この要求は、HTTPプロトコルを使用してWeb上で行うことができます。

� XSQLコマンドライン・ユーティリティを使用したコマンドラインからのアクセス。

� XSQLRequest()クラス(<xsql:query>など)を使用したアプリケーションからのアクセス。これは、すべてのコマンドで使用できるカスタマイズ可能な Javaプログラムです。

XSQL Page Processorは、XSQLページ・テンプレートを処理します。

処理アクションは、XSQLページ・テンプレートに要求され、XSQL Page Processorによって処理されます。次のような処理が実行されます。

1. XSQL Page Processorは、実行する処理アクションを決定(解析)します。

2. スタイルシートは、存在する場合は XSLT Processorによって選択および処理されます。

3. 結果またはアクションは、要求の発信元に応じて A、Bまたは Cに戻されます。

4. 次のどちらかの ActionHandlerクラスを使用して、Javaでアクション・ハンドラをカスタマイズできます。

� XSQLActionHandler()クラス

� XSQLActionHandlerImpl()クラス

18-16 Oracle8iアプリケーション開発者ガイド - XML Vol.2

Page 157: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

XSQL Page Processorの使用方法

図図図図 18-6 XSQL Page Processor: 概要概要概要概要

処理アクション�1. アクションを� 処理する� (パーサーを� 使用する)2. スタイルシート� (存在する場合)� を選択し、XSLT

Processorを使用� して処理する3. 要求が提出された� 方法に応じて、� A、BまたはCに� 戻される�

Javaプログラム�

XSQL ページ・テンプレート�

アプリケーション

XSQLRequestクラス例: <XSQL : query>· 任意のコマンドに� 使用する· カスタマイズされた� Javaプログラムも� 使用できる

コマンドライン�

XSQL Page Processor

指定されている�場合はアクション�

* 次のいずれかを使用して�  アクション・ハンドラを�  カスタマイズするa XSQLActionHandlerクラスb XSQLActionHandler実装クラス�

XSQL Request サーブレット�

Web (http)を�介して要求する�

A B

C

アクション・ハンドラ�

高度な使用方法�

ユーザー� ユーザー�

XSQL Servletの使用 18-17

Page 158: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

XSQL Page Processorアーキテクチャ

XSQL Page Processorアーキテクチャアーキテクチャアーキテクチャアーキテクチャ図 18-7に、XSQL Page Processorの主なコンポーネントを示します。

� Page Processor

� XSQL Page Cache

� Connection Pool

� Stylesheet Cache

XSQL Page Processorが XSQLページ・テンプレートを処理する場合、その Page Processorは次の操作を行います。

1. テンプレートが新しいものまたは変更されたものである場合、それを解析します。

2. そのテンプレートをキャッシュします。

3. Connection Poolから適切なデータベース接続を取得します。

4. テンプレートに指定されたアクションを処理します。

5. 必要に応じて、XSLTがテンプレートを変換します。

図図図図 18-7 XSQL Page Processorアーキテクチャアーキテクチャアーキテクチャアーキテクチャ

XSQLページ・�テンプレート�

Connection Pool. . . . scott / tiger. . . . oe / oe. . . . x / y

Stylesheet Cachex.xsly.xslz.xsl

XSQL Page CacheA.xsqlB.xsqlC.xsql

A.xsqlページを�処理する�

z.xslスタイルシートを�適用する�

oe /oeを使用して�接続する�

XSQL Page Processor

処理アクションを実行する任意のアクション・ハンドラ�を実装する�

Page Processor

18-18 Oracle8iアプリケーション開発者ガイド - XML Vol.2

Page 159: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

稼働中の XSQL Page Processor

稼働中の稼働中の稼働中の稼働中の XSQL Page Processor図 18-8に、要求処理時の XSQL Page Processor内部の詳細な様子を示します。概要図については、図 18-6を参照してください。

1. XSQL Page Processorには、次に示す 3つのうちのいずれかの方法でアクセスします。

� Servletからのアクセス

� XSQLコマンドラインからのアクセス

� XSQL Requestからのアクセス

要求されたページの入力テンプレートである「Request Page」が、「get Template」によってフェッチされます。

2. ページが XSQL Page Cache(図 18-7「XSQL Page Processorアーキテクチャ」を参照)にない場合、または変更されている場合、要求ページが解析され、将来使用するためにXSQL Page Cacheにキャッシュされます。

ページがすでに XSQL Page Cacheにある場合、そのページは単純に XQL Page Cacheからフェッチされます。

3. XSQLページ・テンプレートに指定されている場合、および適用可能である場合、解析結果がすべてのアクションおよびタスク用に処理されます。

4. XSQLページ・テンプレートにアクション・ハンドラが含まれる場合、そのアクション・ハンドラが起動され、さらにアクションを処理します。

5. このハンドラは選択されたスタイルシートを適用し、XSQLデータ・ページを変換します。

6. 変換された結果は、リクエスタ、Servlet、XSQLコマンドラインまたは XSQL Requestアプリケーションに戻されます。

XSQL Servletの使用 18-19

Page 160: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

稼働中の XSQL Page Processor

図図図図 18-8 稼働中の稼働中の稼働中の稼働中の XSQL Page Processor

ページを�要求する�

Servlet

コマンドライン�

XSQLRequest

ハンドラを�起動する�

スタイルシート�を選択する�

データ・ページ�を変換する�

結果を戻す�

テンプレート�を取得する�

テンプレートを�解析/キャッシュ�する�

アクションを�処理する�

キャッシュにない場合、�または変更されている場合�

スタイルシートが�ある場合�

XSQL Page Processor

1

2

3

Oracle8i

18-20 Oracle8iアプリケーション開発者ガイド - XML Vol.2

Page 161: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

XSQL Servletの例(demo/ディレクトリ内)

XSQL Servletの例(の例(の例(の例(demo/ディレクトリ内)ディレクトリ内)ディレクトリ内)ディレクトリ内)表 23-1に、demo/ディレクトリ内にあるソフトウェア付属の XSQL Servletのアプリケーション例を示します。デモをインストールする方法は、リリース・ノートの「インストール」を参照してください。

表表表表 18-3 demo/ディレクトリで提供されるディレクトリで提供されるディレクトリで提供されるディレクトリで提供される XSQL Servletの例の例の例の例

デモンストレーション名デモンストレーション名デモンストレーション名デモンストレーション名(ファイル名)(ファイル名)(ファイル名)(ファイル名)

説明説明説明説明

Hello World(helloworld) 最も単純な XSQLページ

Do You XML Site(doyouxml)

XSQLページが XSQLページを使用してデータ駆動型のWebサイトを構築する方法を示します。問合せに SQL、XSQLの置換変数を使用し、フォーマットに XSLTを使用します。

<xsql:query>タグ内の SQL文および <xsql:query>タグの属性に代替パラメータを使用して、問合せ結果を介してページングするために、表示またはスキップするレコードの数などを制御します。

Employee Page(emp) XSQLページが、XSQLページ・パラメータを使用して従業員およびデータのソートを制御し、EMP表の XMLデータを表示します。

対応付けられた XSLTスタイルシートを使用して、結果を HTMLバージョンのemp.xsqlページとしてフォーマットします。これは、構成アクションであるため、検索基準を微調整できます。

Insurance Claim Page(insclaim)

構造化された Insurance Claimオブジェクト・ビューに対するサンプル問合せを示します。insclaim.sqlは、INSURANCE_CLAIM_VIEWオブジェクト・ビューを設定し、サンプル・データを作成します。

Invalid Classes Page(classerr)

XSQLページが、invalidclasses.xslを使用して、スキーマ内で発生した現在のJavaクラスのコンパイル・エラーの最新リストをフォーマットします。.sqlスクリプトは、デモ用の XSQLJavaClassesViewオブジェクト・ビューを設定します。オブジェクト・ビューからのマスター情報 /詳細情報は、サーバー内のinvalidclasses.xslスタイルシートによって HTMLにフォーマットされます。

XSQL Servletの使用 18-21

Page 162: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

XSQL Servletの例(demo/ディレクトリ内)

Airport Code Validation(airport)

XSQLページが、3文字の空港コードに基づいて、空港情報のデータグラムを戻します。最初の問合せが行を戻さない場合、代替の問合せとして<xsql:no-rows-query>を使用します。XSQLページは、渡された空港コードの一致検索を試みた後、空港の説明に基づいて、あいまい一致検索を試みます。

airport.htmページは、Javaスクリプトによって Internet Explorer 5.0の組込みXML DOM機能を使用して、Webページからの airport.xsqlページの XML結果を使用する方法を実例で示します。

Webページ上で 3文字の空港コードを入力すると、Javaスクリプトは、入力したコードに対応するWeb上で XSQL Servletから XMLデータグラムをフェッチします。戻り値が、一致するものがなかったことを示す場合、プログラムは、XSQL ServletからXMLデータグラム形式で戻された情報に基づいて、一致する可能性があるもののリストを生成します。

Airport Code Display(airport)

Airport Code Validationの例と同じ XSQLページを使用して実例を示しますが、要求で XSLTスタイルシート名を提供します。これによって、空港情報は、未加工の XMLとして戻されるのではなく、HTMLフォームにフォーマットされます。

Emp/Dept Object View Demo(empdept)

オブジェクト・ビューを使用して、EMPや DEPTなどの 2つの既存フラット表からのマスター情報 /詳細情報をグループ化する方法を示します。empdeptobjs.sqlスクリプトが、オブジェクト・ビューおよび INSTEAD OF INSERTトリガーを作成し、マスター・ビュー /詳細ビューを xsql:insert-requestの挿入ターゲットとして使用できるようにします。

empdept.xslスタイルシートは、最上位に余分な xsl:stylesheetまたは xsl:transformのない HTMLページのように見える、単純な形式の XSLTスタイルシートの例を示します。リテラル結果要素をスタイルシートとして使用し、XSLT 1.0仕様の一部がコールされます。

生成された HTMLが、coolcolors.cssファイル内にある、集中化された HTMLスタイルの情報用の CSSを十分に使用できるように、<link rel="stylesheet">を含むHTMLページを生成する方法も示します。

Adhoc Query Visualization(adhocsql)

パラメータとして使用する SQL問合せおよび XSLTスタイルシートをサーバーに渡す方法を示します。

表表表表 18-3 demo/ディレクトリで提供されるディレクトリで提供されるディレクトリで提供されるディレクトリで提供される XSQL Servletの例(続き)の例(続き)の例(続き)の例(続き)

デモンストレーション名デモンストレーション名デモンストレーション名デモンストレーション名(ファイル名)(ファイル名)(ファイル名)(ファイル名)

説明説明説明説明

18-22 Oracle8iアプリケーション開発者ガイド - XML Vol.2

Page 163: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

XSQL Servletの例(demo/ディレクトリ内)

XML Document Demo(document)

XMLドキュメントをリレーショナル表に挿入する方法を示します。

docdemo.sqlスクリプトが、XMLDOCFRAGという、CLOB型の属性を含むユーザー定義型を作成します。

� ドキュメントのテキストを /xsql/demo/xml99.xmlに挿入し、xml99.xslという名前をスタイルシートに指定します。

� スタイルシート relnotes.xslを使用して、ドキュメントのテキストを./xsql/demo/JDevRelNotes.xmlに挿入します。

docstyle.xsqlページは、クライアントが提供するスタイルシート名を使用して最終出力を変換する前に、doc.xsqlページの出力を独自のページに挿入するためのアクション・ハンドラ要素である <xsql:include-xsql>の例を示します。

XML Documentデモは、Internet Explorer 5.0のクライアント側 XML機能を使用して、ドキュメントがサーバーにポストされる前に、そのドキュメントが整形式であるかどうかを確認します。

XML Insert Request Demo(insertxml)

クライアントからの XMLを XSQLページにポストします。この XSQLページは、アクション・ハンドラ要素である <xsql:insert-request>を使用して、ポストされた XML情報をデータベース表に挿入します。

このデモでは、moreover.comが提供する XMLベースのニュース形式の XMLドキュメントを使用できます。XMLをポストするプログラムは、Internet Explorer 5.0およびJavaスクリプトから XMLHttpRequestオブジェクトを使用するクライアント側のWebページです。

insertnewsstory.xsqlページのソースが、表名および XSLT変換名を指定します。

moreover-to-newsstory.xslスタイルシートは、受信した XMLをOracleXMLSaveユーティリティが挿入できる正規の形式に変換します。<article>要素の例を <moreovernews>要素内に数回コピー・アンド・ペーストして、数個のニュース記事を一度に挿入します。

newsstory.sqlは、受信データの処理方法、主キーのデフォルト値などをカスタマイズするために、XSQLページにデータを挿入させる挿入先のデータベース・ビューで INSTEAD OFトリガーを使用する方法を示します。

SVG Demo(svg) deptlist.xsqlページが、SalChart.xsqlページへのハイパーリンクを使用して、単純な部門リストを表示します。

SalChart.xsqlページは、パラメータとして渡された特定の部門の従業員を問い合せ、SalChart.xsqlスタイルシートを使用して、問合せの結果をその部門内の従業員の給与を比較する棒グラフのスケーラブル・ベクター・グラフィックス(Scalable Vector Graphics: SVG)にフォーマットします。

すべてのデモのリストについては、http://localhost/xsql/index.htmlを参照してください。

表表表表 18-3 demo/ディレクトリで提供されるディレクトリで提供されるディレクトリで提供されるディレクトリで提供される XSQL Servletの例(続き)の例(続き)の例(続き)の例(続き)

デモンストレーション名デモンストレーション名デモンストレーション名デモンストレーション名(ファイル名)(ファイル名)(ファイル名)(ファイル名)

説明説明説明説明

XSQL Servletの使用 18-23

Page 164: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

demo/ディレクトリ内のデータの設定

demo/ディレクトリ内のデータの設定ディレクトリ内のデータの設定ディレクトリ内のデータの設定ディレクトリ内のデータの設定デモ・データを設定するには、次の手順に従います。

1. ディレクトリをマシン上の .\xsql\demoディレクトリに変更します。

2. このディレクトリで SQL*Plusを実行します。CTXSYS/CTXSYS(interMedia Textパッケージのスキーマ所有者)としてデータベースに接続し、次のコマンドを発行します。

GRANT EXECUTE ON CTX_DDL TO SCOTT;

3. SYSTEM/MANAGERとしてデータベースに接続し、次のコマンドを発行します。

GRANT QUERY REWRITE TO SCOTT;

これによって、SCOTTは、デモの 1つが空港の説明に基づく大文字 /小文字を区別しない問合せを実行するために使用するファンクション索引を作成できるようになります。

4. SCOTT/TIGERとしてデータベースに接続します。

5. スクリプト install.sqlを ./xsql/demoディレクトリで実行します。このスクリプトは、すべてのデモ用のすべての SQLスクリプトを実行します。

install.sql@@insclaim/insclaim.sql@@document/docdemo.sql@@classerr/invalidclasses.sql@@airport/airport.sql@@insertxml/newsstory.sql@@empdept/empdeptobjs.sql

6. ディレクトリを doyouxml/サブディレクトリに変更し、次のコマンドを実行します。

imp scott/tiger file=doyouxml.dmp

これは、Do You XML Siteデモ用のサンプル・データをインポートするために実行します。

7. SVGのデモンストレーションを体験するには、Adobe社製の SVG Plug-inなどの SVGプラグインをブラウザにインストールします。

18-24 Oracle8iアプリケーション開発者ガイド - XML Vol.2

Page 165: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

XSQLページの使用

XSQL Servletの使用の使用の使用の使用

要件要件要件要件XSQL Servletは、任意の Java VM上で、任意のデータベースに対し、任意の JDBCドライバを使用して実行します。

XSQL Servletは、JDK 1.1.8または JDK 1.2.2をサポートします。

XSQLページの使用ページの使用ページの使用ページの使用

<xsql:query>を使用したを使用したを使用したを使用した SQL問合せからの動的問合せからの動的問合せからの動的問合せからの動的 XMLドキュメントの生成ドキュメントの生成ドキュメントの生成ドキュメントの生成Oracle XSQLページを SQL問合せに使用するには、XMLファイル内の SQLを実行する場所に <xsql:query>タグを挿入します。

<xsql:query>要素は、問合せの XML出力によって置換されます。XSQL Page Processorは、XSQLConfig.xmlファイルに定義されている接続名と一致する値を持つ必要がある XMLドキュメントの要素に対して、属性によって名前指定された接続を検索します。

� connection="conname"属性を挿入します。属性を挿入します。属性を挿入します。属性を挿入します。XSQLページのドキュメント要素に対してconnection="connname"属性を挿入する必要があります。これを挿入しない場合、XMLファイルはリクエスタに提供されますが、<xsql:query>タグは処理されません。

� 接続名の値は、接続名の値は、接続名の値は、接続名の値は、XSQLCOnfig.xmlに一致している必要があります。に一致している必要があります。に一致している必要があります。に一致している必要があります。接続名用に提供された値が xsql/lib/ディレクトリにある XSQLConfig.xml構成ファイル内のエントリの 1つと一致していることを確認してください。

次に、<xsql:query>タグを使用した単純な例を示します。

<?xml version="1.0"?><xsql:query xmlns:xsql="urn:oracle-xsql" connection="demo"> SELECT 'Hello World' AS "GREETING" FROM DUAL</xsql:query>

これによって、次の XMLドキュメントが生成されます。

<?xml version = '1.0'?> <ROWSET> <ROW id="1"> <GREETING>Hello World</GREETING> </ROW> </ROWSET>

注意注意注意注意 : JDK 1.1.7は、UTF-8によるキャラクタ・セット変換のルーチンに問題があるため、XSQLページの処理には使用できません。

XSQL Servletの使用 18-25

Page 166: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

XSQLページの使用

.xsqlページには、任意の数の <xsql:query>タグを含めることができます。また、これらのタグは、他の XMLタグ間でネストできます。ただし、.xsqlは、整形式の XMLドキュメントのままである必要があります。

たとえば、次のような 2つの問合せからデータ・ページを構築できます。

<?xml version="1.0"?> <sales-by-year xmlns:xsql="urn:oracle-xsql" connection="salesdb"> <period id="H1" year="CY99"> <xsql:query> SELECT salesperson, SUM(sales) AS Total FROM sales WHERE sale_date between '01-JAN-99' and '30-JUN-99' GROUP BY salesperson </xsql:query> </period> <period id="H2" year="CY99"> <xsql:query> SELECT salesperson, SUM(sales) AS Total FROM sales WHERE sale_date between '01-JUL-99' and '31-DEC-99' GROUP BY salesperson </xsql:query> </period> </sales-by-year>

これによって、次の結果が生成されます。

<?xml version="1.0"?> <sales-by-year connection="salesdb"> <period id="H1" year="CY99"> <ROWSET> <ROW id="1"> <SALESPERSON>Steve</SALESPERSON> <TOTAL>23465500</TOTAL> </ROW> <ROW id="2"> <SALESPERSON>Mark</SALESPERSON> <TOTAL>39983400</TOTAL> </ROW> </ROWSET> </period> <period id="H2" year="CY99"> <ROWSET> <ROW id="1"> <SALESPERSON>Steve</SALESPERSON> <TOTAL>67788400</TOTAL> </ROW>

18-26 Oracle8iアプリケーション開発者ガイド - XML Vol.2

Page 167: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

XSQLページの使用

<ROW id="2"> <SALESPERSON>Mark</SALESPERSON> <TOTAL>55786990</TOTAL> </ROW> </ROWSET> </period> </sales-by-year>

<xsql:query>タグの XML結果をカスタマイズする必要がある場合、該当するタグに対し 1つ以上のオプションの属性を提供すると、.xsqlページ内の各 <xsql:query>ごとに生成される XML問合せ結果を様々な点でカスタマイズできます。

XML SQL Utilityの問合せ属性オプションを使用した問合せのカスタマイズの問合せ属性オプションを使用した問合せのカスタマイズの問合せ属性オプションを使用した問合せのカスタマイズの問合せ属性オプションを使用した問合せのカスタマイズ次の属性ベースのオプションは、OracleXMLQueryクラスである基礎となるoracle.xml.sql.query が提供する機能に対応します。このクラスは、Oracle XML SQL Utility(XSU)for Javaで提供されます。

表 18-4に、XSQL Page Processorがサポートする <xsql:query>タグの属性を示します。これらの属性では、大文字 /小文字が区別されます。

表表表表 18-4 <xsql:query>: タグの属性タグの属性タグの属性タグの属性

属性名属性名属性名属性名 説明説明説明説明

rowset-element 問合せ結果に対して使用する要素名。空の文字列と等価に設定して、ドキュメント要素の出力を抑制します。

<ROWSET>

row-element 問合せ結果の各行に対して使用する要素名。空の文字列と等価に設定して、行要素の出力を抑制します。

<ROW>

max-rows 問合せからフェッチする行の最大数。問合せ結果からの top-N行のフェッチ、または skip-rowsと組み合せた next-N行のフェッチを行うために有効です。

すべての行をフェッチします。

skip-rows 問合せ結果を戻す前に省略する行の数 行をスキップしません。

XSQL Servletの使用 18-27

Page 168: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

組込みアクション・ハンドラ

組込みアクション・ハンドラ組込みアクション・ハンドラ組込みアクション・ハンドラ組込みアクション・ハンドラ表 18-2に、XSQLページの組込みアクション・ハンドラ要素を示します。

id-attribute 問合せ結果の各行に対する ID属性の属性名。 ID

id-attribute-column 問合せ結果の各行に対する ID属性の値を提供するために使用する列名。

行カウントを ID属性値として使用します。

null-indicator Yまたは YESに設定すると、NULLを値に持つすべての行の要素に対して null-indicator属性が使用されます。

タグの値がNULLであるすべての列に対する結果の要素を省略します。

表表表表 18-5 アクション・ハンドラ要素アクション・ハンドラ要素アクション・ハンドラ要素アクション・ハンドラ要素

アクション・ハンドラ要素アクション・ハンドラ要素アクション・ハンドラ要素アクション・ハンドラ要素 説明説明説明説明

<xsql:query> 任意の SQL文を実行し、その結果セットを正規の XML形式に挿入します。

<xsql:dml> SQL DML文または PL/SQL無名ブロックを実行します。

<xsql:set-stylesheet-param> 最上位の XSLTスタイルシート・パラメータ値を設定します。このパラメータの値は、オプションの value属性を提供するか、または SQL文を要素の内容として挿入することによって設定できます。

<xsql:insert-request> 要求でポストされたの(オプションで変換された)XMLドキュメントをデータベース表またはビューに挿入します。HTMLフォームがポストされた場合、ポストされた XMLドキュメントは、HTTP要求パラメータ、Cookieおよびセッション変数から生成されます。

<xsql:include-xml> 相対または絶対 URLによって、任意の XMLリソースをページ内の任意の位置に挿入します。

<xsql:include-request-params> HTTPパラメータ、セッション変数、Ccookieなどの主要情報を、スタイルシートでアドレス指定するために、XSQL ページに挿入します。

<xsql:include-xsql> XSQLページの結果を他の XSQLページ内の任意の位置に挿入します。

表表表表 18-4 <xsql:query>: タグの属性タグの属性タグの属性タグの属性

属性名属性名属性名属性名 説明説明説明説明

18-28 Oracle8iアプリケーション開発者ガイド - XML Vol.2

Page 169: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

組込みアクション・ハンドラ

<xsql:include-owa> XMLを生成するために、Oracle Web Agent(OWA)パッケージを使用するストアド・プロシージャの実行結果をデータベースに挿入します。

<xsql:action> ユーザー定義のロジックを実行し、ユーザー定義の XML情報をXSQLページに挿入するために、Javaで実装済のユーザー定義のアクション・ハンドラを起動します。

<xsql:ref-cursor-function> PL/SQLストアド・ファンクションによって戻されたカーソルの結果セットの正規の XML表示を挿入します。

<xsql:set-page-param> ページレベル(ローカル)のパラメータを設定します。設定後、このパラメータは、該当するページの SQL文内で参照できます。この値は、静的な値、他のパラメータ値、または SQL文の結果を使用して設定できます。

<xsql:include-param> パラメータおよびその値を要素として XSQL ページに挿入します。

<xsql:set-session-param> HTTPセッション・レベルのパラメータを設定します。この値は、静的な値、他のパラメータ値、または SQL文の結果を使用して設定できます。

<xsql:set-cookie> HTTP Cookieを設定します。この値は、静的な値、他のパラメータ値、または SQL文の結果を使用して設定できます。

<xsql:insert-param> XMLを含む単一パラメータの値を挿入します。オプションで、その XMLを正規の形式に変換できます。

参照参照参照参照 : リリース・ノートを参照してください。このリリース・ノートには、次の場合に必要な追加処置が示されています。

� <xsql:include-owa>アクション・ハンドラ要素を使用する場合

� 社内ファイアウォール内部で XSQL Servletフォームを実行する場合。HTTPラインにコメントしないようにすることなど。

� <xsql:include-request-params>要素を使用する場合。特定の形式を使用することなど。

� <xsql:include-xml>要素を使用する場合。結果が整形式である必要があることなど。

� <xsql:insert-request>アクション・ハンドラ要素を使用する場合。まず、挿入したものに必要な標準形式を決定することなど。

表表表表 18-5 アクション・ハンドラ要素アクション・ハンドラ要素アクション・ハンドラ要素アクション・ハンドラ要素

アクション・ハンドラ要素アクション・ハンドラ要素アクション・ハンドラ要素アクション・ハンドラ要素 説明説明説明説明

XSQL Servletの使用 18-29

Page 170: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

XSQL Page Processorによるアクション・ハンドラのアクションの処理方法

XSQL Page Processorによるアクション・ハンドラのアクションによるアクション・ハンドラのアクションによるアクション・ハンドラのアクションによるアクション・ハンドラのアクションの処理方法の処理方法の処理方法の処理方法

図 18-9に、XSQL Page Processorがアクション・ハンドラに指定されたアクションを処理する方法を示します。

1. XSQLページ・テンプレートが、アクション・ハンドラに入力します。

2. XSQL Page Processorのアクション処理用モジュールが、アクション・ハンドラ内の次の 2つのコンポーネントを検索します。

� init(Element actionElt,XSQLPageRequest context)

� handleAction (Node result)

3. init(Element action Elt, XSQLPageRequest context)

� 1つ目のパラメータ : 要素には、次に示す SQL問合せなどが含まれます。

<xsql: query max-rows="5">SELECT * from dual</xsql:query>

� 2つ目のパラメータ : XSQLPageRequestには、getAttributeAllowingParam()などの接続およびページ要求情報が含まれます。

4. アクション・ハンドラが、結果として生成された変換済ページを出力します。

18-30 Oracle8iアプリケーション開発者ガイド - XML Vol.2

Page 171: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

XSQL Page Processorによるアクション・ハンドラのアクションの処理方法

図図図図 18-9 XSQL Page Processor: アクションの処理アクションの処理アクションの処理アクションの処理

XSQLアクション・ハンドラ・エラーアクション・ハンドラ・エラーアクション・ハンドラ・エラーアクション・ハンドラ・エラーXSQLアクション・ハンドラ要素の処理によって発生したエラーは、XSLスタイルシートがエラーの存在を検出し、オプションでそれらをフォーマットして表示できるように、XML要素として決まった方法で通知されます。

エラーが発生したアクション・ハンドラ要素は、ページ内で次の構文によって置き換えられます。

<xsql-error action="xxx">

エラーによっては、<xsql-error>要素に次のものが含まれます。

� ネストした <message>要素

� 違反 SQL文を含む <statement>要素

アクション・�ハンドラ�

init(Element actionElt, XSQLPageRequest context)

handleAction(Node result)

変換済ページ <transaction>

<account>

89-344

<buy> ---- shares="100"

Page Processor

.

. <xsql:query max-rows="5"> select * from dual</xsql:query>. .

XSQLPageRequest

getJDBCConnection()getAttributeAllowingParam()

入力ページ�. . <transaction> <account>89-344</account> <buy shares="100"/></transaction>. .

結果�アクション�を処理する

1

2

XSQL Servletの使用 18-31

Page 172: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

XSQL Page Processorによるアクション・ハンドラのアクションの処理方法

エラー情報の画面表示エラー情報の画面表示エラー情報の画面表示エラー情報の画面表示この項では、次の情報を使用してエラー情報を画面上に表示する XSLTスタイルシートの例を示します。

<xsl:if test="//xsql-error"> <table style="background:yellow"> <xsl:for-each select="//xsql-error"> <tr> <td><b>Action</b></td> <td><xsl:value-of select="@action"/></td> </tr> <tr valign="top"> <td><b>Message</b></td> <td><xsl:value-of select="message"/></td> </tr> </xsl:for-each> </table></xsl:if>

スタイルシートが <xsl:output>要素を使用する場合、XSQL Page Processorは、<xsl:output>のメディア・タイプ属性およびエンコーディング属性から、戻されたドキュメントのメディア・タイプおよびエンコーディングを推測します。

JavaServer Pages((((JSP)および)および)および)および XSQLページの使用ページの使用ページの使用ページの使用JavaServer Pages(JSP)は、<jsp:forward>を使用して XSQLページを転送し、<jsp:include>を使用して XSQLページの結果を挿入できます。

<xsql:query>タグの属性の使用タグの属性の使用タグの属性の使用タグの属性の使用<xsql:query>タグ(または任意のアクション・ハンドラ要素)の属性は、このタグ用の SQL文がパラメータを参照する場合と同様の方法でパラメータを参照できるため、クライアントは skip-rowsなどのパラメータの値を指定することができます。

クライアントによる XSQLページ用スタイルシートのオーバーライドは、そのページのドキュメント要素に対して、新しく allow-client-style="no"を設定することによって禁止できます。

参照参照参照参照 : 『Oracle8i JavaServer Pages 開発者ガイドおよびリファレンス』および第 9章「アプリケーション例」の XML問合せ例を参照してください。また、第 5章「Oracleの拡張機能」、「XMLおよび XSLに対する Oracle JSPのサポート」の Oracleの XML問合せの概要説明を参照してください。

18-32 Oracle8iアプリケーション開発者ガイド - XML Vol.2

Page 173: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

XSQL Page Processorのプログラム的な使用

XSQL Page Processorのプログラム的な使用のプログラム的な使用のプログラム的な使用のプログラム的な使用oracle.xml.xsql.XSQLRequest()クラスは、Javaプログラムの XSQL Page Processorを使用します。

次に例を示します。

import oracle.xml.xsql.XSQLRequest; import java.util.Hashtable; import java.io.PrintWriter; import java.net.URL; public class XSQLRequestSample { public static void main( String[] args) throws Exception { // XSQL PageのURLを構成します。 URL pageUrl = new URL("file:///C:/foo/bar.xsql"); // 新しいXSQL Page要求を構成します。 XSQLRequest req = new XSQLRequest(pageUrl); // 要求に渡す名前付きパラメータのハッシュ表を設定します。 Hashtable params = new Hashtable(3); params.put("param1","value1"); params.put("param2","value2"); /* 必要に応じて、既存のメモリー内XMLドキュメントを     ** 要求の一部としてXSQL Pageに渡されたように扱います。 例 :

req.setPostedDocument(myXMLDocument);

** */

// パラメータを渡し、出力を標準出力に出力して // 処理します。 req.process(params,new PrintWriter(System.out) ,new PrintWriter(System.err)); } }

また、process()ではなく processToXML()をコールして、要求された XSQLページを処理し、対応付けられた任意の XSLT変換を適用することによって生成されたメモリー内のXMLドキュメントを返すこともできます。

XSQL Servletの使用 18-33

Page 174: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

XSQLアクション・ハンドラのカスタマイズ

XSQLアクション・ハンドラのカスタマイズアクション・ハンドラのカスタマイズアクション・ハンドラのカスタマイズアクション・ハンドラのカスタマイズ図 18-8「稼働中の XSQL Page Processor」および図 18-9「XSQL Page Processor: アクションの処理」を参照してください。XSQL Page Processorは、次のアクションを行って XSQL ページを処理します。

� XSQL名前空間からアクション・ハンドラ要素を検索します。

� アクション・ハンドラ要素が検索されるたびに、適切なアクション・ハンドラ要素用のハンドラ・クラスを起動して、その要素を処理します。

組込み組込み組込み組込み XSQLアクション・ハンドラ要素およびアクション・ハンドラ・クアクション・ハンドラ要素およびアクション・ハンドラ・クアクション・ハンドラ要素およびアクション・ハンドラ・クアクション・ハンドラ要素およびアクション・ハンドラ・クラスラスラスラス

表 18-6に、XSQLページで次の基本 XSQLアクション・ハンドラ要素用に提供される組込みアクション・ハンドラを示します。

表表表表 18-6 組込み組込み組込み組込み XSQLアクション・ハンドラ要素およびアクション・ハンドラ・クラスアクション・ハンドラ要素およびアクション・ハンドラ・クラスアクション・ハンドラ要素およびアクション・ハンドラ・クラスアクション・ハンドラ要素およびアクション・ハンドラ・クラス

XSQL アクション・ハンドラ要素アクション・ハンドラ要素アクション・ハンドラ要素アクション・ハンドラ要素 oracle.xml.xsql.actionsのハンドラ・クラスのハンドラ・クラスのハンドラ・クラスのハンドラ・クラス

<xsql:query> XSQLQueryHandler

<xsql:dml> XSQLDMLHandler

<xsql:set-stylesheet-param> XSQLStylesheetParameterHandler

<xsql:insert-request> XSQLInsertRequestHandler

<xsql:include-xml> XSQLIncludeXMLHandler

<xsql:include-request-params/> XSQLIncludeRequestHandler

<xsql:include-xsql> XSQLIncludeXSQLHandler

<xsql:include-owa> XSQLIncludeOWAHandler

<xsql:action> XSQLExtensionActionHandler

<xsql:ref-cursor-function> XSQLRefCursorFunctionHandler

<xsql:include-param> XSQLGetParameterHandler

<xsql:set-session-param> XSQLSetSessionParamHandler

<xsql:set-page-param> XSQLSetPageParamHandler

<xsql:set-cookie> XSQLSetCookieHandler

<xsql:insert-param> XSQLInsertParameterHandler

18-34 Oracle8iアプリケーション開発者ガイド - XML Vol.2

Page 175: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

XSQLアクション・ハンドラのカスタマイズ

� アクション・ハンドラは、コンテキスト用の XSQLPageRequestオブジェクト、およびそのアクション・ハンドラが動的に作成された要素または他の DOMノードを追加する必要がある追加先の DOMドキュメント・フラグメントのルート・ノードが渡されることによって起動します。XSQL Page Processorは、テンプレート・ページ内のアクション・ハンドラ要素を、その要素に適切なアクション・ハンドラが作成したドキュメント・フラグメントの内容で置換します。

� カスタム・アクション・ハンドラを作成するには、oracle.xml.xsql.XSQLActionHandlerインタフェースを実装するクラスを作成する必要があります。

有効な方法として、init()メソッドのデフォルト実装、および有効なヘルパー・メソッドのセットを提供する oracle.xml.xsql.XSQLActionHandlerImplという名前の基本実装クラスを拡張すると、時間の節約になります。

次の例は、カスタム・アクション・ハンドラMyIncludeXSQLHandlerを示します。このハンドラは、組込みアクション・ハンドラの 1つおよび任意の Javaコードを使用し、そのハンドラによって戻された XMLのドキュメント・フラグメントを変更してから、その結果をXSQLページに追加します。

import oracle.xml.xsql.*; import oracle.xml.xsql.actions.XSQLIncludeXSQLHandler; import org.w3c.dom.*; import java.sql.SQLException; public class MyIncludeXSQLHandler extends XSQLActionHandlerImpl { XSQLActionHandler nestedHandler = null; public void init(XSQLPageRequest req, Element action) { super.init(req, action); // 現在の要求/アクションを渡してXSQLIncludeXSQLHandlerのインスタンス // およびハンドラinit()を作成します。 // これは、XSQLIncludeXSQLHandlerが現在のアクション・ハンドラ要素から // href="xxx.xsql"属性を選択することを推定しています。 nestedHandler = new XSQLIncludeXSQLHandler(); nestedHandler.init(req,action); } public void handleAction(Node result) throws SQLException { DocumentFragment df = result.getOwnerDocument().createDocumentFragment(); nestedHandler.handleAction(df); // ここでのカスタマJavaコードは、最終的な変更済のドキュメントを結果ノードに // 追加する前に、戻されたドキュメント・フラグメント上で処理を行います。 // たとえば、属性を最初の子に追加します。 Element e = (Element)df.getFirstChild(); if (e != null) { e.setAttribute("ExtraAttribute","SomeValue"); } result.appendChild(df); } }

XSQL Servletの使用 18-35

Page 176: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

XSQL ページでのカスタム XSQLアクション・ハンドラの使用

ページが XSQL Servlet、XSQLコマンドライン・ユーティリティまたはプログラムでXSQLRequestクラスを介して要求されているかどうかに基づいて、異なる動作をする必要があるカスタム・アクション・ハンドラを作成する場合、アクション・ハンドラの実装で、getPageRequest()をコールして、現在のページ要求用の XSQLPageRequestインタフェースを参照できることに注意してください。

XSQLPageRequestオブジェクトに対して getRequestType()をコールすると、それぞれ「Servlet」、「Command Line」または「Programatic」によるルートから要求を受信しているかどうかを確認できます。戻り値が「Servlet」の場合、次の構文によって、HTTP Servletの要求および応答オブジェクトにアクセスできます。

XSQLServletPageRequest xspr = (XSQLServletPageRequest)getPageRequest(); if (xspr.getRequestType().equals("Servlet")) { HttpServletRequest req = xspr.getHttpServletRequest(); HttpServletResponse resp = xspr.getHttpServletResponse(); // reqおよびrespを使用してみましょう。ただし、 // ハンドラから応答に直接書き込むと、予期しない結果が作成されます。 // 後ですべてのアクション・ハンドラ要素が処理されたときに、適切な書込み場面で // XSQL Servletを使用してサーブレットの応答出力ストリームに書き込ませます。 }

XSQL ページでのカスタムページでのカスタムページでのカスタムページでのカスタム XSQLアクション・ハンドラの使用アクション・ハンドラの使用アクション・ハンドラの使用アクション・ハンドラの使用yourpackage.YourCustomActionHandlerクラスによって実装されるカスタム・アクション・ハンドラを起動するためのアクション・ハンドラ要素を XSQLページに挿入するには、次の要素を追加します。

<xsql:action handler="yourpackage.YourCustomHandler"/>

または

<xsql:action handler="yourpackage.YourCustomHandler" param="xxx"/>

または

<xsql:action handler="yourpackage.YourCustomHandler" param="xxx"> Any text or <element>content</element></xsql:action>

18-36 Oracle8iアプリケーション開発者ガイド - XML Vol.2

Page 177: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

ハンドラのカスタム XSQLアクション・ハンドラ要素の定義

ハンドラのカスタムハンドラのカスタムハンドラのカスタムハンドラのカスタム XSQLアクション・ハンドラ要素の定義アクション・ハンドラ要素の定義アクション・ハンドラ要素の定義アクション・ハンドラ要素の定義その他の有効な方法として、アクション・ハンドラ要素名およびハンドラ・クラスを対応付ける XSQLConfig.xmlファイルのエントリを定義できます。たとえば、Oracle XSQL Servletに添付のデフォルトの XSQLConfig.xmlファイルには、次の構文が含まれます。

<actiondefs> <action> <elementname>param</elementname>   <handlerclass>oracle.xml.xsql.actions.ExampleGetParameterHandler</handlerclass> </action> <action> <elementname>current-date</elementname>  <handlerclass>oracle.xml.xsql.actions.ExampleCurrentDBDateHandler\ </handlerclass> </action></actiondefs>

構成ファイル内のこれらのエントリによって、ページは次の構文を使用できます。

<xsql:param name="myparam"/>

これは、次に示すより冗長な構文にかわるものです。

<xsql:action handler="oracle.xml.xsql.actions.ExampleGetParameterHandler" name="myparam"/>

同様に、次の構文も使用できます。

<xsql:current-date/>

これも、次に示すより冗長な構文にかわるものです。

<xsql:action handler="oracle.xml.xsql.actions.ExampleDBDateHandler"/>

XSQL Servletの使用 18-37

Page 178: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

XSQLConfig.xmlを使用した環境のチューニング

XSQLConfig.xmlを使用した環境のチューニングを使用した環境のチューニングを使用した環境のチューニングを使用した環境のチューニングXSQLConfig.xmlファイルを使用して、XSQL Servletで作業するための環境をチューニングします。XSQLConfig.xmlファイル内で環境用に設定できるパラメータは次のとおりです。

� <xsql:query>アクション用のデータベース・ラウンドトリップごとにフェッチするレコードのデフォルト数

� XSQLページの LRUキャッシュ・サイズ(ページ単位)

� XSLTスタイルシートの LRUキャッシュ・サイズ(スタイルシート単位)

� XSQL Servlet用に使用するバッファ付き出力ストリーム・サイズ(バイト単位)(ゼロの場合は使用禁止)

� 接続プールの初期サイズと増分サイズ、および接続をクリーン・アップするためのタイムアウトしきい値(秒単位)

� XSLTスタイルシート・プールの初期サイズと増分サイズ、およびスタイルシート・インスタンスをクリーン・アップするためのタイムアウトしきい値(秒単位)

� キャラクタ・セット情報の設定が抑制されるMIMEタイプ

XSQL構成設定の変更構成設定の変更構成設定の変更構成設定の変更XSQL Page Processorは、自身が実行中の環境の CLASSPATHで最初に検索できるXSQLConfig.xmlファイルをロードします。XSQLConfig.xmlファイルには、XSQL Page Processorおよび XSQL Servletの機能に影響する構成パラメータが含まれます。各構成パラメータについては、XSQLConfig.xmlファイル内のそのパラメータの前にあるコメントを参照してください。XSQLConfig.xmlファイルは、デフォルトでは ./xsql/libにあります。

制限事項制限事項制限事項制限事項

マルチバイト名を持つマルチバイト名を持つマルチバイト名を持つマルチバイト名を持つ HTTPパラメータパラメータパラメータパラメータマルチバイト名を持つ HTTPパラメータ(漢字表記の名前を持つパラメータなど)は、<xsql:include-request-params>を使用して XSQLページに挿入すると、適切に処理されます。<xsql:query>タグの問合せ文内でマルチバイト名を持つパラメータの参照を試みると、パラメータの値に対して空の文字列が戻されます。

解決策解決策解決策解決策パラメータに非マルチバイト名を使用してください。このパラメータは、引続きマルチバイト値を持つことができ、このマルチバイト値は正しく処理できます。

SQL文内の文内の文内の文内の CURSOR()ファンクションファンクションファンクションファンクションSQL文で CURSOR()ファンクションを使用すると、CURSOR()文がネストされ、外部CURSOR()ファンクションが空の行セットを戻した場合、「Exhausted Result Set」エラーが発生する場合があります。

18-38 Oracle8iアプリケーション開発者ガイド - XML Vol.2

Page 179: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

FAQ: XSQL Servlet

FAQ: XSQL Servlet

XSQL Servletデモ実行中のデモ実行中のデモ実行中のデモ実行中の NoClassDefFoundError

質問質問質問質問XSQL Servletおよび XML Parser for Javaの最新バージョンを指示どおりに設定しました。Java Webサーバーおよび Allaire社製の JRunの両方で、次のエラー(これは JRunからのもの)が発生します。CLASSPATHは正しく設定され、xsql拡張子もサーブレットにマップしており、その他にも問題はありません。

(Running servlet) java.lang.NoClassDefFoundError:oracle/xml/parser/v2/XSLException at oracle.xml.xsql.XSQLServlet.doGet(XSQLServlet.java:118) at javax.servlet.http.HttpServlet.service(HttpServlet.java:715) at javax.servlet.http.HttpServlet.service(HttpServlet.java:840) at com.livesoftware.jrun.JRun.runServlet(JRun.java, Compiled Code) at com.livesoftware.jrun.JRunGeneric.handleConnection(JRunGeneric.java:116) at com.livesoftware.jrun.service.web.JRunWebServiceHandler.handleOutput(JRunWeb ServiceHandler.java:266) atcom.livesoftware.jrun.service.web.JRunWebServiceHandler.handleRequest(JRunWebServiceHandler.java,Compiled Code) atcom.livesoftware.jrun.service.ThreadConfigHandler.run(ThreadConfigHandler.java, Compiled Code)

回答回答回答回答これは、xmlparserv2.jarがサーバー側の CLASSPATHにないために発生するエラーです。CLASSPATHが正しく編集されていることを再度確認してください。JRunの場合、この再確認は、JRunの Adminアプリケーションで次のとおり行います。

1. 「General」タブをクリックします。

2. 「Java」サブタブをクリックします。

3. 次のとおり、「Java ClassPath」ボックスに(すべてを 1行で)挿入します。

E:/xsql/lib/xmlparserv2.jar;E:/xsql/lib/oraclexmlsql.jar;E:/xsql/lib/oraclexsql.jar;E:/xsql/lib/classes111.zip;E:/xsql/lib;... etc ...

XSQL Servletの使用 18-39

Page 180: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

FAQ: XSQL Servlet

XSQL出力を出力を出力を出力を WMLドキュメントに変換中にドキュメントに変換中にドキュメントに変換中にドキュメントに変換中に DTDを指定する方法を指定する方法を指定する方法を指定する方法

質問質問質問質問XMLの XSQLデモを使用したデモの作成を試みています。このデモは、Apacheサーバーでは問題なく機能します。現在、XSQL出力をWMLおよび VML形式に変換するための独自のスタイルシートの作成を試みています。これらのプログラム(携帯電話シミュレータ)では、WMLドキュメントに特定の DTDを割り当てる必要があります。

XSQL出力をWMLドキュメントに変換中に特定のDTDを指定する方法はありますか ?

回答回答回答回答<xsl:output/>という XSLTスタイルシートの組込み機能を使用します。

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output type="xml" doctype-system="your.dtd"/> <xsl:template match="/"> </xsl:template> : :</xsl:stylesheet>

これによって、XML結果が生成されます。

<!DOCTYPE xxxx SYSTEM "your.dtd">

この結果には、前述の宣言が含まれます。"your.dtd"には、任意の有効な絶対 URLまたは相対 URLを指定できます。

XSQL Servletの条件文の条件文の条件文の条件文

質問質問質問質問XSQLファイルに条件文を記述できますか ?できる場合、条件文を記述するための構文を教えてください。

次に例を示します。

<xsql:choose> <xsql:when test="@security='admin'"> <xsql:query> SELECT .... </xsql:query> </xsq:when> <xsql:when test="@security='user'"> <xsql:query> SELECT .... </xsql:query>

18-40 Oracle8iアプリケーション開発者ガイド - XML Vol.2

Page 181: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

FAQ: XSQL Servlet

</xsql:when>...</xsql:if>

回答回答回答回答� <xsql:dml>を使用して、テストを実行する PL/SQLプロシージャをコールすることをお

薦めします。例に示された文は、完成済の XMLドキュメントを処理するために使用される XSL文のようです。dbms_sqlをコールする PL/SQLプロシージャを使用して適切な文を生成し、REFカーソルを使用することをお薦めします。

� 現在、XSQLファイルへの条件文の書込みはサポートされていません。リリース 1.0.0.0の次の計画では、XSQLアクション・ハンドラを XSLTと統合する予定です。これによって、<xsql:choose>などの XSQLの同等機能を使用して XSLTのすべての機能をコピーするかわりに、<xsl:choose>などの XSLTタグと <xsql:query>を融合または調和させることができます。

オラクル社では XSQLおよび XSLT両者の最適な融合を模索しており、次回のリリースでそれが実現する予定です。現時点では、<xsql:ref-cursor-function>タグを使用したり、REFカーソルを戻す PL/SQLで条件を決定することができます。

XSQLファイル内の複数問合せファイル内の複数問合せファイル内の複数問合せファイル内の複数問合せ : ページ・パラメータページ・パラメータページ・パラメータページ・パラメータ

質問質問質問質問次のとおり、XSQLファイル内に 2つの問合せがあります。

<xsql:query> select col1,col2 from table1</xsql:query><xsql:query> select col3,col4 from table2 where col3 = {@col1} => the value of col1 in the previous query</xsql:query>

最初の問合せの SELECT構文のリスト項目の値を 2番目の問合せで使用する方法を教えてください。

XSQL Servletの使用 18-41

Page 182: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

FAQ: XSQL Servlet

回答回答回答回答これは、次のとおりページ・パラメータを使用して行うことができます。

<page xmlns:xsql="urn:oracle-xsql" connection="demo"> <!-- ページ・パラメータの値"xxx"は、最初の行の最初の列になります。 --> <xsql:set-page-param name="xxx"> select one from table1 where ... </xsl:set-param-param> <xsql:query> select col3,col4 from table2 where col3 = {@xxx} </xsql:query></page>

XSQL、、、、URN、、、、xsl:スクリプトスクリプトスクリプトスクリプト

質問質問質問質問XSQL Servletを使用してパラメータを受け取り、それらを後で使用するために、後でアクセスする少数のページに確実に保存する必要があります。そのため、これらのパラメータを非表示フィールドまたはそれに相当するものとして保存することを考えています。次のような独自の XMLドキュメントを構築する必要があります。

<root xmlns:xsql blah blah blah> <toBeTurnedAsForm action="doThis" method="POST"> <aHiddenField name="secret" value="{@IGotYou}"/> .... </toBeTurnedAsForm></root>

<aHiddenField>タグは XSQL名前空間に属していないため、変数の解析が行われません。解析を行う簡単な方法はありますか ?「select '{@IGotYou}' from dual」という問合せを実行せずに、解析を行う必要があります。

xmlns:xsqlで「urn」は何を意味しますか ?

回答回答回答回答<xsql:include-param name="IGotYou"/>を使用してパラメータの値をデータ・ページに挿入すると、XSLスタイルシートは次のものを変換できるようになります。

<IGotYou>ValueOfIGotYou</IGotYou>

これは、HTMLページ内の任意の場所に変換できます。

urnは、「ユニフォーム・リソース名(Uniform Resource Name)」を意味します。

18-42 Oracle8iアプリケーション開発者ガイド - XML Vol.2

Page 183: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

FAQ: XSQL Servlet

XSQLデモデモデモデモ : 適切な適切な適切な適切な JDKバージョンの使用バージョンの使用バージョンの使用バージョンの使用

質問質問質問質問Java Webサーバー上で XSQLデモの実行を試みています。CLASSPATHを設定し、.xsql拡張子も XSQL Servletにマップしています。デモ・ページに移動し、XSQLファイルを指す任意のリンクをクリックすると、次のエラー・メッセージが戻されます。

XSQL-00001: Cannot locate requested XSQL file. Check the name.

これはマッピング問題が原因と思われますが、拡張子はマップ済です。また、Java Webサーバーのコンソールにもこのメッセージが表示されます。これは、servlet)oracle.xml.xsql.XSQLServlet: initを検索できます。

回答回答回答回答XSQLファイルの位置が問題である可能性があります。Apache上では、XSQLファイルは..htdocs/xsql/demo/ディレクトリにあり、完全修飾パスは適切に登録されています。

Java Webサーバー 2.0を起動するために使用する単純なバッチ・ファイルを作成することによって、このサーバー用の CLASSPATHを設定しています。また、Servlet Aliases設定ページで、oracle.xml.xsql.XSQLServletに *.xsqlという別名を設定しています。

また、Java Webサーバーは、デフォルトでポート 8080を使用します。他のサーブレットを実行できますか ?

コメントコメントコメントコメントこの問題は、Solaris上で Apacheを使用している場合にも発生します。調査の結果、この問題は、XSQLコマンドライン・ユーティリティ使用時にも発生することが判明しています。この問題は、ApacheのデフォルトのWebユーザーで発生することに注意してください。コマンドは、Oracleユーザーまたは Oracleルートでは問題なく機能します。

この問題は、JDK 1.1.5で発生します。JDK 1.1.7および JDK 1.1.8では、問題は改善されているようです。現在、部分的な解決方法はありますが、これではデモ接続問題は解決されません。ただし、この問題も将来には解決される予定です。

XMLからの表の作成からの表の作成からの表の作成からの表の作成

質問質問質問質問次のとおり、UNIV表を作成しました。新しい XMLテンプレート・ファイルが作成されるたびに、次のとおり新しい表スキーマを作成する必要があります。

CREATE TYPE student_type as object( id int,name varchar(20), math int,english int);/

XSQL Servletの使用 18-43

Page 184: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

FAQ: XSQL Servlet

CREATE TYPE department_type as object( name varchar(10), student student_type);/CREATE TYPE college_type AS OBJECT( name VARCHAR(50), dept department_type);/CREATE TABLE univ (college college_type);

前述の表を適切な XMLファイルから自動的に作成できますか ?このプロジェクトでは、XMLファイルおよび DTDファイルは、プロジェクトの一部であるDTD Factoryによって動的に作成されます。XMLファイルから表を自動的に作成するソリューションが必要です。

回答回答回答回答Oracle XML Parserで XSLT Processorを使用すると、XMLドキュメントに基づいて表を作成するために必要な SQLファイルを生成できます。

質問質問質問質問既存の XMLドキュメントをインポートするための表を作成する必要があります。XMLに基づいて表を自動的に作成する方法を教えてください。XML SQL Utilityをダウンロード済であるため、すでに XML Parserはあると思われます。この優れた機能を起動する方法を教えてください。

回答回答回答回答XMLドキュメントにマップする SQLスクリプトを含む多くのデモが含まれている XSQL Serveletのアーカイブをダウンロードします。INSCLAIM.sqlは、オブジェクト・ビューおよびいくつかの表を使用し、優れたテンプレートとして機能するため、最適な SQLファイルであるといえます。

質問質問質問質問実際には、Insclaim.sqlと「Oracle XML Parserで XSLT Processorを使用すると、XMLドキュメントに基づいて表を作成するために必要な SQLファイルを生成できます。」というメッセージの間には大きな違いがあります。

Insclaim.sqlを手動で作成した場合、DTDを擬似実行するための構造に基づいて構造を作成する必要があります。これ以外の方法はありますか ?

Java Servletに非対応のMicrosoft IIS 4.0サーバーを実行しています。単純なプロトタイプを作成するための時間的制約から、現時点では Apacheをインストールすることは考えていません。たとえば、一連の有効な XMLをリポジトリにインポートし、スタイルシートを検索し、検索でき次第、そのスタイルシートを適用できるようにするための方法を教えてください。

18-44 Oracle8iアプリケーション開発者ガイド - XML Vol.2

Page 185: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

FAQ: XSQL Servlet

回答回答回答回答前述の XSLTに関する回答は、段階的なソリューションの模索を前提としたものであり、問題を迅速に解決できるソリューションを前提としていません。次に、自動 XSLTソリューションへのアプローチを示します。

� insclaim.sqlの応答を向上させるためにマッピングを行います。

� このマッピングに基づき、ダミー・データを使用して単純な SQL INSERTスクリプトを手動で作成します。

� その後、ドキュメント・データを取り出す XSLT命令でダミー・データを置換することによって、スタイルシートを作成します。

現時点では、DTDがスキーマを適切に記述しないため、この問題を迅速かつ自動的に解決できる方法はありません。ただし、XML Schemaがサポートされる予定です。

XSQL Servlet: JServプロセスへのアクセスプロセスへのアクセスプロセスへのアクセスプロセスへのアクセス

質問質問質問質問デモ helloworld.xsqlを実行しています。最初の段階で、次のエラーが発生しました。

XSQL-00007 cannot aquire a database connection to process page

要求がタイムアウトし、jserv/log/jserv.logファイルに次のメッセージが現れます。

Connections from Localhost/127.0.0.1 are not allowed

これはセキュリティの問題でしょうか ? XSQLページを処理するための明示的な権限を付与する必要がありますか ?必要な場合、その方法を教えてください。Apache Webサーバー、Apache JServおよび Oracle8iをデータベースとして使用しています。Oracleクライアントをインストール済で、データベース接続を取得するための Tnsnames.oraファイルも構成済です。XSQLConfig.xmlファイルも適切に構成されています。

回答回答回答回答これは、一般的な JServの問題のようです。jserv.propertiesのsecurity.allowedAddresses=propertyが、現在のホストによる Javaが実行している JServプロセスへのアクセスを許可していることを確認する必要があります。任意の JServ Servletを正常に実行できますか ?

コメントコメントコメントコメントこの問題は解決済です。Apache JServを停止したとき、JVMが適切にクリーン・アップしていませんでした。すべてを再起動した後、XSQL Servletは正常に機能しています。

XSQL Servletの使用 18-45

Page 186: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

FAQ: XSQL Servlet

Java Webサーバー上でのサーバー上でのサーバー上でのサーバー上での XSQL Servletを介したを介したを介したを介した XSUのコールのコールのコールのコール

質問質問質問質問現在、Java Webサーバー 2.0上に常駐するサーブレットを介して XML SQL Utilityをコールする必要があります。これを行うことはできますか ? XMLドキュメントを戻す問合せを実行するストアド・プロシージャを直接コールし、それをサーブレットを介してブラウザ上で直接ホストすることはできますか ?これを行う場合、ブラウザは IE5.0である必要がありますか ?

回答回答回答回答これは、XSQL Servletが行う操作です。XSQL Servletは、XML Parser for Javaおよび XML SQL Utilityを使用して SQL問合せ用の XMLページを生成するサーブレットです。XSQL Servletを使用してみてください。

クライアント側バージョンの XML SQL Utilityおよび XML Parserも直接コールできます。この操作は、XMLを文字列として戻すストアド・プロシージャを実行している場合にも有効です。

ブラウザは IE5.0である必要はありません。違いは、IE5.0を使用した場合、XMLファイルが提供されると、ブラウザがデフォルトのスタイルシートを適用して XMLファイルを正確に表示することです。他のブラウザでは、XMLファイルはテキスト・ファイルとしてのみ表示されます。XMLドキュメントに XSL処理を適用して HTMLに変換すると、すべてのブラウザ上で XMLドキュメントを正確に表示できます。

XSQL Servlet: リモート・データベースへの接続リモート・データベースへの接続リモート・データベースへの接続リモート・データベースへの接続

質問質問質問質問XSQL Servletは、Windows NTシステム(Oracle8i、Apache Webサーバー、IE5)では正常に実行できますが、Solarisでは実行できません。Solarisシステムには Oracle8iをインストールしていません。このため、XSQL ServletはWindows NTマシン上のリモートのOracle8iに接続する必要があり、ここに問題があると考えています。

Solarisシステムには、Oracle 8.0、Apache 1.6.3、Apache JServ 1.0および UNIX版の XSQL Servletをインストール済です。

Apache JServをテストすると、正常に機能します。xsql_servletデモ・ページへのアクセスを試みたときに、次のエラー・メッセージが表示されました。

In the err_log file...[Wed Aug 4 11:21:20 1999] [notice] Apache/1.3.6 (Unix) ApacheJServ/1.0 configured -- resuming normal operationsCould not establish the JDBC connection:java.sql.SQLException: No more data to read from socketand in the mod_jserv.log file....[04/08/1999 12:03:55:536] (ERROR) ajp11: Servlet Error: java.lang.NullPointerException: null[04/08/1999 12:03:55:536] (ERROR) an error returned handling request via protocol "ajpv11"

18-46 Oracle8iアプリケーション開発者ガイド - XML Vol.2

Page 187: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

FAQ: XSQL Servlet

XSQLConfig.xmlファイルには、次のものが含まれています。

... scott tiger jdbc:oracle:thin:@pc2929:1521:peter xmldemo xmldemo jdbc:oracle:thin:@pc2929:1521:peter

また、dburlを次のとおり設定することを試みました。

jdbc:oracle:thin:@(description=(address=(protocol=tcp)(host=pc2929)(port=1521))(source_route=yes)(connect_data=(sid=peter)))

Sunシステムから SQL*Plusを使用した場合、リモート・データベース(peter)への接続は正常に機能します。何が問題ですか ?単純に、データベースがWebサーバーと同じマシン上にある必要があるということですか ?

回答回答回答回答XSQL Servletは、JDBCが接続できるすべての場所で機能するように設計されています。XSQL Servletを使用する場合、データベースがWebサーバーと同じマシン上に存在する必要はありません。ただし、XSQL Servletが XSQLConfig.xmlファイル内の接続情報を基に、Apache JServの CLASSPATH環境内の JDBCドライバを使用して、JDBC接続を正常に確立する必要はあります。

ほとんどすべての問題は、JServの CLASSPATHが JDBCの classes111.zipを正しく含んでいないために発生します。

次の確認を行うことをお薦めします。

1. JDBCのサンプル・プログラムを XSQLConfig.xml内にある接続文字列で実行してみて、問題なく接続できることを確認します。

2. JServの CLASSPATHが Oracle JDBCドライバの最新のアーカイブ・ファイルを正しく含んでいることを確認します。

コメントコメントコメントコメントこの問題は、最新の Oracle 8.05用 JDBCライブラリを Solarisマシン上にインストールすると解決されました。

XSQL Servletの使用 18-47

Page 188: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

FAQ: XSQL Servlet

Apache JServ

質問質問質問質問Apache 1.3.9、JServおよび XSQL Servletを「XSQL Servletリリース・ノート」で説明されているとおりに設定しました。http://127.0.0.1/xsql/demo/helloworld.xsqlを実行すると、mod_jserv.logに [11/10/1999 20:25:47:383] (ERROR) ajp12: Servlet Error: ClassNotFoundException: oracle.xml.xsql.XSQLServletというエントリが表示されます。

JServが前述のクラスを検索できない原因を教えてください。「IsItWorking」の例は問題なく機能しているため、Apacheと JServは通信しています。

relevant (?) stuff from jserv.properties:wrapper.bin=c:\jdk1.2.2\bin\java.exe wrapper.classpath=C:\Program Files\Apache Group\Apache JServ\ApacheJServ.jarwrapper.classpath=c:\jsdk2.0\lib\jsdk.jarwrapper.classpath=C:\xsql\lib\classes111.zipwrapper.classpath=C:\xsql\lib\xmlparser.jarwrapper.classpath=C:\xsql\lib\oraclexmlsql.jarrelevant (?) stuff from mod_jserv.conf:ApJServMount /servlets /rootApJServAction .xsql /servlets/oracle.xml.xsql.XSQLServlet

回答回答回答回答wrapper.classpath=c:\jsdk2.0\lib\jsdk.jar: : wrapper.classpath=C:\xsql\lib\classes111.zip: : wrapper.classpath=C:\xsql\lib\xmlparser.jar: : wrapper.classpath=C:\xsql\lib\oraclexmlsql.jarYou are missing:wrapper.classpath=C:\xsql\lib\oraclexsql.jar

これは、XSQL Servlet自身の jarファイルです。

ドキュメントの作成ドキュメントの作成ドキュメントの作成ドキュメントの作成

質問質問質問質問XSQL Servletをインストールして次の問合せを実行すると、実行中に XSQL Servletは XMLドキュメントを作成します。XMLドキュメントはどのように作成されるのでしょうか ? XMLドキュメントはハードコードする必要があると理解しています。XMLドキュメントが自動的に作成されるときの方法を教えてください。このような場合に DTDが保持される場所も教えてください。DTDとともに埋め込まれた XMLドキュメントが見つかりません。パーサーが解析を行う場所も教えてください。ドキュメントを作成するためにインストールする必要があるツールはありますか ?

SELECT salesperson, SUM(sales) AS Total FROM sales WHERE sale_date between '01-JAN-99' and '30-JUN-99' GROUP BY salesperson SELECT salesperson, SUM(sales) AS Total

18-48 Oracle8iアプリケーション開発者ガイド - XML Vol.2

Page 189: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

FAQ: XSQL Servlet

FROM sales WHERE sale_date between '01-JUL-99' and '31-DEC-99' GROUP BY salesperson

この問合せは次のような結果を生成します。

この結果が自動的に作成されるときの方法を教えてください。

Steve 23465500 Mark 39983400 Steve 67788400 Mark 55786990

回答回答回答回答XSQL Page Processor(XSQL Servletが使用)は、タグを検索してページを処理します。XSQL Page Processorは、タグが検索されるたびに OracleXMLQueryオブジェクト(Oracle XML SQL Utility for Javaの一部で、個別にダウンロード可能)の新しいインスタンスを作成し、このユーティリティに現在の問合せに対する XMLを生成するように要求します。XSQL Servletを実行するために必要なすべてのものは、XSQL Servletとともにバンドルされて配布されます。XSQL Servletが依存するライブラリの詳細は、XSQL Servletのリリース・ノートを参照してください。

XSQL Servletおよびおよびおよびおよび JRun

質問質問質問質問IIS 4.0上で XSQL Servletおよび JRunを使用すると、xsql emp.xsqlを実行したときに、エラー・メッセージ「XSQL-00007:Cannot acquire a database connection to process pageConnection refused(DESCRIPTION=(TMP=)(VSNUM=135286784)......」が表示されます。Oracle8iの JDBCディレクトリにあるサンプルを使用して JDBCをテストしましたが、何も問題はありませんでした。また、他のサーブレットを実行して JRun環境もテストしました。SQLWを使用して接続することもできます。問題は、XSQLConfig.xmlファイルであると思われます。このファイルは、jsm-default\services\jws\htdocs\に起動用 index.html ファイルとともに格納しています。ポートに問題があるのでしょうか ? JRunのデフォルトのポート 8000を使用しています。この他に、XSQL Servletが Oracle8iに接続できるようにするために必要な操作または実行できるテストはありますか ?

回答回答回答回答XSQL Servletは、正常に XSQLConfig.xmlを検索しています(このファイルの検索が問題である場合は、他のエラーが発生します)。問題は、XSQL Servletがファイル内の接続情報を使用して正常に JDBC接続を取得していないことです。XSQLConfig.xmlファイルでどのような JDBCドライバを使用していますか ? Thinドライバでない場合、適切なパスに必要なDLLが正しく設定されているか確認してください。

XSQL Servletの使用 18-49

Page 190: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

FAQ: XSQL Servlet

XSQL Servletおよびおよびおよびおよび Oracle8i Lite

質問質問質問質問XSQL Servletを Oracle8i Lite(Windows 98)および Apache Webサーバー /JServとともに使用する予定です。CLASSPATH(POLJDBCドライバを含む)に olite40.jarを設定していますが、エラー・メッセージ「no oljdbc40 in java.library.path」が表示されます。Oracle8i Liteに対して XSQL Servletを実行するために必要な追加操作はありますか ?

回答回答回答回答次の命令を挿入する必要があります。

.¥jserv¥conf¥jserv.properties file:wrapper.path=C:¥orant¥bin

この場合、C:¥orant¥binは(デフォルトで)OLJDBC40.DLLが存在するディレクトリです。

これは、wrapper.classpathではなく wrapper.pathであることに注意してください。

XSQL Servlet内の複数パラメータ内の複数パラメータ内の複数パラメータ内の複数パラメータ

質問質問質問質問XSQL Servletに関する質問です。<input type="checkbox">に対して、1つの同じ名前を使用して複数の <form>パラメータを処理する方法はありますか ?

回答回答回答回答XSQL Servletは、単に SQL要求を送信するためのシェルです。ロジックを記述して HTMLを SQLへの要求に変換する必要があります。

INPUTタグのNAME属性を使用して選択を識別し、それをWHERE句で使用します。

XSQL Servletおよびおよびおよびおよび Oracle7リリースリリースリリースリリース 7.3

質問質問質問質問Oracle7リリース 7.3での XSQL Servletの実行を妨げる要因はありますか ? XML SQL Utilityは、クライアント側ユーティリティとして使用する場合、Oracle7リリース 7.3で使用できると理解しています。

18-50 Oracle8iアプリケーション開発者ガイド - XML Vol.2

Page 191: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

FAQ: XSQL Servlet

回答回答回答回答XSQL Servletには、本質的に Oracle7リリース 7.3の障害となる要因はありません。サーブレットの実行環境で、CLASSPATHに適切な JDBCドライバがあること(デフォルトの8.1.5ドライバが機能しない場合、このドライバが機能する必要があります)、および接続する必要があるデータベースに接続するために必要な <dburl>を、XSQLConfig.xmlファイルが適切に反映していることを確認する必要があります。

XSQLとととと XSL間のパラメータ渡し間のパラメータ渡し間のパラメータ渡し間のパラメータ渡し

質問質問質問質問フォーム p1.xsqlから渡された @pnameの値に基づいて、N個のレコードを含むフォームp2.xsqlを起動しようとしています。たとえば、現在これが 100個を超えるレコードを戻し、previousタグおよび nextタグを使用して一度に 10個のレコードのみを参照しているとします。nextタグをクリックして @pnameのリストから他の 10個のレコードのセットをフェッチする必要がありますが、ここで pnameの値を渡すことができません。たとえば、<next>の hrefで、同様の操作を行う方法を教えてください。pnameは、名前値パラメータとして渡す必要があります。

回答回答回答回答「max-rows」および「skip-rows」を使用してみましたか ? 「max-rows」を 10に設定し、

@pnameおよび「skip-rows」の変数をグローバル変数またはスタティック変数としてクライアント側プログラム内に保持します。その後は、サーブレットに渡す「skip-rows」変数の値を増減させる必要があるのみです。

最新のリリースには、この操作を容易にするいくつかの新しい機能が含まれています。ただし、リリース 0.9.6.2以前の場合、パラメータ値をデータ・ページに挿入する最も簡単な方法は、次の問合せを行うことです。

<query rowset-element="" row-element=""> select '{@pname}' as pname from dual</query>

XSQL Servletの使用 18-51

Page 192: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

FAQ: XSQL Servlet

条件問合せ条件問合せ条件問合せ条件問合せ

質問質問質問質問条件問合せを XSQLファイル自体に挿入することはできますか ?

たとえば、3つのパラメータがある場合、移入されるものに応じて問合せ文字列を構成する必要があります。たとえば、次のとおり記述することはできますか ?

if(p1=NULL) <qurey1>.....</query1>if (p2=NULL) <query1>.....</query2>

その他についてはどうですか ?

回答回答回答回答Javaスクリプトを使用してクライアント側で選択を行うことをお薦めします。XSQLは言語ではないため、選択およびループの点で非常に制限されています。

3つの異なる選択項目は完全に異なっているのですか ?または同じ表に対するWHERE句がわずかに異なるのみですか ?後者の場合、次の選択を行うことができます。

SELECT .... FROM TABLE WHERE ( ({@p1}='yes') and (...something...))

または

( {{@p2}='yes') and (...something else...))

XSQL Servletおよび挿入または更新および挿入または更新および挿入または更新および挿入または更新

質問質問質問質問XSQL Servletを使用して DML操作を行うことはできますか ?表から選択し、それを XMLまたは HTML形式で表示します。サーブレットを使用して挿入または更新を行うことはできますか ?

回答回答回答回答XSQL Servletは、リリース 0.9.8.6からその他の新しい拡張とともに、<xsql:dml>タグを使用してこの機能をサポートします。

18-52 Oracle8iアプリケーション開発者ガイド - XML Vol.2

Page 193: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

FAQ: XSQL Servlet

XSQL Servletおよび動的および動的および動的および動的 SQL

質問質問質問質問XSQL Servletは動的 SQLをサポートしますか ?たとえば、株価銘柄スクリーニング・ページの場合、ユーザー入力に基づいて、WHERE句を動的に構築する必要があります。したがって、最低株価収益率に「3」が入力された場合、WHERE句「where PE_Ratio >= 3」が問合せに追加されます。この場合、20個以上の異なるパラメータが動的にマップされる可能性があるため、すべての異なる組合せをネストすることは現実的ではありません。

回答回答回答回答XSQL Servletは字句置換パラメータをサポートするため、すべての問合せの一部および全体をパラメータ化することができます。極端な例として <xsql:query> {@sql} </xsql:query>があります。この場合、問合せ全体が 1つのパラメータ(名前は sql)で渡されます。ただし、パラメータおよび置換変数のすべての組合せは有効であり、必要な操作を行うために使用できます。変数はバインド変数ではなく字句置換変数であるため、次のような問合せを行うことができます。

<xsql:query> select {@collist} from {@table} where {@where} order by {@orderby}</xsql:query>

<xsql:query>要素に対して XML属性を使用することによって、パラメータのデフォルト値を指定できます。指定後、値を要求に指定すると、この要素をオーバーライドできます。

...<xsql:query collist="ename, sal" orderby="sal desc" where="1=1" from="dept"> select {@collist} from {@table} where {@where} order by {@orderby} </xsql:query>

その後、ページへの要求を orderby=decode(comm,null,1,0)などに指定すると、デフォルト値を変更できます。

XSQL Servletおよびその他のリレーショナル・データベースおよびその他のリレーショナル・データベースおよびその他のリレーショナル・データベースおよびその他のリレーショナル・データベース

質問質問質問質問XSQL Servletはその他のリレーショナル・データベースと相互作用しますか ?

回答回答回答回答相互作用します。そのためには次の操作を行う必要があります。

� JDBCドライバを CLASSPATH内に適切に設定します。

� XSQLConfig.xmlファイルでの接続のために、<driver>および <dburl>を適切に設定します。

XSQL Servletの使用 18-53

Page 194: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

FAQ: XSQL Servlet

<XSQL:DML>でのでのでのでの OUT変数の非サポート変数の非サポート変数の非サポート変数の非サポート

質問質問質問質問<xsql:dml>の使用について確認します。1つの OUTパラメータを含むストアド・プロシージャをコールしてみましたが、結果が返りません。実行したコードは、結果として次の文を生成します。

<xsql-status action="xsql:dml" rows="0"/>.

回答回答回答回答今回のリリースでは、OUT変数は <xsql:dml>でサポートされません。INパラメータのみがサポートされます。これは、XSQLでの {@param}変数は字句変数であり、バインド変数ではないためです。OUT値を使用する具体的な用途を教えてください。それと同じ結果を実現するための他の方法をご提案します。ストアド・プロシージャの OUT値を XSQLデータ・ページに戻すことをお考えですか ?

例については、最新リリースの ./xsql/test/dml-test.xsqlを参照してください。

質問質問質問質問XSQLページに OUT変数値を挿入することを考えています。これを行うための解決策はありますか ?

回答回答回答回答最も単純な解決策は、プロシージャをファンクションでラップしてから、<xsql:query>を使用してそのファンクション値を SELECT文の一部として選択することです。

次のようなプロシージャがあると想定します。

procedure foo( y number, x out number );

次のようなファンクションを構築できます。

function foowrapper( y number) return number is x number;begin foo(y,x);return x;end;.

次に、<xsql:query>アクション・ハンドラ要素を使用して、次の選択を行います。

<xsql:query> select foowrapper({@yparam}) from dual</xsql:query>

18-54 Oracle8iアプリケーション開発者ガイド - XML Vol.2

Page 195: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

FAQ: XSQL Servlet

Java Webサーバーでのサーバーでのサーバーでのサーバーでの XSQL Page Processorの実行の実行の実行の実行

質問質問質問質問XSQL Servletは、Java Webサーバー上で実行できますか ?リリース・ノートには、XSQL Servletは Apache Webサーバー上でテスト済とあります。Java Webサーバー上で実行できる場合、何かアドバイスはありますか ?

回答回答回答回答XSQLはサーブレットであるため、Java Webサーバーを含むすべてのサーブレット・エンジン上で実行できます。実際に Java Webサーバー上で作業はしていませんが、XSQLページ用のハンドラを XSQL Servletに対応付けるためのメカニズムがあると思われます。一度対応付けを行うと、Java Webサーバーは XSQL要求を受け入れると思われます。

XSQL Servletの仕様に適合するすべてのサーブレット・エンジンは XSQL要求を受け入れますが、XSQL Servletとテスト済のWebサーバーについては、Oracle XSQL Servletリリース・ノートを参照してください。

Sun社の Java Server Web Development Kit(JSWDK 1.0)は、XSQL Servletとテスト済のサーバーの 1つです。インストールに必要な基本手順は、次の手順のみです(詳細はサーブレット・エンジンによって異なる場合があります)。

� 次の ZIPファイル、アーカイブ・ファイルおよびディレクトリがサーブレット・エンジンの CLASSPATHにあることを確認します。

� ./xsql/lib/xmlparserv2.jar

� ./xsql/lib/oraclexmlsql.jar

� ./xsql/lib/oraclexsql.jar

� ./xsql/lib/classes111.zip

� ./xsql/lib

� 拡張子 .xsqlを Servletのクラス oracle.xml.xsql.XSQLServletにマップします。

SIDエラーおよびエラーおよびエラーおよびエラーおよび JDKエラーエラーエラーエラー

質問質問質問質問Websphere Application Server 3.0を使用していますが、構成ファイルを置くための正確な場所がわかりません。また、すべてを設定して helloworld.xsqlへのアクセスを試みると、次のエラーが発生します。

Oracle XSQL Servlet Page Processor 0.9.8.6 (Technology Preview)XSQL-007: Cannot acquire a database connection to process page.Connection refused(DESCRIPTION=(TMP=)(VSNNUM=135286784)(ERR=12505)(ERROR_

XSQL Servletの使用 18-55

Page 196: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

FAQ: XSQL Servlet

STACK=(ERROR=(CODE=12505)(EMFI=4))))

これは、実際には構成ファイルが検索されていることを意味しますか ?ユーザーはscott/tigerとして設定済です。

回答回答回答回答構成ファイルが検索されていることを意味します。HelloWorld.xsqlデモ・ページが変更されていないことを前提に、「demo」という名前の接続の <connectiondef>情報に基づいて、JDBC接続を試みています。

XSQLConfig.xmlファイルには、デフォルトで次のような「demo」接続のエントリが含まれています。

<connection name="demo"> <username>scott</username> <password>tiger</password> <dburl>jdbc racle:thin:@localhost:1521:ORCL</dburl> <driver>oracle.jdbc.driver.OracleDriver</driver> </connection>

したがって、次のことが原因でエラーが発生している可能性が高いといえます。

1. データベースがローカル・ホスト・マシン上にない。

2. データベースの SIDが ORCLではない。

3. TNSリスナー・ポートが 1521ではない。

これらの値がデータベースに適切であることを確認すると、正常に操作を行うことができます。

コメントコメントコメントコメント現在は、正常に機能しています。SIDが不適切でした。

18-56 Oracle8iアプリケーション開発者ガイド - XML Vol.2

Page 197: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

FAQ: XSQL Servlet

カスタム・アクション・ハンドラ要素の使用カスタム・アクション・ハンドラ要素の使用カスタム・アクション・ハンドラ要素の使用カスタム・アクション・ハンドラ要素の使用 : XSQLActionHandlerImpl

質問質問質問質問XSQLActionHandlerImplを拡張する Javaクラスにパラメータを渡すことはできますか ?

XSQL用の広範なドキュメントがある場所を教えてください。

回答回答回答回答カスタム・アクション・ハンドラ要素の使用方法については、リリース・ノートおよびJavaDocを参照してください。また、配布される XSQL Servletには、次の 2つのサンプルアクション・ハンドラ要素も含まれています。

./xsql/src/oracle/xml/xsql/actions/ExampleGetParameterHandler.java

./xsql/src/oracle/xml/xsql/actions/GetCurrentDBDateHandler.java

これらは、アクション・ハンドラ要素がその init()メソッドを使用して XSQL Page内のアクション・ハンドラ要素の属性およびネストした要素からパラメータを取り出す方法、およびそれらが結果として生成されるページに出力を書き込む方法を示します。アクション・ハンドラ要素ハンドラにパラメータを渡す必要はなく、すべての情報は XSQLページ内の属性または要素から取り出されます。

次に例を示します。

<xsql:action handler="my.pkg.SampleHandler" arg1="foo" arg2="bar"> <statement> 1,2,3,4,5 </statement> </xsql:action>

アクション・ハンドラは、標準の DOM方法をその init()メソッドで使用して(またはXSQLActionHandlerImplで提供される getAttributeAllowingParam()などのヘルパー・メソッドの一部を使用して)パラメータ化された値を取り出し、処理を実行できます。

XSQL Servlet: アクション・ハンドラ要素(ハンドラ)の記述によるブラウアクション・ハンドラ要素(ハンドラ)の記述によるブラウアクション・ハンドラ要素(ハンドラ)の記述によるブラウアクション・ハンドラ要素(ハンドラ)の記述によるブラウザザザザ Cookieの設定の設定の設定の設定

質問質問質問質問何人かのユーザーがログインし、挿入や更新などの操作を行っているアプリケーションがあります。そのような DML文(SELECT文以外)がデータベースで実行されるたびに、それを実行したユーザーおよびそれが変更された時間で user_idというフィールドを更新する必要があります。

使用しているアプリケーションは、一連の XSQLファイルで構成される基本的なものです。Webサーバーは Apache Webサーバーです。また、Java Servlet(JRun)も使用しています。最新の XSQL Servletも設定済です。

XSQL Servletの使用 18-57

Page 198: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

FAQ: XSQL Servlet

user_id/name、接続元の IPアドレスなどのユーザー・プロファイルが含まれている構造の配列が格納されている場所を教えてください。たとえば、環境変数が設定されている場所を教えてください。

回答回答回答回答環境変数がWebサーバー・マシン上にあり、望ましいものではない可能性が高いといえます。ユーザーがアプリケーションにログインした場合、小規模なカスタム XSQLアクション・ハンドラ要素を記述してブラウザ Cookieをそのユーザー名の値に設定し、後のデータベース挿入操作時に USER_IDの値としてその Cookie値を参照できます。

質問質問質問質問それを Cookie上に格納して使用することは理想的ですが、ブラウザ Cookieの設定方法がわかりません。参照できる例がありますか ?

「set Cookie:Name=.....」や owa_Cookieに関する情報を目にしました。XSQLの場合に使用する必要があるものを教えてください。

回答回答回答回答次のことを行うアクション・ハンドラが必要です。:import javax.servlet.http.*;:XSQLServletPageRequest xspr = (XSQLServletPageRequest)getPageRequest();if (xspr.getRequestType().equals("Servlet")) { HttpServletResponse resp = xspr.getHttpServletResponse();Cookie newCookie = new Cookie("name","value"); resp.addCookie(newCookie);} }

JRun搭載の搭載の搭載の搭載の IIS上での上での上での上での XSQL Servletのインストールのインストールのインストールのインストール

質問質問質問質問Webサーバーとして、JRun搭載の IISを使用しています。XSQL Servletのインストール方法を教えてください。

回答回答回答回答JRun管理ユーティリティ内の適切な場所を使用して、サーブレット・エンジンのCLASSPATH内に次のものが含まれていることを確認します。これは、XSQL Servletを Eドライブにインストール済であることを前提とします。¥ ...E:¥xsql¥lib¥classes111.zipE:¥xsql¥lib¥oraclexmlsql.jarE:¥xsql¥lib¥oraclexsql.jar

18-58 Oracle8iアプリケーション開発者ガイド - XML Vol.2

Page 199: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

FAQ: XSQL Servlet

E:¥xsql¥lib¥xmlparserv2.jarE:¥xsql¥lib

.xsql拡張子を oracle.xml.xsql.XSQLServletサーブレット・クラスに対応付けていることを確認してください。

XSQLアクション・ハンドラの記述によるアクション・ハンドラの記述によるアクション・ハンドラの記述によるアクション・ハンドラの記述による HTTP要求パラメータの取得要求パラメータの取得要求パラメータの取得要求パラメータの取得

質問質問質問質問Cookieを使用するか、またはブラウザ側に格納された ENV構造を使用して、HTTP要求パラメータを取得しようとしています。Cookiesの場合、値を設定および取得する方法はわかっています。ブラウザ上で Cookieを使用禁止にすることを試み、これが機能しない場合のためにこのオプションが必要です。環境変数を使用できる必要があります。これを行う方法を教えてください。

Perlスクリプトを使用して、ENV構造 /配列を取得し、同様に使用できます。XMLおよびXSQLで同様の機能を実現する方法を教えてください。

回答回答回答回答ユーザーを識別するための Cookieの代替としてサーバー・マシンのシステム環境変数を確認することが有効であるとは思われません。環境変数は実行可能なWebサーバーを実行しているユーザーのユーザー名を示すのみで、ブラウザにログインした現行ユーザーのユーザー名は示しません。

Javaで検索している情報にアクセスできた場合、XSQLアクション・ハンドラを記述してそれを取得できます。これを処理するための組込み機能はありません。

「ブラウザからの環境変数」が単純に HTTP要求パラメータを意味する場合、XSQL Servletに含まれるサンプル・アクション・ハンドラを確認すると有効です。このサンプルは、同様の機能を実装するために HTTP要求パラメータを取得する方法を示しています。

HTMLキー値ペアのキー値ペアのキー値ペアのキー値ペアの XMLへの変換への変換への変換への変換 : <xsql:insert-request>

質問質問質問質問<xsql:insert-request>タグの使用方法を教えてください。HTMLフォームのキー値ペアをXMLに変換する必要があります。XSQL Servletおよび <xsql:insert-request>を使用すると変換が容易になると理解しています。

変換済の XMLファイルはディレクトリに保存する必要があります。次にそのフォームを示します。

<html><body> Insert a new news story... <form action="form.xsql" method="post"> <b>Title</b>

XSQL Servletの使用 18-59

Page 200: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

FAQ: XSQL Servlet

<input type="text" name="title_field" size="30"><br> <b>URL</b><input type="text" name="url_field" size="30"><br> <br> <input type="submit"> </form><body></html>

また、次に form.xsqlを示します(ここから先に進めません)。

<?xml version = '1.0'?><xsql:insert-request-params transform=????/>

変換済 XMLファイルの保存方法を教えてください。XMLファイルを処理のために他のサーブレットに渡す方法を教えてください。この場合、XMLファイルは保存するのでしょうか ?

回答回答回答回答<xsql:insert-request>は、ポストされた XMLドキュメント(または XMLドキュメントに合成されたポストされた HTMLフォーム・パラメータ)をデータベースに挿入するように設計されています。これをファイルとしてサーバーに保存する場合、次のメソッドをコールするカスタム・アクション・ハンドラ(「リリース・ノート」を参照)を記述できます。

getPageRequest().getPostedDocument()

次に、新しい FileWriter()を作成して、これをファイルに記述します。

少数の Javaの行である必要があります。最も困難なことは、そのファイルに付ける名前を決定することです。

XSQLファイルからのプロシージャの実行ファイルからのプロシージャの実行ファイルからのプロシージャの実行ファイルからのプロシージャの実行

質問質問質問質問次のエラー・メッセージがあります。

- <test>- <xsql-error action="xsql:include-owa"> <statement>declare buf htp.htbuf_arr; param_names owa.vc_arr; param_values owa.vc_arr; rows integer := 32767; outclob CLOB;begin param_names(1) := 'HTTP_COOKIE'; param_values(1) := ''; param_names(2) := 'SERVER_NAME'; param_values(2) := 'shanthi.ijs.com'; param_names...

次に、XSQLファイルを示します。

<test connection="system" xmlns:xsql="urn:oracle-xsql"><

18-60 Oracle8iアプリケーション開発者ガイド - XML Vol.2

Page 201: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

FAQ: XSQL Servlet

xsql:include-owa>scott.get_date;</xsql:include-owa></test>

回答回答回答回答DBMS_LOBパッケージがインストールされていないか、または正しくインストールされていないようです。Oracleインストールの ./rdbms/adminにある DBMSLOB.SQLを再実行してみてください。

XMLを使用したデータベースへの複数フォームのロードを使用したデータベースへの複数フォームのロードを使用したデータベースへの複数フォームのロードを使用したデータベースへの複数フォームのロード

質問質問質問質問現在、Web上で Oracle Formsを実行しています。XMLを使用すると、フォームを介さずに複数のレコードを Oracleデータベースにロードするためのリアルタイム・インタフェースを作成できますか ?

回答回答回答回答作成できます。XSQL Servletには、HTMLフォームおよびポストされた XMLドキュメントをデータベースにポストするための機能を、SQL、XMLおよび XSLTを使用した作業を容易にするための機能、ドキュメントおよびデモが含まれています。

データベースへのデータベースへのデータベースへのデータベースへの XMLドキュメントの挿入および保存ドキュメントの挿入および保存ドキュメントの挿入および保存ドキュメントの挿入および保存 : 機能のテスト機能のテスト機能のテスト機能のテスト

質問質問質問質問XML SQL Utility、XSQL Servlet、Apache Webサーバー、Apache JServなどをWindows NT上にダウンロードしました。それぞれのインストレーション・ガイドに従って、インストール済です。XMLドキュメントをデータベースに挿入および保存するための機能をテストする方法を教えてください。また、前述のすべてのインストール済ソフトウェアが正しく対話しているかどうかをテストする方法も教えてください。Windows NT上で Oracle8クライアントを、Sun Solaris上で Oracle8i Serverを使用しています。

回答回答回答回答XSQL Servletには、正しくインストール済かどうかをテストするために有効な多くのデモンストレーションが含まれています。それらのデモの設定方法については、Oracle XSQL Servletリリース・ノートを参照してください。

XSQL Servletの使用 18-61

Page 202: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

FAQ: XSQL Servlet

18-62 Oracle8iアプリケーション開発者ガイド - XML Vol.2

Page 203: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

XML Transviewer Be

19

XML Transviewer Beansの使用の使用の使用の使用

この章の内容は次のとおりです。

� Oracle XML Transviewer Beansの入手方法

� XDK for Java: XML Transviewer Beansの機能

� XML Transviewer Beansの使用

� XML Source Viewer Bean(oracle.xml.srcviewer API)の使用

� XMLTransformPanel Bean(oracle.xml.transviewer API)の使用

� XSL Transformer Bean(oracle.xml.async API)の使用

� DOM Builder Bean(oracle.xml.async API)の使用

� Tree Viewer Bean(oracle.xml.treeviewer API)の使用

� 提供されているサンプル Transviewer Beanの実行

� サンプル Transviewer Beanのインストール

� Transviewer Beanの例 1: AsyncTransformSample.java

� Transviewer Beanの例 2: ViewSample.java

� Transviewer Beanの例 3: XMLTransformPanelSample.java

ansの使用 19-1

Page 204: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

Oracle XML Transviewer Beansの入手方法

Oracle XML Transviewer Beansの入手方法の入手方法の入手方法の入手方法Oracle XML Transviewer Beansは、Oracle8i Enterprise Editionおよび Standard Editionのリリース 8.1.7に付属しています。

XDK for Java: XML Transviewer Beansの機能の機能の機能の機能XML Transviewer Beansを使用すると、XMLアプリケーションにグラフィカルまたはビジュアル的なインタフェースを追加できます。

JDeveloperからの直接アクセスからの直接アクセスからの直接アクセスからの直接アクセスBeanのカプセル化には、JDeveloperなどの Java統合開発環境から直接アクセスできるドキュメントおよび記述子が含まれます。

Transviewer Beanのサンプル・アプリケーションのサンプル・アプリケーションのサンプル・アプリケーションのサンプル・アプリケーションソフトウェアには、すべての Beanを使用して簡単な XMLエディタおよび XSLTによる変換を行うサンプル・アプリケーションが含まれています。

XML SQL Utility(XSU)に含まれるこのサンプル・アプリケーションは、次のタスクを行います。

� データベースを問い合せて、XMLを生成します。

� XSLスタイルシートを使用して、XMLを変換します。

� 結果の XMLドキュメントを高速に取り出すために、データベースに格納します。

データベースへの接続性データベースへの接続性データベースへの接続性データベースへの接続性XML Transviewer Beansにはデータベースへの接続性もあります。XML Transviewer Beansは JDBC対応のデータベースに直接接続して、XMLファイルや XSLファイルを取出しおよび格納できます。

XML Transviewer BeansXML Transviewer Beansは、次の 5つの Beanで構成されています。

DOM Builder BeanDOM Builder Beanはビジュアルでない Beanです。この Beanは、XMLドキュメントからDOMツリーを構築します。

DOM Builder Beanは、Beanインタフェースを使用して XML Parser for Javaの DOMParserクラスをカプセル化し、その機能を拡張して非同期解析を可能にします。リスナーを登録すると、Javaアプリケーションは大規模または連続したドキュメントを解析し、制御をすぐに

19-2 Oracle8iアプリケーション開発者ガイド - XML Vol.2

Page 205: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

XDK for Java: XML Transviewer Beansの機能

コール元に戻すことができます。19-4ページの「DOM Builder Bean(oracle.xml.async API)の使用」を参照してください。

XSL Transformer BeanXSL Transformer Beanはビジュアル的ではない Beanです。この Beanは XMLファイルを受け入れ、入力の XSLスタイルシートによって指定された変換を適用し、結果の出力ファイルを作成します。

XSL Transformer Beanを使用すると、適切な XSLスタイルシートを適用することによって、XML、HTML、DDLなどのほぼすべてのテキスト・フォーマットに XMLドキュメントを変換できます。

� XSL Transformer Beanをその他の Beanと統合すると、アプリケーションまたはユーザーは変換結果をすぐに参照できます。

� XSL Transformer Beanは、サーバー側のアプリケーションまたはサーブレットが XMLドキュメント(問合せ結果の XML表現など)をブラウザで表示するために、HTMLでレンダリングするための基礎として使用できます。

19-8ページの「XSL Transformer Bean(oracle.xml.async API)の使用」を参照してください。

Tree Viewer BeanTree Viewer Beanは、XML書式のファイルをツリーとして図形で表示します。このツリーのブランチおよびリーフはマウスで操作できます。19-12ページの「Tree Viewer Bean(oracle.xml.treeviewer API)の使用」を参照してください。

XML Source Viewer BeanXML Source Viewer Beanはビジュアル的な Java Beanです。XML Source Viewer Beanを使用すると、XMLドキュメントをビジュアルに編集できます。XML Source Viewer Beanでは、XMLドキュメントを編集アプリケーションで修正するときに、XMLおよび XSL書式のファイルの構文を色でハイライトして表示します。これによって、ファイルの参照および編集が容易になります。この Beanは DOM Builder Beanと容易に統合でき、指定された DTDに対する解析前または解析後の検証を可能にします。19-13ページの「XML Source Viewer Bean(oracle.xml.srcviewer API)の使用」を参照してください。

XML Transform Panel BeanXML Transform Panel Beanはビジュアル的な Java Beanです。XML Transform Panel Beanを使用すると、XMLドキュメントに XSL変換を適用し、その結果を表示できます。これによって、XML入力ファイルおよび XSL入力ファイルを編集できます。19-17ページの「XMLTransformPanel Bean(oracle.xml.transviewer API)の使用」を参照してください。

XML Transviewer Beansの使用 19-3

Page 206: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

XML Transviewer Beansの使用

XML Transviewer Beansの使用の使用の使用の使用XML Transviewer Beansを使用する場合のガイドラインは、次の項を参照してください。

� DOM Builder Bean(oracle.xml.async API)の使用

� XSL Transformer Bean(oracle.xml.async API)の使用

� Tree Viewer Bean(oracle.xml.treeviewer API)の使用

� XML Source Viewer Bean(oracle.xml.srcviewer API)の使用

� XMLTransformPanel Bean(oracle.xml.transviewer API)の使用

DOM Builder Bean((((oracle.xml.async API)の使用)の使用)の使用)の使用DOMBuilder()クラスは、W3Cの勧告に準拠した XML 1.0のパーサーを実装しており、XMLドキュメントを解析して DOMツリーを構築します。

解析は別々のスレッドで行われ、ツリーが構築されたときの通知には DOMBuilderListenerインタフェースが使用される必要があります。

バックグラウンドでの非同期解析への使用バックグラウンドでの非同期解析への使用バックグラウンドでの非同期解析への使用バックグラウンドでの非同期解析への使用DOM Builder Beanは、Beanインタフェースを使用して、XML Parser for Javaをカプセル化します。DOM Builder Beanは、機能を拡張して非同期解析を行うことができます。Javaアプリケーションは、リスナーを登録することによってドキュメントを解析し、コール元に制御を戻すことができます。

バックグラウンド・スレッドでの非同期解析は、ビジュアル的なアプリケーションで対話式で使用されます。たとえば、通常のパーサーで大きいファイルを解析する場合、解析が完了するまでユーザー・インタフェースが操作不可能になることがあります。DOM Builder Beanを使用すると、これを回避できます。DOM Builder Beanの解析メソッドをコールすると、制御がすぐにアプリケーションに戻され、「Parsing, please wait」というメッセージが表示されます。「Cancel」ボタンがある場合は操作を取り消すこともできます。バックグラウンドの解析タスクが完了したときに domBuilderOver()メソッドが DOMBuilder Beanによってコールされた場合でも、アプリケーションは続行できます。

DOM Builder Beanによる多くのファイルの高速解析による多くのファイルの高速解析による多くのファイルの高速解析による多くのファイルの高速解析多くのファイルを解析する場合、DOM Builder Beanを使用すると時間を大幅に短縮できます。ファイルを 1つずつ解析する場合と比較すると、最大で 40%も高速になります。

参照参照参照参照 : 『Oracle8i XMLリファレンス・ガイド』およびこのマニュアルの第 3章「Oracleの XMLコンポーネントおよび一般的な FAQ」も参照してください。

19-4 Oracle8iアプリケーション開発者ガイド - XML Vol.2

Page 207: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

DOM Builder Bean(oracle.xml.async API)の使用

DOM Builder Beanの使用方法の使用方法の使用方法の使用方法図 19-1に、DOM Builder Beanの使用方法を示します。

1. 解析される XMLドキュメントは、ファイル、文字列バッファまたは URLとして入力されます。

2. 前述の入力によって、DOMBuilder.addDOMBuilderListener(DOMBuilderListener)メソッドが入力されます。これによって DOMBuilderListenerが追加されます。

3. DOMBuilder.parser()メソッドが XMLドキュメントを解析します。

4. オプションで、解析済の結果にその他の処理を行うことができます。適用する使用可能なメソッドのリストは、表 19-1を参照してください。

5. DOMBuilderListener APIは、DOMBuilderOver()メソッドを使用してコールされます。DOMBuilderListener APIは、アプリケーションから非同期コールを受信したときにコールされます。このインタフェースは、非同期解析中のイベントに関する通知を受信するために実装される必要があります。このインタフェースを実装しているクラスは、addDOMBuilderListenerメソッドを使用して DOM Builderに追加される必要があります。

使用可能な DOMBuilderListenerメソッドは次のとおりです。

� domBuilderError(DOMBuilderEvent)このメソッドは、解析エラーが発生した場合にコールされます。

� domBuilderOver(DOMBuilderEvent)このメソッドは、解析が完了したときにコールされます。

� domBuilderStarted(DOMBuilderEvent)このメソッドは、解析が開始したときにコールされます。

6. DOMBuilder.getDocument()は結果の DOMドキュメントをフェッチし、DOMドキュメントを出力します。

XML Transviewer Beansの使用 19-5

Page 208: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

DOM Builder Bean(oracle.xml.async API)の使用

図図図図 19-1 DOMBuilder Beanの使用方法の使用方法の使用方法の使用方法

ファイル、�文字列バッファ�またはURLXML入力�

使用可能な�メソッドの�リストを参照�

DOMBuilder.parse()

DOMBuilder.addDOMBuilder

Listener()

.DOMBuilderListener()

DOMドキュメント�

DOMBuilderListener.DOMBuilderOver()

DOMBuilder.getDocument()

その他の�タスクを�実行する�

.DOMBuilderError()

.DOMBuilderStarted()

非同期�コール�

Transviewer Beans: DOM Builder Bean

19-6 Oracle8iアプリケーション開発者ガイド - XML Vol.2

Page 209: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

DOM Builder Bean(oracle.xml.async API)の使用

.

表表表表 19-1 DOMBuilder Bean((((oracle.xml.async API)))): メソッドメソッドメソッドメソッド

メソッドメソッドメソッドメソッド 説明説明説明説明

addDOMBuilderErrorListener(DOMBuilderErrorListener) DOMBuilderErrorListenerを追加します。

addDOMBuilderListener(DOMBuilderListener) DOMBuilderListenerを追加します。

getDoctype() DTDを取得します。

getDocument() ドキュメントを取得します。

getId() パーサー・オブジェクト IDを返します。

getReleaseVersion() Oracle XML Parserのバージョン番号を返します。

getResult() ドキュメントを取得します。

getValidationMode() 検証モードの設定を返します。

parse(InputSource) 指定された入力ソースからの XMLを解析します。

parse(InputStream) 指定された入力ストリームからの XMLを解析します。

parse(Reader) 指定された入力ストリームからの XML外部 DTDを解析します。

parse(String) 指定された URLからの XML外部 DTDを解析します。

parse(URL) 指定された URLが指す XML外部 DTDドキュメントを解析し、それに対応する XMLドキュメントの階層を作成します。

parseDTD(InputSource, String) 指定された入力ソースからの XML外部 DTDを解析します。

parseDTD(InputStream, String) 指定された入力ストリームからの XML外部 DTDを解析します。

parseDTD(Reader, String) 指定された入力ストリームからの XML外部 DTDを解析します。

parseDTD(String, String) 指定された URLからの XML外部 DTDを解析します。

parseDTD(URL, String) 指定された URLが指す XML外部 DTDドキュメントを解析し、それに対応する XMLドキュメントの階層を作成します。

removeDOMBuilderErrorListener(DOMBuilderErrorListener) DOMBuilderErrorListenerを削除します。

removeDOMBuilderListener(DOMBuilderListener) DOMBuilderListenerを削除します。

run() スレッドで実行します。

XML Transviewer Beansの使用 19-7

Page 210: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

XSL Transformer Bean(oracle.xml.async API)の使用

XSL Transformer Bean((((oracle.xml.async API)の使用)の使用)の使用)の使用XSL Transformer Beanは XMLファイルを受け入れ、入力 XSLスタイルシートによって指定された変換を適用して、ファイルを作成および出力します。この Beanを使用すると、XSLスタイルシートを適用することによって、XML、HTML、DDLなどのほぼすべてのテキストベースの形式に XMLドキュメントを変換できます。

XSL Transformer Beanをその他の Beanと統合すると、アプリケーションまたはユーザーは変換の結果をすぐに参照できます。

XSL Transformer Beanは、サーバー側のアプリケーションまたはサーブレットが XMLドキュメント(問合せ結果の XML表現など)をブラウザで表示するために HTMLでレンダリングするための基礎として使用できます。

XSL Transformer Beanは、Beanインタフェースを使用して XML Parser for Javaの XSLT処理エンジンをカプセル化し、その機能を拡張して非同期変換を許可します。

Javaアプリケーションは、リスナーを登録することによって、コール元にすぐに制御を返し、大きいドキュメントまたは連続したドキュメントを解析できます。

setBaseURL(URL) 外部エンティティおよび DTDをロードするためのベース URLを設定します。

setDebugMode(boolean) ドキュメントのデバッグ情報を有効にするフラグを設定します。

setDoctype(DTD) DTDを設定します。

setErrorStream(OutputStream) エラーおよび警告を出力するための出力ストリームを作成します。

setErrorStream(OutputStream, String) エラーおよび警告を出力するための出力ストリームを作成します。

setErrorStream(PrintWriter) エラーおよび警告を出力するための出力ストリームを作成します。

setNodeFactory(NodeFactory) ノード・ファクトリを設定します。

setPreserveWhitespace(boolean) 空白保持モードを設定します。

setValidationMode(boolean) 検証モードを設定します。

showWarnings(boolean) 警告を出力するかどうかを決定します。

表表表表 19-1 DOMBuilder Bean((((oracle.xml.async API)))): メソッド(続き)メソッド(続き)メソッド(続き)メソッド(続き)

メソッドメソッドメソッドメソッド 説明説明説明説明

19-8 Oracle8iアプリケーション開発者ガイド - XML Vol.2

Page 211: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

XSL Transformer Bean(oracle.xml.async API)の使用

多くのファイルの変換に最適な多くのファイルの変換に最適な多くのファイルの変換に最適な多くのファイルの変換に最適な XSL Transformer BeanXSL変換は時間がかかる場合があります。多くのファイルを変換するアプリケーションではXSL Transformer Beanを使用してください。この Beanは、複数のファイルを同時に変換できます。

即時応答が可能なユーザー・インタフェースを提供する即時応答が可能なユーザー・インタフェースを提供する即時応答が可能なユーザー・インタフェースを提供する即時応答が可能なユーザー・インタフェースを提供する XSL Transformer Bean

XSL Transformer Beanをビジュアル的なアプリケーションに使用すると、即時応答が可能なユーザー・インタフェースが提供されます。この場合、DOMBuilder Beanと同様の問題があります。

XSLTransformerListener()メソッドを実装することによって、変換の完了が、コール元のアプリケーションに通知されます。アプリケーションは、変換の要求から受信の間に自由にその他のタスクを実行できます。

XSL Transviewer Beanの使用例の使用例の使用例の使用例 1: 基礎となるデータが変更される場合の基礎となるデータが変更される場合の基礎となるデータが変更される場合の基礎となるデータが変更される場合のHTMLの再生成の再生成の再生成の再生成

この使用例では、XSL Transformer Beanを適用する方法の 1つを示します。

1. SQL問合せを作成します。選択された XMLデータを CLOB表へ格納します。

2. XSL Transfomer Beanを使用して XSLスタイルシートを作成し、適切なデータ表示が行われるまで、対話式でこのスタイルシートを XMLデータに適用します。この表示は、XSL変換によって生成される HTMLである場合もあります。

3. 必要な SQL(データ選択)および XSL(データ表示)を得た後、その SQL問合せが使用する表またはビューにトリガーを作成します。このトリガーは、ストアド・プロシージャを実行できます。このストアド・プロシージャは、次のような操作を行えます。

� 問合せの実行

� スタイルシートの適用

� 結果の HTMLの CLOB表への格納

4. ソース・データの表が更新された場合、この処理を再度実行できます。

CLOB表に格納された HTMLは、問合せ中の表に格納された最新のデータを常にミラー化します。JSP(JavaServer Pages)は HTMLを表示できます。

この使用例では、複数のエンド・ユーザーが複数のデータ問合せを作成することはないため、データベースに大きな負荷はかかりません。HTMLは、基礎となるデータが変更された後にのみ再生成されます。

XML Transviewer Beansの使用 19-9

Page 212: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

XSL Transformer Bean(oracle.xml.async API)の使用

XSL Transformer Beanの使用方法の使用方法の使用方法の使用方法図 19-2に、XSL Transformer Beanの使用方法を示します。この Beanを実装する例は、「Transviewer Beanの例 1: AsyncTransformSample.java」を参照してください。

図図図図 19-2 XSL Transformer Beanの使用方法の使用方法の使用方法の使用方法

1. XSLTransfomerは、XSLTransfomer.addXSLTransformerListener(XSLTransformerListener)メソッドを使用して、XSLスタイルシートおよび XMLドキュメントを入力します。このメソッドはリスナーを追加します。

2. XSLTransfomer.processXSL()メソッドは、XSL変換をバックグラウンドで開始します。

3. オプションで、その他の作業を XSLTransformer Beanに割り当てることができます。表19-2は、使用可能な XSLTransformer Beanメソッドを示しています。

XSLスタイルシート、�XMLドキュメント�

入力�

使用可能な�メソッドの�リストを参照�

XSLTransformer.processXSL()

XSLTransformer.addXSLTransformer

Listener()

XListener.xslTransformer

Over()非同期�コール�

XMLドキュメント�・フラグメント�

XSLTransformer.getResult()

その他の�タスクを�実行する�

Transviewer Beans: XSL Transformer Bean

19-10 Oracle8iアプリケーション開発者ガイド - XML Vol.2

Page 213: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

XSL Transformer Bean(oracle.xml.async API)の使用

4. 変換が完了すると非同期コールが行われ、XSLTransformerListener.xslTransformerOver()メソッドがコールされます。非同期変換中のイベントの通知を受信するには、このインタフェースが実装されている必要があります。このインタフェースを実装するクラスは、addXSLTransformerListenerメソッドを使用して XSLTransformerイベント・キューに追加される必要があります。

5. XSLTransformer.getResult()メソッドは、結果のドキュメントに対して XMLドキュメント・フラグメントを返します。

6. このメソッドは、XMLドキュメント・フラグメントを出力します。

表表表表 19-2 XSLTransformer Bean: メソッドメソッドメソッドメソッド

メソッドメソッドメソッドメソッド 説明説明説明説明

addXSLTransformerErrorListener(XSLTransformerErrorListener) エラー・イベント・リスナーを追加します。

addXSLTransformerListener(XSLTransformerListener) リスナーを追加します。

getId() 一意の XSLTransformer IDを返します。

getResult() 結果として生成されるドキュメント・フラグメントを返します。

processXSL(XSLStylesheet, InputStream, URL) バックグラウンドで XSL変換を開始します。

processXSL(XSLStylesheet, Reader, URL) バックグラウンドで XSL変換を開始します。

processXSL(XSLStylesheet, URL, URL) バックグラウンドで XSL変換を開始します。

processXSL(XSLStylesheet, XMLDocument) バックグラウンドで XSL変換を開始します。

processXSL(XSLStylesheet, XMLDocument, OutputStream) バックグラウンドで XSL変換を開始します。

removeDOMTransformerErrorListener(XSLTransformerErrorListener) エラー・イベント・リスナーを削除します。

removeXSLTransformerListener(XSLTransformerListener) リスナーを削除します。

run()

setErrorStream(OutputStream) XSLプロセッサが使用するエラー・ストリームを設定します。

showWarnings(boolean) XSLプロセッサが使用する showWarningsフラグを設定します。

XML Transviewer Beansの使用 19-11

Page 214: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

Tree Viewer Bean(oracle.xml.treeviewer API)の使用

Tree Viewer Bean((((oracle.xml.treeviewer API)の使用)の使用)の使用)の使用Tree Viewer Beanは、XMLドキュメントをツリーとして表示します。この Beanは、次のXML DOMノードを認識します。

� タグ

� 属性名

� 属性値

� コメント

� CDATA

� PCDATA

� PI(処理命令)データ

� PI(処理命令)名

� 記法

この Beanは、入力として org.w3c.dom.Documentオブジェクトを取ります。

図 19-3に、XML Tree Viewer Beanの使用方法を示します。

DOM XMLドキュメントは、XMLTreeView.setXMLDocument(doc)メソッドへの入力です。この入力によって、XML Tree Viewerが XMLドキュメントに対応付けられます。

使用可能な Tree Viewer Beanメソッドは次のとおりです。

� getPreferredSize() - XMLTreeViewの推奨サイズを返します。

� setXMLDocument(Document) - XMLTreeViewerを XMLドキュメントに対応付けます。

� updateUI() - XMLTreeViewに強制的にユーザー・インタフェースを更新 /リフレッシュさせます。

図図図図 19-3 XML Tree Viewer Beanの使用方法の使用方法の使用方法の使用方法

DOMドキュメント�

XML入力�

XMLTreeView.setXMLDocument

(doc)

TransViewer Beans: XML Tree Viewer Bean

19-12 Oracle8iアプリケーション開発者ガイド - XML Vol.2

Page 215: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

XML Source Viewer Bean(oracle.xml.srcviewer API)の使用

XML Source Viewer Bean((((oracle.xml.srcviewer API)の使用)の使用)の使用)の使用XML Source Viewer Beanは、XMLドキュメントを表示するビジュアル的な Java Beanです。この Beanは、XML/XSL構文を色でハイライトすることによって、XMLファイルおよび XSLファイルの参照を容易にします。また、編集モードを使用可能にします。

XML Source Viewer Beanは、DOM Builder Beanと簡単に統合できます。この Beanは、指定された DTDに対する解析前または解析後のビジュアル化および検証を可能にします。

XML Source Viewer Beanは、次の XMLトークン型を認識します。

� タグ

� 属性名

� 属性値

� コメント

� CDATA

� PCDATA

� PI(処理命令)データ

� PI(処理命令)名

� 記法

各トークン型には、フォアグラウンド・カラーおよびフォアグラウンド・フォントがあります。デフォルトのカラーおよびフォントの設定は、ユーザーが変更できます。この Beanは、入力として org.w3c.dom.Documentオブジェクトを取ります。

XML Source Viewer Beanの使用方法の使用方法の使用方法の使用方法図 19-4に、XML Source Viewer Beanの使用方法を示します。これは、oracle.xml.srcviewer APIの一部です。

DOMドキュメントは、XMLSourceView.SetXMLDocument(Doc)を入力します。結果のDOMドキュメントが表示されます。「Transviewer Beanの例 2: ViewSample.java」を参照してください。

表 19-3に、XMLSourceViewメソッドのリストを示します。

XML Transviewer Beansの使用 19-13

Page 216: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

XML Source Viewer Bean(oracle.xml.srcviewer API)の使用

図図図図 19-4 XML Source Viewer Bean の使用方法の使用方法の使用方法の使用方法

表表表表 19-3 XMLSourceView Beanメソッドメソッドメソッドメソッド

メソッドメソッドメソッドメソッド 説明説明説明説明

fontGet(AttributeSet) 指定された属性セットからフォントを取得して返します。

fontSet(MutableAttributeSet, Font) mutableattributesetのフォントを設定します。

getAttributeNameFont() 属性値のフォントを返します。

getAttributeNameForeground() 属性名のフォアグラウンド・カラーを返します。

getAttributeValueFont() 属性値のフォントを返します。

getAttributeValueForeground() 属性値のフォアグラウンド・カラーを返します。

getBackground() バックグラウンド・カラーを返します。

getCDATAFont() CDATAのフォントを返します。

getCDATAForeground() CDATAのフォアグラウンド・カラーを返します。

getCommentDataFont() コメントのフォントを返します。

DOMドキュメント�入力�

xmlSourceView.SetXMLDocument

(doc)

表示されたDOM

ドキュメント�

· エディタでのXMLおよび� XSLファイルの表示� および編集を可能にする· DOM Builder Beanと� 統合する· DTDに対する解析前� または解析後の検証を� 可能にする�

使用可能な�メソッドの�リストを参照�

Transviewer Beans: XML Source Viewer Bean

19-14 Oracle8iアプリケーション開発者ガイド - XML Vol.2

Page 217: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

XML Source Viewer Bean(oracle.xml.srcviewer API)の使用

getCommentDataForeground() コメントのフォアグラウンド・カラーを返します。

getEditedText() 編集済テキストを返します。

getJTextPane() ビューア JTextPaneコンポーネントを返します。

getMinimumSize() XMLSourceViewの最小サイズを返します。

getNodeAtOffset(int) 指定されたオフセットにある XMLノードを返します。

getPCDATAFont() PCDATAのフォントを返します。

getPCDATAForeground() PCDATAのフォアグラウンド・カラーを返します。

getPIDataFont() PIデータのフォントを返します。

getPIDataForeground() PIデータのフォアグラウンド・カラーを返します。

getPINameFont() PI名のフォントを返します。

getPINameForeground() PIデータのフォアグラウンド・カラーを返します。

getSymbolFont() 記法のフォントを返します。

getSymbolForeground() 記法のフォアグラウンド・カラーを返します。

getTagFont() タグのフォントを返します。

getTagForeground() タグのフォアグラウンド・カラーを返します。

getText() XMLドキュメントを文字列として返します。

isEditable() このオブジェクトが編集可能かどうかを示すブールを返します。

selectNodeAt(int) オフセット iにある XMLノードにカーソルを移動します。

setAttributeNameFont(Font) 属性名のフォントを設定します。

setAttributeNameForeground(Color) 属性名のフォアグラウンド・カラーを設定します。

setAttributeValueFont(Font) 属性値のフォントを設定します。

setAttributeValueForeground(Color) 属性値のフォアグラウンド・カラーを設定します。

setBackground(Color) バックグラウンド・カラーを設定します。

setCDATAFont(Font) CDATAのフォントを設定します。

setCDATAForeground(Color) CDATAのフォアグラウンド・カラーを設定します。

setCommentDataFont(Font) コメントのフォントを設定します。

setCommentDataForeground(Color) コメントのフォアグラウンド・カラーを設定します。

表表表表 19-3 XMLSourceView Beanメソッド(続き)メソッド(続き)メソッド(続き)メソッド(続き)

メソッドメソッドメソッドメソッド 説明説明説明説明

XML Transviewer Beansの使用 19-15

Page 218: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

XML Source Viewer Bean(oracle.xml.srcviewer API)の使用

setEditable(boolean) このオブジェクトを編集可能にするかどうかを示すために指定されたブールを設定します。

setPCDATAFont(Font) PCDATAのフォントを設定します。

setPCDATAForeground(Color) PCDATAのフォアグラウンド・カラーを設定します。

setPIDataFont(Font) PIデータのフォントを設定します。

setPIDataForeground(Color) PIデータのフォアグラウンド・カラーを設定します。

setPINameFont(Font) PI名のフォントを設定します。

setPINameForeground(Color) PI名のフォアグラウンド・カラーを設定します。

setSelectedNode(Node) 選択された XMLノードにカーソル位置を設定します。

setSymbolFont(Font) 記法のフォントを設定します。

setSymbolForeground(Color) 記法のフォアグラウンド・カラーを設定します。

setTagFont(Font) タグのフォントを設定します。

setTagForeground(Color) タグのフォアグラウンド・カラーを設定します。

setXMLDocument(Document) XMLviewerと XMLドキュメントを対応付けます。

表表表表 19-3 XMLSourceView Beanメソッド(続き)メソッド(続き)メソッド(続き)メソッド(続き)

メソッドメソッドメソッドメソッド 説明説明説明説明

19-16 Oracle8iアプリケーション開発者ガイド - XML Vol.2

Page 219: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

XMLTransformPanel Bean(oracle.xml.transviewer API)の使用

XMLTransformPanel Bean((((oracle.xml.transviewer API)の使用)の使用)の使用)の使用XML Transform Panel Beanはビジュアル的な Beanであり、XSL変換を XMLドキュメントに適用します。この Beanは結果をビジュアル化し、入力の XMLドキュメントやファイルおよび XSLドキュメントやファイルの編集を可能にします。

この Beanは、プログラムによる入力を必要としません。これは直接ユーザーと対話するコンポーネントであり、カスタマイズはできません。

XMLTransform Panel Beanの機能の機能の機能の機能XML Transform Panel Beanには次のような機能もあります。

� ファイル・システムからは XMLファイルおよび XSLファイルを、Oracle8iからは XMLファイル、XSLファイルおよび HTMLファイルを格納および取得できます。Oracle8iでは、XSL Transformer Beanは 2列の CLOB表を使用します。最初の列はデータ名(ファイル名)を格納し、2番目の列はデータ・テキスト(ファイルのデータ)を CLOBで格納します。Beanはスキーマにあるすべての CLOB表をリストします。表をクリックすると、Beanはそのファイル名を示します。また、表の作成や削除、表からのファイルの取出しおよび表へのファイルの追加ができるため、情報の編成に有効です。

� 複数のデータベース接続をサポートします。

� データベースの結果セットから XMLを作成します。この機能によって、すべての SQL問合せを現在接続しているデータベースへ送信できます。この Beanは結果セットをXMLへ変換し、追加の処理のために、自動的にこの XMLデータを Beanの XMLバッファへロードします。

� この Beanにロードされた XMLデータおよび XSLデータを編集します。

� XSL変換を XMLバッファへ適用し、結果を表示します。この Beanを使用すると、ファイル・システムまたはデータベースの CLOBへ結果をエクスポートできます。

注意注意注意注意 : XSL Transformer Beanが作成した CLOB表は、トリガー・ベースのストアド・プロシージャによって使用され、データベースの表またはビューをこれらの CLOB表にある HTMLデータへミラー化できます。「XSL Transviewer Beanの使用例 1: 基礎となるデータが変更される場合の

HTMLの再生成」を参照してください。

XML Transviewer Beansの使用 19-17

Page 220: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

XMLTransformPanel Bean(oracle.xml.transviewer API)の使用

Transviewer Beanこの章(および XDK for Java)で使用するすべての Beansという表現は、「Transviewer Beans」と表しますが、「Transviewer Bean」と表す場合は、XML Transform Panel Beanを使用するアプリケーションという意味で使用します。言い換えると、「Transviewer Bean」は oracle.xml.transviewer APIを使用します。

コマンドラインの使用方法コマンドラインの使用方法コマンドラインの使用方法コマンドラインの使用方法Transviewer Beanは、次の操作を実行するためにコマンドラインから使用できます。

� XMLファイルの編集および解析

� XSL変換の編集および適用

� ファイル・システムまたは Oracle8iにある XML、XSLおよび結果ファイルの取出しおよび保存

DBAccess()クラスクラスクラスクラスこのクラスは、複数の XMLおよびテキスト・ドキュメントを保持する CLOB表を保持します。

各表は、次の文を使用して作成されます。

CREATE TABLE tablename FILENAME CHAR( 16) UNIQUE, FILEDATA CLOB) LOB(FILEDATA) STORE AS (DISABLE STORAGE IN ROW)

各 XML(またはテキスト)ドキュメントは表の行として格納されます。FILENAMEフィールドには、その行を検索、更新または削除するためにキーとして使用される一意の文字列があります。ドキュメントのテキストは FILEDATAフィールドに格納されます。これはCLOBオブジェクトです。CLOB表は Transviewer Beanが自動的に保持します。このクラスが保持する CLOB表は、Transviewer Beanが後で使用します。

クラスは次のタスクを行います。

� CLOB表の作成および削除

� CLOB表の内容の表示

� CLOB表にあるテキスト・ドキュメントの追加、置換または削除

参照参照参照参照 : XML Transform Panelの使用方法の例は、「Transviewer Beanの例 3: XMLTransformPanelSample.java」を参照してください。

19-18 Oracle8iアプリケーション開発者ガイド - XML Vol.2

Page 221: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

提供されているサンプル Transviewer Beanの実行

提供されているサンプル提供されているサンプル提供されているサンプル提供されているサンプル Transviewer Beanの実行の実行の実行の実行XDK for Javaの Transviewer Beanの sample/ディレクトリには、Oracle Transviewer Beansの使用方法を示すサンプル Transviewer Beanアプリケーションが含まれています。Oracle Transviewer Beansには、DOM Builder Bean、XML Source Viewer Bean、XML Tree View Bean、XSL Transformer Beanおよび XML Transform Panel Beanが含まれています。

表 19-4に、sample/ディレクトリにあるサンプル・ファイルを示します。

表表表表 19-4 sample/にあるにあるにあるにある Transviewer Beanのサンプル・ファイルのサンプル・ファイルのサンプル・ファイルのサンプル・ファイル

ファイル名ファイル名ファイル名ファイル名 説明説明説明説明

booklist.xml 例 1、2または 3で使用されるサンプル XMLファイルです。

doc.xml 例 1、2または 3で使用されるサンプル XMLファイルです。

doc.html 例 1、2または 3で使用されるサンプル HTMLファイルです。

doc.xsl 例 1、2または 3で使用されるサンプル入力 XSLファイルです。doc.xslは XSL Transformerに使用されます。

emptable.xsl 例 1、2または 3で使用されるサンプル入力 XSLファイルです。

tohtml.xsl 例 1、2または 3で使用されるサンプル入力 XSLファイルです。booklist.xmlを変換します。

AsyncTransformSample.java

「Transviewer Beanの例 1: AsyncTransformSample.java」を参照

XSL Transformer Beanおよび DOM Builder Beanを使用するビジュアルでないサンプル・アプリケーションです。これは、doc.xslで指定された XSLTスタイルシートを現在のディレクトリにあるすべての *.xmlファイルに適用します。結果は、拡張子が .logであるファイルにあります。

ViewSample.java

「Transviewer Beanの例 2: ViewSample.java」を参照

XML Source Viewer Beanおよび XML Tree View Beanを使用するビジュアル的なサンプル・アプリケーションです。これはXMLドキュメント・ファイルをビジュアル化します。

XMLTransformPanelSample.java

「Transviewer Beanの例 3: XMLTransformPanelSample.java」を参照

XML Transform Panel Beanを使用するビジュアル的なアプリケーションです。この Beanは、前述の 4つの Beanすべてを使用します。XSL変換を XMLドキュメントに適用し、結果をビジュアル化して、XMLおよび XSL入力ファイルの編集を可能にします。

XML Transviewer Beansの使用 19-19

Page 222: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

サンプル Transviewer Beanのインストール

サンプルサンプルサンプルサンプル Transviewer BeanのインストールのインストールのインストールのインストールTransviewer Beansは JDK 1.1.6以上を必要とし、JDK1.2のすべてのバージョンでも使用できます。

1. Transviewer Beansが使用する次のコンポーネントをダウンロードして、インストールします。

� Oracle JDBC Driver for Thin Client

JDK1.2以上で作業する場合は、ファイル classes12.zipの JDBCドライバのバージョン 1.2を使用します。JDK 1.1.6以上では、ファイル classes111.zipを使用してください。

JDBCドライバのバージョンは、アクセスする Oracleデータベースのバージョン以上であることを確認してください。Beansは、Oracle8.1.5データベースでテスト済です。

� Oracle XML SQL Utility(jarファイル oraclexmlsql.jar)

コンポーネントをインストールした後、classes111.zipおよび oraclexmlsql.jarをCLASSPATHに含めてください。

2. Beanおよびサンプルは Swing 1.1を使用します。JDK 1.2を使用している場合は、手順3へ進んでください。JDK 1.1を使用している場合は、Sun Microsystems社から Swing 1.1をダウンロードしてください。Swingをダウンロードした後、swingall.jarをCLASSPATHに追加します。

3. Makeファイルの JDKPATHを、JDKパスを指すように変更します。

さらに、Windows NTの場合は、Makeファイルに記述されているとおりにファイル・セパレータを変更します。

4. 「make」」」」を実行して .classファイルを生成します。

5. 次のコマンドを使用して、サンプル・プログラムを実行します。

� gmake sample1

� gmake sample2

� gmake sample3

6. ViewSampleを使用して、.logファイル内の結果をビジュアル化します。

7. 「./tohtml.xsl」の XSLTドキュメントを使用して、「./booklist.xml」の XMLドキュメントを変換します。

いくつかの .xmlファイルが、テスト用に提供されています。

19-20 Oracle8iアプリケーション開発者ガイド - XML Vol.2

Page 223: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

サンプルを実行するための環境設定

サンプルを実行するための環境設定サンプルを実行するための環境設定サンプルを実行するための環境設定サンプルを実行するための環境設定このプログラムでデータベース接続機能を使用するには、次のことを確認する必要があります。

� Oracle8iまたは iASを実行するコンピュータのネットワーク名

� ポート(通常は 1521)

� Oracleインスタンス名(通常は orcl)

また、CREATE TABLE権限を持つアカウントも必要です。

Oracle8iシステムでデフォルトのアカウント scott(パスワードは tiger)が使用可能な場合は、このアカウントを使用できます。

Makeファイルの実行ファイルの実行ファイルの実行ファイルの実行次はMakeファイル・スクリプトです。

# サンプルJavaファイル用のMakeファイル

.SUFFIXES : .java .class

CLASSES = ViewSample.class AsyncTransformSample.class XMLTransformPanelSample.class

# これをOSに適切なセパレータに変更します。PATHSEP= :

# このパスを、JDKの場所に変更します。JDK 1.1を使用する場合、# Swing 1.1もダウンロードし、CLASSPATHにswingall.jarを追加する必要があります。# JDK 1.2を使用する場合は、SwingはJDK 1.2の一部であるため、これを行う必要はありません。JDKPATH = /usr/local/packages/jdk1.2

# 次の製品jar/zipファイルが、CLASSPATHにあることを確認してください。# - Oracle JDBC Driver for Thin Client(classes111.zipファイル)# - Oracle XML SQL Utility(oraclexmlsql.jarファイル)# これらの製品は、technet.us.oracle.comからダウンロードできます。

#CLASSPATH :=$(CLASSPATH)$(PATHSEP)../lib/xmlparserv2.jar$(PATHSEP)../lib/xmlcomp.jar$(PATHSEP)../lib/jdev-rt.zip$(PATHSEP).$(PATHSEP)

注意注意注意注意 : sample1が XMLTransViewerプログラムを実行するため、XMLファイルを Oracle8iから取得および格納し、XSL変換ファイルを Oracle8iに保持して、スタイルシートを XMLに対話的に適用できます。

XML Transviewer Beansの使用 19-21

Page 224: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

Transviewer Beanの例 1: AsyncTransformSample.java

%.class: %.java$(JDKPATH)/bin/javac -classpath "$(CLASSPATH)" $<

# すべてのクラス・ファイルを作成します。all: $(CLASSES)

sample1: XMLTransformPanelSample.class$(JDKPATH)/bin/java -classpath "$(CLASSPATH)" XMLTransformPanelSamplesample2: ViewSample.class$(JDKPATH)/bin/java -classpath "$(CLASSPATH)" ViewSamplesample3: AsyncTransformSample.class$(JDKPATH)/bin/java -classpath "$(CLASSPATH)" AsyncTransformSample

Transviewer Beanの例の例の例の例 1: AsyncTransformSample.javaこの例では、複数の XMLファイルを非同期に変換するための DOM Builder BeanおよびXSL Transformer Beanの使用方法を示します。

import java.net.URL;import java.net.MalformedURLException;import java.io.IOException;import java.io.InputStream;import java.io.ObjectInputStream;import java.io.OutputStream;import java.io.File;import java.io.FileOutputStream;import java.io.PrintWriter;import java.util.Vector;

import org.w3c.dom.DocumentFragment;import org.w3c.dom.DOMException;

import oracle.xml.async.DOMBuilder;import oracle.xml.async.DOMBuilderEvent;import oracle.xml.async.DOMBuilderListener;import oracle.xml.async.DOMBuilderErrorEvent;import oracle.xml.async.DOMBuilderErrorListener;import oracle.xml.async.XSLTransformer;import oracle.xml.async.XSLTransformerEvent;import oracle.xml.async.XSLTransformerListener;import oracle.xml.async.XSLTransformerErrorEvent;import oracle.xml.async.XSLTransformerErrorListener;import oracle.xml.async.ResourceManager;import oracle.xml.parser.v2.DOMParser;import oracle.xml.parser.v2.XMLDocument;

19-22 Oracle8iアプリケーション開発者ガイド - XML Vol.2

Page 225: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

Transviewer Beanの例 1: AsyncTransformSample.java

import oracle.xml.parser.v2.XSLStylesheet;import oracle.xml.parser.v2.*;

public class AsyncTransformSample{ /** * DOM Builder Beanを使用します。 */ void runDOMBuilders () { rm = new ResourceManager (numXMLDocs);

for (int i = 0; i < numXMLDocs; i++) { rm.getResource();

try { DOMBuilder builder = new DOMBuilder(i);

URL xmlURL = createURL(basedir + "/" + (String)xmlfiles.elementAt(i)); if (xmlURL == null) exitWithError("File " + (String)xmlfiles.elementAt(i) + " not found");

builder.setPreserveWhitespace(true); builder.setBaseURL (createURL(basedir + "/")); builder.addDOMBuilderListener (new DOMBuilderListener() { public void domBuilderStarted(DOMBuilderEvent p0) {} public void domBuilderError(DOMBuilderEvent p0) {} public synchronized void domBuilderOver(DOMBuilderEvent p0) { DOMBuilder bld = (DOMBuilder)p0.getSource(); runXSLTransformer (bld.getDocument(), bld.getId()); } }); builder.addDOMBuilderErrorListener (new DOMBuilderErrorListener() { public void domBuilderErrorCalled(DOMBuilderErrorEvent p0) { int id = ((DOMBuilder)p0.getSource()).getId(); exitWithError("Error occurred while parsing " + xmlfiles.elementAt(id) + ": " + p0.getException().getMessage()); } }); builder.parse (xmlURL);

XML Transviewer Beansの使用 19-23

Page 226: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

Transviewer Beanの例 1: AsyncTransformSample.java

System.err.println("Parsing file " + xmlfiles.elementAt(i)); } catch (Exception e) { exitWithError("Error occurred while parsing " + (String)xmlfiles.elementAt(i) + ": " + e.getMessage()); } } }

/** * XSL Transformer Beanを使用します。 */ void runXSLTransformer (XMLDocument xml, int id) { try { XSLTransformer processor = new XSLTransformer (id); XSLStylesheet xsl = new XSLStylesheet (xsldoc, xslURL);

processor.showWarnings (true); processor.setErrorStream (errors); processor.addXSLTransformerListener (new XSLTransformerListener() { public void xslTransformerStarted (XSLTransformerEvent p0) {} public void xslTransformerError(XSLTransformerEvent p0) {} public void xslTransformerOver (XSLTransformerEvent p0) { XSLTransformer trans = (XSLTransformer)p0.getSource(); saveResult (trans.getResult(), trans.getId()); } }); processor.addXSLTransformerErrorListener (new XSLTransformerErrorListener() { public void xslTransformerErrorCalled(XSLTransformerErrorEvent p0) { int i = ((XSLTransformer)p0.getSource()).getId(); exitWithError("Error occurred while processing " + xmlfiles.elementAt(i) + ": " + p0.getException().getMessage()); } }); processor.processXSL (xsl, xml); // XMLドキュメントを変換します。 } catch (Exception e) {

19-24 Oracle8iアプリケーション開発者ガイド - XML Vol.2

Page 227: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

Transviewer Beanの例 1: AsyncTransformSample.java

exitWithError("Error occurred while processing " + xslFile + ": " + e.getMessage()); } }

void saveResult (DocumentFragment result, int id) { System.err.println("Transforming '" + xmlfiles.elementAt(id) + "' to '" + xmlfiles.elementAt(id) + ".log'" + " applying '" + xslFile); try { File resultFile = new File((String)xmlfiles.elementAt(id) + ".log"); ((XMLNode)result).print(new FileOutputStream(resultFile)); } catch (Exception e) { exitWithError("Error occurred while generating output : " + e.getMessage()); }

rm.releaseResource(); }

void makeXSLDocument () { System.err.println ("Parsing file " + xslFile); try { DOMParser parser = new DOMParser(); parser.setPreserveWhitespace (true); xslURL = createURL (xslFile); parser.parse (xslURL); xsldoc = parser.getDocument(); } catch (Exception e) { exitWithError("Error occurred while parsing " + xslFile + ": " + e.getMessage()); } }

private URL createURL(String fileName) throws Exception { URL url = null;

XML Transviewer Beansの使用 19-25

Page 228: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

Transviewer Beanの例 1: AsyncTransformSample.java

try { url = new URL(fileName); } catch (MalformedURLException ex) { File f = new File(fileName); try { String path = f.getAbsolutePath(); // この大量のコードは、getAbsolutePathの戻り値に // 一貫性がないために、WindowsプラットフォームでURLを // 有効にするために必要です。 String fs = System.getProperty("file.separator"); if (fs.length() == 1) { char sep = fs.charAt(0); if (sep != '/') path = path.replace(sep, '/'); if (path.charAt(0) != '/') path = '/' + path; } path = "file://" + path; url = new URL(path); } catch (MalformedURLException e) { exitWithError("Cannot create url for: " + fileName); } }

return url; } boolean init () throws Exception { File directory = new File (basedir); String[] dirfiles = directory.list(); for (int j = 0; j < dirfiles.length; j++) { String dirfile = dirfiles[j];

if (!dirfile.endsWith(".xml")) continue;

19-26 Oracle8iアプリケーション開発者ガイド - XML Vol.2

Page 229: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

Transviewer Beanの例 1: AsyncTransformSample.java

xmlfiles.addElement(dirfile); }

if (xmlfiles.isEmpty()) { System.out.println("No files in directory were selected for processing"); return false; } numXMLDocs = xmlfiles.size();

return true; }

private void exitWithError(String msg) { PrintWriter errs = new PrintWriter(errors); errs.println(msg); errs.flush(); System.exit(1); }

void asyncTransform () throws Exception { System.err.println (numXMLDocs + " XML documents will be transformed" + " using XSLT stylesheet specified in " + xslFile + " with " + numXMLDocs + " threads"); makeXSLDocument (); runDOMBuilders ();

// 最後の要求が完了するのを待ちます。 while (rm.activeFound()) Thread.sleep(100); } String basedir = new String ("."); OutputStream errors = System.err;

Vector xmlfiles = new Vector(); int numXMLDocs = 1; String xslFile = new String ("doc.xsl"); URL xslURL; XMLDocument xsldoc;

private ResourceManager rm;

XML Transviewer Beansの使用 19-27

Page 230: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

Transviewer Beanの例 2: ViewSample.java

/** * main */ public static void main (String args[]) { AsyncTransformSample inst = new AsyncTransformSample();

try { if (!inst.init()) System.exit(0);

inst.asyncTransform (); } catch (Exception e) { e.printStackTrace(); } System.exit(0); }}

Transviewer Beanの例の例の例の例 2: ViewSample.javaこの例では、XMLファイルをビジュアル的に表すための XML Source Viewer BeanおよびXML Tree View Beanの使用方法を示します。

import java.awt.*;import oracle.xml.srcviewer.*;import oracle.xml.treeviewer.*;import oracle.xml.parser.v2.XMLDocument;import oracle.xml.parser.v2.*;import org.w3c.dom.*;import java.net.*;import java.io.*;import java.util.*;import java.awt.event.*;import javax.swing.*;import javax.swing.event.*;

public class ViewSample {

public static void main(String[] args) {

19-28 Oracle8iアプリケーション開発者ガイド - XML Vol.2

Page 231: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

Transviewer Beanの例 2: ViewSample.java

String fileName = new String ("booklist.xml"); if (args.length > 0) { fileName = args[0]; }

JFrame frame = setFrame ("XMLViewer"); XMLDocument xmlDocument = getXMLDocumentFromFile (fileName); XMLSourceView xmlSourceView = setXMLSourceView (xmlDocument); XMLTreeView xmlTreeView = setXMLTreeView (xmlDocument); JTabbedPane jtbPane = new JTabbedPane (); jtbPane.addTab ("Source", null, xmlSourceView, "XML document sorce view"); jtbPane.addTab ("Tree", null, xmlTreeView, "XML document tree view"); jtbPane.setPreferredSize (new Dimension(400,300)); frame.getContentPane().add (jtbPane);

frame.setTitle (fileName); frame.setJMenuBar (setMenuBar()); frame.setVisible (true); }

static JFrame setFrame (String title) { JFrame frame = new JFrame (title); //ウィンドウを中央に配置します。 Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize(); Dimension frameSize = frame.getSize(); if (frameSize.height > screenSize.height) { frameSize.height = screenSize.height; } if (frameSize.width > screenSize.width) { frameSize.width = screenSize.width; } frame.setLocation ((screenSize.width - frameSize.width)/2, (screenSize.height - frameSize.height)/2); frame.addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { System.exit(0); } }); frame.getContentPane().setLayout (new BorderLayout()); frame.setSize(new Dimension(400, 300)); frame.setVisible (false); frame.setTitle (title);

return frame; }

XML Transviewer Beansの使用 19-29

Page 232: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

Transviewer Beanの例 2: ViewSample.java

static JMenuBar setMenuBar () { JMenuBar menuBar = new JMenuBar(); JMenu menu = new JMenu ("Exit"); menu.addMenuListener ( new MenuListener () { public void menuSelected (MenuEvent ev) { System.exit(0); } public void menuDeselected (MenuEvent ev) {} public void menuCanceled (MenuEvent ev) {} }); menuBar.add (menu); return menuBar; }

/** * XMLSourceViewオブジェクトを作成します。 */ static XMLSourceView setXMLSourceView(XMLDocument xmlDocument) { XMLSourceView xmlView = new XMLSourceView();

xmlView.setXMLDocument(xmlDocument); xmlView.setBackground(Color.yellow); xmlView.setEditable(true); return xmlView; } /** * XMLTreeViewオブジェクトを作成します。 */ static XMLTreeView setXMLTreeView(XMLDocument xmlDocument) { XMLTreeView xmlView = new XMLTreeView();

xmlView.setXMLDocument(xmlDocument); xmlView.setBackground(Color.yellow); return xmlView; }

static XMLDocument getXMLDocumentFromFile (String fileName) { XMLDocument doc = null;

try { DOMParser parser = new DOMParser(); try { String dir= "" ; FileInputStream in = new FileInputStream(fileName);

19-30 Oracle8iアプリケーション開発者ガイド - XML Vol.2

Page 233: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

Transviewer Beanの例 2: ViewSample.java

parser.setPreserveWhitespace(false); parser.setBaseURL(createURL(dir)); parser.parse(in); in.close(); } catch (Exception ex) { ex.printStackTrace(); System.exit(0); }

doc = (XMLDocument)parser.getDocument();

try { doc.print(System.out); } catch (Exception ie) { ie.printStackTrace(); System.exit(0); }

} catch (Exception e) { e.printStackTrace(); } return doc; }

static URL createURL(String fileName) { URL url = null; try { url = new URL(fileName); } catch (MalformedURLException ex) { File f = new File(fileName); try { String path = f.getAbsolutePath(); String fs = System.getProperty("file.separator"); if (fs.length() == 1) { char sep = fs.charAt(0); if (sep != '/') path = path.replace(sep, '/'); if (path.charAt(0) != '/') path = '/' + path; }

XML Transviewer Beansの使用 19-31

Page 234: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

Transviewer Beanの例 3: XMLTransformPanelSample.java

path = "file://" + path; url = new URL(path); } catch (MalformedURLException e) { System.out.println("Cannot create url for: " + fileName); System.exit(0); } } return url; } }

Transviewer Beanの例の例の例の例 3: XMLTransformPanelSample.javaこの例では、XML Transform Panel Beanを使用して、次の操作を行う対話型アプリケーションを示します。

� データベース問合せから XMLを生成します。

� XSLスタイルシートを使用して XMLを変換します。

� 結果を表示します。

� データベースの CLOB表に結果を格納します。

import java.awt.*;import java.awt.event.*;import javax.swing.*;import oracle.xml.transviewer.XMLTransformPanel;

public class XMLTransformPanelSample{ XMLTransformPanel transformPanel = new XMLTransformPanel();

/** * フレーム・サイズを調整して、transformPanelを追加します。 */ public XMLTransformPanelSample () { Frame frame = new JFrame(); Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize(); frame.setSize(510,550); transformPanel.setPreferredSize(new Dimension(510,550)); Dimension frameSize = frame.getSize();

19-32 Oracle8iアプリケーション開発者ガイド - XML Vol.2

Page 235: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

Transviewer Beanの例 3: XMLTransformPanelSample.java

if (frameSize.height > screenSize.height) { frameSize.height = screenSize.height; } if (frameSize.width > screenSize.width) { frameSize.width = screenSize.width; } frame.setLocation ((screenSize.width - frameSize.width)/2, (screenSize.height - frameSize.height)/2); frame.addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { System.exit(0); } }); frame.setVisible(true);

((JFrame)frame).getContentPane().add (transformPanel); frame.pack(); }

/** * main()。XMLTransformPanelSampleオブジェクトのみを作成します。 */ public static void main (String[] args) { new XMLTransformPanelSample (); }}

XML Transviewer Beansの使用 19-33

Page 236: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

Transviewer Beanの例 3: XMLTransformPanelSample.java

19-34 Oracle8iアプリケーション開発者ガイド - XML Vol.2

Page 237: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

第第第第 VII部部部部

XDK for PL/SQL

第 VII部では、XML Developer’s Kit(XDK)for PL/SQLの入手方法および使用方法について説明します。

第 VII部に含まれる章は、次のとおりです。

� 第 20章「XML Parser for PL/SQLの使用」

この章の最後に FAQが含まれます。

Page 238: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora
Page 239: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

XML Parser for PL/S

20

XML Parser for PL/SQLの使用の使用の使用の使用

この章の内容は次のとおりです。

� XML Parser for PL/SQLの入手方法

� XML Parser for PL/SQLの実行の要件

� XML Parser for PL/SQLの使用(DOMインタフェース)

� XML Parser for PL/SQLの使用 : XSLT Processor(DOMインタフェース)

� sample/での XML Parser for PL/SQLの使用例

� FAQ: XML Parser for PL/SQL

QLの使用 20-1

Page 240: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

XML Parser for PL/SQLの入手方法

XML Parser for PL/SQLの入手方法の入手方法の入手方法の入手方法XML Parser for PL/SQLは Oracle8iに付属しています。

XML Parser for PL/SQLは、$ORACLE_HOME/xdk/plsql/parserにあります。

XML Parser for PL/SQLの実行の要件の実行の要件の実行の要件の実行の要件付録 D「XDK for PL/SQL: 仕様および早見表」に、XML Parser for PL/SQLを実行するための仕様および要件をリストします。ここには、構文の早見表も含まれています。

XML Parser for PL/SQLの使用(の使用(の使用(の使用(DOMインタフェース)インタフェース)インタフェース)インタフェース)XML Parser for PL/SQLを使用すると、Oracle8iを使用して、簡略化および標準化されたプロセスで XMLアプリケーションを開発できます。PL/SQLインタフェースを使用すると、PL/SQLを十分に理解している Oracleの開発者は既存のアプリケーションを拡張し、必要に応じて XMLを利用できます。

XML Parser for PL/SQLは PL/SQLおよび Javaで実装されているため、Oracle8i Java VMで自由に実行できます。

XML Parser for PL/SQLは、W3Cの XML 1.0仕様をサポートしています。この仕様に 100%準拠することを目標としています。XML Parser for PL/SQLは、妥当性検証パーサーまたは非検証パーサーとして使用できます。

さらに、XML Parser for PL/SQLは、開発者が XMLドキュメントを処理するために必要な、最も一般的な次の 2つの APIを提供します。

� W3C勧告のドキュメント・オブジェクト・モデル(Document Object Model: DOM)

� W3C勧告の XSLTおよび XPath

これによって、Oracle8i環境で、XMLドキュメントを処理するカスタム・アプリケーションを簡単に作成できます。これは、Oracle8iがインストールされたすべてのオペレーティング・システムでは、標準に準拠した XML Parserが Oracle8iのプラットフォームの一部として搭載されていることを示します。

図 20-1に、XML Parser for PL/SQLの使用方法および解析プロセスを示します。

1. 必要に応じて newParser宣言を行い、XMLドキュメントおよび DTDの解析プロセスを開始します。

表 20-1に、newParserプロシージャに使用可能なプロパティを示します。

20-2 Oracle8iアプリケーション開発者ガイド - XML Vol.2

Page 241: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

XML Parser for PL/SQLの使用(DOMインタフェース)

2. XMLおよび DTDは、ファイル、VARCHARバッファまたは CLOBとして入力できます。XML入力は、次のプロシージャによってコールされます。

� parse()(XML入力がファイルの場合)

� parseBuffer()(XML入力が VARCHARバッファの場合)

� parserClob()(XML入力が CLOBの場合)

DTDも入力される場合、次のプロシージャによってコールされます。

� parseDTD()(入力が DTDファイルの場合)

� parseDTDBuffer()(DTD入力が VARCHARバッファの場合)

� parserDTDClob()(DTD入力が CLOBの場合)

XML入力の場合入力の場合入力の場合入力の場合 : XML入力の場合、Parse()、ParserBuffer()または ParserClob()プロシージャからの解析結果は、GetDocument()へ送られます。

3. getDocument()プロシージャは、次の操作を実行します。

� 解析済 XMLドキュメントを、PL/SQLアプリケーションで通常使用される DOMドキュメントとして出力します。

� 必要に応じて、他の DOMファンクションを適用します。使用可能なオプションのDOMファンクションのリストは、『Oracle8i XMLリファレンス・ガイド』を参照してください。

4. freeDocument()ファンクションを使用してパーサーを解放し、次の XML入力を解析します。

5. freeParser()ファンクションを使用して、解析プロセス中に作成された一時ドキュメント構造を解除します。

表表表表 20-1 XML Parser for PL/SQL: newParser()のプロパティのプロパティのプロパティのプロパティ

プロパティプロパティプロパティプロパティ 説明説明説明説明

setValidationMode デフォルトでは使用されません。

setPreserveWhiteSpace デフォルトでは使用されません。

setDocType 入力タイプが DTDの場合に使用します。

setBaseURL 外部ソースから読み込む場合、基の場所に他の場所を参照させます。

showWarnings 警告のオンまたはオフを切り替えます。

XML Parser for PL/SQLの使用 20-3

Page 242: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

XML Parser for PL/SQLの使用(DOMインタフェース)

DTD入力の場合入力の場合入力の場合入力の場合 : parseDTD()、parseDTDBuffer()または parseDTDClob()からの解析結果は、getDocType()ファンクションが使用します。

6. getDocType()は、setDocType()を使用して DTDオブジェクトを生成します。

7. setDocType()を使用して DTDオブジェクトをパーサーに送り、対応付けられたDTDをオーバーライドできます。

図図図図 20-1 XML Parser for PL/SQLの機能(の機能(の機能(の機能(DOMインタフェース)インタフェース)インタフェース)インタフェース)

ファイル名、 VARCHARバッファ、

CLOBXML入力�

newParser

getDocument()

DTD入力�

parseDTD()parseDTDBuffer()parsedDTDClob()

parse()parseBuffer()parseClob()

使用可能なプロパティ:· setValidationMode (デフォルトでは使用されない)· setPreserveWhiteSpace (デフォルトでは使用されない)�· setDocType (入力タイプがDTDの場合)· setBaseURL (外部ソースから読み込む場合、� 他の場所を基の場所に参照さ� せる)�· showWarnings

他のDOMファンクション�

DOMドキュメント�

freeDocument()

freeParser()

getDocType() setDocType()

DTD

XML Parser for PL/SQL

20-4 Oracle8iアプリケーション開発者ガイド - XML Vol.2

Page 243: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

XML Parser for PL/SQLの使用 : XSLT Processor(DOMインタフェース)

XML Parser for PL/SQL: デフォルト動作デフォルト動作デフォルト動作デフォルト動作XML Parser for PL/SQLのデフォルト動作は、次のとおりです。

� DOM APIによってアクセス可能な解析済ツリーが構築されます。

� DTDが検出された場合、XML Parser for PL/SQLは妥当性の検証を行います。検出されない場合は、非検証パーサーになります。

� エラー・ログが指定されない限り、エラーは記録されません。ただし、解析が正常に実行されない場合、アプリケーション・エラーが発生します。

このマニュアルに記載されているタイプおよびメソッドは、PL/SQLパッケージxmlparser()に付属しています。

XML Parser for PL/SQLの使用の使用の使用の使用 : XSLT Processor((((DOMインタインタインタインタフェース)フェース)フェース)フェース)

XSLTは、ソース・ツリーを結果ツリーへ変換する規則を表します。XSLTで表現される変換を、スタイルシートといいます。

指定された変換は、スタイルシートに定義したテンプレートとパターンを対応付けることによって実行されます。結果ツリーの一部を作成するために、テンプレートはインスタンス化されます。

XSL Processorの PL/SQL実装は、W3Cの XSLTワーキング・ドラフト(WD-xslt-19990813改訂)に準拠し、XSLTスタイルシートの読込み方法および影響する変換の点で、XSL Processorに必要な動作を含みます。

このマニュアルに記載されているタイプおよびメソッドは、PL/SQLパッケージxslprocessor()に付属しています。

図 20-2に、XML Parser for PL/SQLの XSLT Processorの主な機能を示します。

1. 「スタイルシートを処理する」のプロセスでは、XMLドキュメントおよび選択されたスタイルシート(XMLドキュメントに示されるかどうかにかかわらず)からの入力を受け取ります。スタイルシートおよび XMLドキュメントは、次のいずれかになります。

� ファイル名

� VARCHARバッファ

� CLOB

XMLドキュメントは、1~N回入力できます。

2. 解析済 XMLドキュメントは、XSLProcessor.processXSL(xslstylesheet,xml instance)プロシージャを入力します。ここで、引数は次のとおりです。

� 引数 xml instanceには、XMLドキュメントが示されます。

� 引数 xslstylesheetには、スタイルシートの入力が示されます。

XML Parser for PL/SQLの使用 20-5

Page 244: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

XML Parser for PL/SQLの使用 : XSLT Processor(DOMインタフェース)

3. XSLStylesheet()プロシージャへのスタイルシート入力を使用して、スタイルシートを構築します。このプロシージャに使用できるメソッドは次のとおりです。

� removeParam()

� resetParam()

� setParam()

これでスタイルシート・オブジェクトが作成され、XSLProcessor.processXSL(xslstylesheet,xml instance)プロシージャを使用して「スタイルシートを処理する」手順が開始します。

4. 「スタイルシートを処理する」手順は、1~N回繰り返すことができます。同じスタイルシートを複数の解析済 XMLドキュメントに適用して、XMLドキュメント、HTMLドキュメントまたは他のテキストベース形式のいずれかに変換できます。

5. 結果の解析および変換済のドキュメントは、ストリームまたは DOMドキュメントとして出力されます。

6. XSLTプロセスが完了すると、freeProcessor()プロシージャをコールして、XSL変換プロセスに使用された一時構造および XSLProcessorプロシージャを解除します。

20-6 Oracle8iアプリケーション開発者ガイド - XML Vol.2

Page 245: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

XML Parser for PL/SQLの使用 : XSLT Processor(DOMインタフェース)

図図図図 20-2 XML Parser for PL/SQL: XSLT Processor((((DOMインタフェース)インタフェース)インタフェース)インタフェース)

スタイルシート�を構築する: new

XSLStylesheet()

XMLを1~N回�入力する�

スタイルシート�を入力する�

スタイルシート・�オブジェクト�

出力ストリーム(ストリームに�書き込む)�

DOMドキュメント�

XSLProcessor.processXSL(xslstylesheet, xml instance)

メソッド· removeParam()· resetParam()· setParam()

· ファイル名�· VARCHARバッファ· CLOB

スタイルシート�を処理する�

1~N回�

freeProcessor()

XML Parser for PL/SQL: XSLT(DOMのみ)�

XML Parser for PL/SQLの使用 20-7

Page 246: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

sample/での XML Parser for PL/SQLの使用例

XML Parser for PL/SQL: XSLT Processor - デフォルト動作デフォルト動作デフォルト動作デフォルト動作XML Parser for PL/SQLの XSLT Processorのデフォルト動作は、次のとおりです。

� DOM APIがアクセスできる結果ツリーが構築されます。

� エラー・ログが指定されない限り、エラーは記録されません。ただし、解析が正常に実行されない場合、アプリケーション・エラーが発生します。

sample/でのでのでのでの XML Parser for PL/SQLの使用例の使用例の使用例の使用例

sample/サンプル・プログラムの動作環境の設定サンプル・プログラムの動作環境の設定サンプル・プログラムの動作環境の設定サンプル・プログラムの動作環境の設定$ORACLE_HOME/xdk/plsql/parser/sample/ディレクトリには、2つのサンプル XMLアプリケーションがあります。

� domsample

� xslsample

これらは、XML Parser for PL/SQLの使用方法を説明します。

サンプル・プログラムを実行するには、次の手順に従います。

1. データベースに XML Parser for PL/SQLをロードします。ロードするには、libディレクトリにある READMEファイルの指示に従います。

2. ファイル・システムのファイルから読込みおよび書込みを行うには、適切な Javaセキュリティ権限が必要です。このためには、まず SQL*Plus(通常$ORACLE_HOME/binにあります)を起動し、「internal」などの管理権限を持つユーザーとして接続します。

次に例を示します。

% sqlplusSQL> connect internal

3. 「internal」または管理権限を持つ適切なユーザーのパスワードが必要です。管理権限を持つユーザーとしてログインできない場合、システム管理者、データベース管理者またはオラクル社カスタマ・サポート・センターに連絡してください。

4. このサンプルを実行するユーザーに、特別な権限を付与します。この権限は、手順 1でjarファイルおよび plsqlファイルをロードしたときのものと同じにする必要があります。

ユーザー「scott」の場合 :

SQL> grant javauserpriv to scott;SQL> grant javasyspriv to scott;

20-8 Oracle8iアプリケーション開発者ガイド - XML Vol.2

Page 247: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

sample/での XML Parser for PL/SQLの使用例

「Grant succeeded.」というメッセージが 2つ表示されます。メッセージが表示されない場合、システム管理者、データベース管理者またはオラクル社カスタマ・サポート・センターに連絡してください。

手順 1で XML Parser for PL/SQLをロードしたユーザーとして、再度接続します。たとえば、ユーザー「scott」(パスワードは「tiger」)で接続します。

SQL> connect scott/tiger

domsampleの実行の実行の実行の実行domsampleを実行するには、次の手順に従います。

1. 次のとおり、SQL*Plusで domsample.sqlスクリプトをロードします(SQL*Plusが起動されていない場合、起動して、このサンプルを実行するユーザーとして接続します)。

SQL> @domsample

domsample.sqlスクリプトは、次の構文で domsampleプロシージャを定義します。

domsample(dir varchar2, inpfile varchar2, errfile varchar2)

各引数の意味は、次のとおりです。

2. 適切な引数 dir、inpfileおよび errfileを指定して、SQL*Plus内で domsampleプロシージャを実行します。次に例を示します。

UNIXでは、次のとおり実行できます。

SQL>execute domsample('/private/scott', 'family.xml', 'errors.txt');

Windows NTでは、次のとおり実行できます。

SQL>execute domsample('c:¥xml¥sample', 'family.xml', 'errors.txt');

family.xmlはテスト用に提供されています。

3. 次の出力が表示されます。

� 要素は、family member member member memberです。

引数引数引数引数 説明説明説明説明

dir 外部ファイル・システム上の有効なディレクトリを指す必要があります。この引数は、完全なパス名で指定する必要があります。

inpfile dirにあるファイルを指し、解析対象の XMLドキュメントを含む必要があります。

errfile エラー記録用に使用するファイルを指す必要があります。このファイルは dir内に作成されます。

XML Parser for PL/SQLの使用 20-9

Page 248: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

sample/での XML Parser for PL/SQLの使用例

� 各要素の属性は次のとおりです。

family:lastname = Smith member: memberid = m1 member: memberid = m2 member: memberid = m3 mom = m1 dad = m2 member: memberid = m4 mom = m1 dad = m2

xslsampleの実行の実行の実行の実行xslsampleを実行するには、次の手順に従います。

1. 次のとおり、SQL*Plusで xslsample.sqlスクリプトをロードします(SQL*Plusが起動されていない場合、起動して、このサンプルを実行するユーザーとして接続します)。

SQL>@xslsample

xslsample.sqlスクリプトは、次の構文で xslsampleプロシージャを定義します。

xslsample ( dir varchar2, xmlfile varchar2, xslfile varchar2, resfile varchar2, errfile varchar2 )

各引数の意味は、次のとおりです。

2. 適切な引数 dir、xmlfile、xslfileおよび errfileを指定して、SQL*Plus内で xslsampleプロシージャを実行します。

引数引数引数引数 説明説明説明説明

dir 外部ファイル・システム上の有効なディレクトリを指す必要があります。この引数は、完全なパス名で指定する必要があります。

xmlfile dirにあるファイルを指し、解析対象の XMLドキュメントを含む必要があります。

xskfile dirにあるファイルを指し、適用する XSLスタイルシートを含む必要があります。

resfile 変換済ドキュメントを置く dir内のファイルを指す必要があります。

errfile エラー記録用に使用するファイルを指す必要があります。このファイルは dir内に作成されます。

20-10 Oracle8iアプリケーション開発者ガイド - XML Vol.2

Page 249: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

sample/での XML Parser for PL/SQLの使用例

次に例を示します。

� UNIXでは、次のとおり実行できます。

SQL>execute xslsample('/private/scott', 'family.xml', 'iden.xsl', 'family.out', 'errors.txt');

� Windows NTでは、次のとおり実行できます。

SQL>execute xslsample('c:¥xml¥sample', 'family.xml', 'iden.xsl', 'family.out', 'errors.txt');

3. family.xmlおよび iden.xslはテスト用に提供されています。

4. 次の出力が表示されます。

Parsing XML document c:¥/family.xmlParsing XSL document c:¥/iden.xslXSL Root element informationQualified Name: xsl:stylesheetLocal Name: stylesheetNamespace: http://www.w3.org/XSL/Transform/1.0Expanded Name: http://www.w3.org/XSL/Transform/1.0:stylesheetA total of 1 XSL instructions were found in the stylesheetProcessing XSL stylesheetWriting transformed document

5. family.outの内容は次のとおりです。

<family lastname="Smith"><member memberid="m1">Sarah</member><member memberid="m2">Bob</member><member memberid="m3" mom="m1" dad="m2">Joanne</member><member memberid="m4" mom="m1" dad="m2">Jim</member></family>

このプロシージャを初めて実行したとき、出力の取得に時間がかかる場合があります。これは、Oracle Java VMが様々な初期化タスクを行ってから、Javaストアド・プロシージャ(Java Stored Procedure: JSP)を実行するためです。次回からは、速く起動できます。

エラーが発生する場合、ディレクトリ名がファイル・システム上の完全なパスで指定されていることを確認してください。

注意注意注意注意 : 現在、SQLディレクトリの別名および共有ディレクトリ構文「¥¥」はサポートされていません。

XML Parser for PL/SQLの使用 20-11

Page 250: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

sample/での XML Parser for PL/SQLの使用例

XML Parser for PL/SQLの例の例の例の例 1: XML - family.xml次の XMLファイルは、domsample.sqlを入力します。

<?xml version="1.0" standalone="no"?><!DOCTYPE family SYSTEM "family.dtd"><family lastname="Smith"><member memberid="m1">Sarah</member><member memberid="m2">Bob</member><member memberid="m3" mom="m1" dad="m2">Joanne</member><member memberid="m4" mom="m1" dad="m2">Jim</member></family>

XML Parser for PL/SQLの例の例の例の例 2: DTD - family.dtd次の DTDファイルは、XMLファイル family.xmlで参照されます。

<!ELEMENT family (member*)><!ATTLIST family lastname CDATA #REQUIRED><!ELEMENT member (#PCDATA)><!ATTLIST member memberid ID #REQUIRED><!ATTLIST member dad IDREF #IMPLIED><!ATTLIST member mom IDREF #IMPLIED>

XML Parser for PL/SQLの例の例の例の例 3: XSL - iden.xsl次の XSLファイルは、xslsample.sqlを入力します。

<?xml version="1.0"?>

<!-- 認証変換 --><xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> <xsl:template match="*|@*|comment()|processing-instruction()|text()"> <xsl:copy> <xsl:apply-templates select="*|@*|comment()|processing-instruction()|text()"/> </xsl:copy> </xsl:template></xsl:stylesheet>

XML Parser for PL/SQLの例の例の例の例 4: PL/SQL - domsample.sql-- このファイルは、XML Parser for PL/SQLおよびDOM APIの単純な使用例を示します。-- アプリケーションに提供されたXMLファイルは解析され、ドキュメント内の-- 要素および属性が出力されます。-- パーサー・オプションの設定方法を示します。

20-12 Oracle8iアプリケーション開発者ガイド - XML Vol.2

Page 251: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

sample/での XML Parser for PL/SQLの使用例

set serveroutput on;create or replace procedure domsample(dir varchar2, inpfile varchar2, errfile varchar2) isp xmlparser.parser;doc xmldom.DOMDocument;

-- ドキュメント内の要素を出力します。procedure printElements(doc xmldom.DOMDocument) isnl xmldom.DOMNodeList;len number;n xmldom.DOMNode;

begin -- すべての要素を取得します。 nl := xmldom.getElementsByTagName(doc, '*'); len := xmldom.getLength(nl);

-- 要素間をループします。 for i in 0..len-1 loop n := xmldom.item(nl, i); dbms_output.put(xmldom.getNodeName(n) || ' '); end loop;

dbms_output.put_line('');end printElements;

-- ドキュメント内の各要素の属性を出力します。procedure printElementAttributes(doc xmldom.DOMDocument) isnl xmldom.DOMNodeList;len1 number;len2 number;n xmldom.DOMNode;e xmldom.DOMElement;nnm xmldom.DOMNamedNodeMap;attrname varchar2(100);attrval varchar2(100);

begin

-- すべての要素を取得します。 nl := xmldom.getElementsByTagName(doc, '*'); len1 := xmldom.getLength(nl);

-- 要素間をループします。 for j in 0..len1-1 loop n := xmldom.item(nl, j); e := xmldom.makeElement(n);

XML Parser for PL/SQLの使用 20-13

Page 252: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

sample/での XML Parser for PL/SQLの使用例

dbms_output.put_line(xmldom.getTagName(e) || ':');

-- 要素のすべての属性を取得します。 nnm := xmldom.getAttributes(n);

if (xmldom.isNull(nnm) = FALSE) then len2 := xmldom.getLength(nnm);

-- 要素間をループします。 for i in 0..len2-1 loop n := xmldom.item(nnm, i); attrname := xmldom.getNodeName(n); attrval := xmldom.getNodeValue(n); dbms_output.put(' ' || attrname || ' = ' || attrval); end loop; dbms_output.put_line(''); end if; end loop;

end printElementAttributes;

begin

-- 新しいパーサーです。 p := xmlparser.newParser;

-- いくつかの特徴を設定します。 xmlparser.setValidationMode(p, FALSE); xmlparser.setErrorLog(p, dir || '/' || errfile); xmlparser.setBaseDir(p, dir);

-- 入力ファイルを解析します。 xmlparser.parse(p, dir || '/' || inpfile);

-- ドキュメントを取得します。 doc := xmlparser.getDocument(p);

-- ドキュメントの要素を出力します。 dbms_output.put('The elements are: '); printElements(doc);

-- ドキュメントの要素の属性を出力します。 dbms_output.put_line('The attributes of each element are: '); printElementAttributes(doc);

-- 例外に対処します。exception

20-14 Oracle8iアプリケーション開発者ガイド - XML Vol.2

Page 253: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

sample/での XML Parser for PL/SQLの使用例

when xmldom.INDEX_SIZE_ERR then raise_application_error(-20120, 'Index Size error');

when xmldom.DOMSTRING_SIZE_ERR then raise_application_error(-20120, 'String Size error');

when xmldom.HIERARCHY_REQUEST_ERR then raise_application_error(-20120, 'Hierarchy request error');

when xmldom.WRONG_DOCUMENT_ERR then raise_application_error(-20120, 'Wrong doc error');

when xmldom.INVALID_CHARACTER_ERR then raise_application_error(-20120, 'Invalid Char error');

when xmldom.NO_DATA_ALLOWED_ERR then raise_application_error(-20120, 'Nod data allowed error');

when xmldom.NO_MODIFICATION_ALLOWED_ERR then raise_application_error(-20120, 'No mod allowed error');

when xmldom.NOT_FOUND_ERR then raise_application_error(-20120, 'Not found error');

when xmldom.NOT_SUPPORTED_ERR then raise_application_error(-20120, 'Not supported error');

when xmldom.INUSE_ATTRIBUTE_ERR then raise_application_error(-20120, 'In use attr error');

end domsample;/show errors;

XML Parser for PL/SQLの使用 20-15

Page 254: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

sample/での XML Parser for PL/SQLの使用例

XML Parser for PL/SQLの例の例の例の例 5: PL/SQL - xslsample.sql-- このファイルは、XSLT変換機能の単純な使用例を示します。-- アプリケーションに提供されたXMLおよびXSLファイルは解析され、指定された-- 変換が適用されて、変換済ドキュメントが指定された結果ファイルに書き込まれます。-- パーサー・オプションの設定方法を示します。

set serveroutput on;create or replace procedure xslsample(dir varchar2, xmlfile varchar2, xslfile varchar2, resfile varchar2, errfile varchar2) isp xmlparser.Parser;xmldoc xmldom.DOMDocument;xmldocnode xmldom.DOMNode;proc xslprocessor.Processor;ss xslprocessor.Stylesheet;xsldoc xmldom.DOMDocument;docfrag xmldom.DOMDocumentFragment;docfragnode xmldom.DOMNode;xslelem xmldom.DOMElement;nspace varchar2(50);xslcmds xmldom.DOMNodeList;

begin

-- 新しいパーサーです。 p := xmlparser.newParser;

-- いくつかの特性を設定します。 xmlparser.setValidationMode(p, FALSE); xmlparser.setErrorLog(p, dir || '/' || errfile); xmlparser.setPreserveWhiteSpace(p, TRUE); xmlparser.setBaseDir(p, dir);

-- XMLファイルを解析します。 dbms_output.put_line('Parsing XML document ' || dir || '/' || xmlfile); xmlparser.parse(p, dir || '/' || xmlfile);

-- ドキュメントを取得します。 xmldoc := xmlparser.getDocument(p);

-- XSLファイルを解析します。 dbms_output.put_line('Parsing XSL document ' || dir || '/' || xslfile); xmlparser.parse(p, dir || '/' || xslfile);

-- ドキュメントを取得します。 xsldoc := xmlparser.getDocument(p);

20-16 Oracle8iアプリケーション開発者ガイド - XML Vol.2

Page 255: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

sample/での XML Parser for PL/SQLの使用例

xslelem := xmldom.getDocumentElement(xsldoc); nspace := xmldom.getNamespace(xslelem);

-- スタイルシートに関するいくつかの情報を出力します。 dbms_output.put_line('XSL Root element information'); dbms_output.put_line('Qualified Name: ' || xmldom.getQualifiedName(xslelem)); dbms_output.put_line('Local Name: ' || xmldom.getLocalName(xslelem)); dbms_output.put_line('Namespace: ' || nspace); dbms_output.put_line('Expanded Name: ' || xmldom.getExpandedName(xslelem));

xslcmds := xmldom.getChildrenByTagName(xslelem, '*', nspace); dbms_output.put_line('A total of ' || xmldom.getLength(xslcmds) || ' XSL instructions were found in the stylesheet');-- スタイルシートを作成します。 ss := xslprocessor.newStylesheet(xsldoc, dir || '/' || xslfile);

-- XSLを処理します。 proc := xslprocessor.newProcessor; xslprocessor.showWarnings(proc, true); xslprocessor.setErrorLog(proc, dir || '/' || errfile);

dbms_output.put_line('Processing XSL stylesheet'); docfrag := xslprocessor.processXSL(proc, ss, xmldoc); docfragnode := xmldom.makeNode(docfrag); dbms_output.put_line('Writing transformed document'); xmldom.writeToFile(docfragnode, dir || '/' || resfile);

-- 例外に対処します。exception

when xmldom.INDEX_SIZE_ERR then raise_application_error(-20120, 'Index Size error');

when xmldom.DOMSTRING_SIZE_ERR then raise_application_error(-20120, 'String Size error');

when xmldom.HIERARCHY_REQUEST_ERR then raise_application_error(-20120, 'Hierarchy request error');

when xmldom.WRONG_DOCUMENT_ERR then raise_application_error(-20120, 'Wrong doc error');

XML Parser for PL/SQLの使用 20-17

Page 256: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

sample/での XML Parser for PL/SQLの使用例

when xmldom.INVALID_CHARACTER_ERR then raise_application_error(-20120, 'Invalid Char error');

when xmldom.NO_DATA_ALLOWED_ERR then raise_application_error(-20120, 'Nod data allowed error');

when xmldom.NO_MODIFICATION_ALLOWED_ERR then raise_application_error(-20120, 'No mod allowed error');

when xmldom.NOT_FOUND_ERR then raise_application_error(-20120, 'Not found error');

when xmldom.NOT_SUPPORTED_ERR then raise_application_error(-20120, 'Not supported error');

when xmldom.INUSE_ATTRIBUTE_ERR then raise_application_error(-20120, 'In use attr error');

end xslsample;/show errors;

20-18 Oracle8iアプリケーション開発者ガイド - XML Vol.2

Page 257: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

FAQ: XML Parser for PL/SQL

FAQ: XML Parser for PL/SQL

スレッド・パーサー・エラーの例外スレッド・パーサー・エラーの例外スレッド・パーサー・エラーの例外スレッド・パーサー・エラーの例外

質問質問質問質問oraxslを使用しようとすると、次のとおりmainスレッドの例外が発生します。

java.lang.NoClassDefFoundError" oracle/xml/parser/v2/oraxsl.

対処方法を教えてください。

回答回答回答回答構成および使用方法について、詳しく教えてください。データベース外で実行中の場合、xmlparserv2.jarが単にディレクトリではなく、明示的に CLASSPATH内にあることを確認する必要があります。データベース内で実行中の場合、xmlparserv2.jarが適切にロードされ、Oracle8i JVMが初期化されていることを確認する必要があります。

Java VMが現在サポートしないエンコーディング「が現在サポートしないエンコーディング「が現在サポートしないエンコーディング「が現在サポートしないエンコーディング「8859_1」」」」

質問質問質問質問XML Parser for PL/SQLを使用して XMLドキュメントを解析し、setNodeValueを使用してDOMドキュメントのいくつかのノード値を変更しました。writeToBuffeまたは writeToFileを使用して、変更した DOMドキュメントをバッファまたはファイルに書き込もうとした場合、両方のコマンドでエラーが表示されました。

コメントコメントコメントコメントinitjvm.sqlを再インストールして、XML Parser for PL/SQLの最新バージョンもインストールしました。すべて正常に動作しています。

PL/SQLでのでのでのでの xmldom.GetNodeValue

質問質問質問質問PL/SQL XMLDOMを使用して、要素値を取得できません。次に、コードのフラグメントを示します。

...nl := xmldom.getElementsByTagName(doc, '*');len := xmldom.getLength(nl);-- 要素間をループします。 for i in 0..len-1 loop n := xmldom.item(nl, i); elename := xmldom.getNodeName(n);

XML Parser for PL/SQLの使用 20-19

Page 258: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

FAQ: XML Parser for PL/SQL

eleval := xmldom.getNodeValue(n);...elename is Ok, but eleval is NULL.

テキスト・ノードとの対応付けが正常に実行できないようですが、方法が間違っているのでしょうか ?次のようなコンパイル・エラーが発生します。

...t xmldom.DOMText;

...t := xmldom.makeText(n);eleval := xmldom.getNodeValue(t);

何が間違っているのでしょうか ?

コメントコメントコメントコメント問題点がわかりました。要素ノードに対応付けられたテキスト・ノード値を取得するには、xmldom.getFirstChild(n)を介して新しくノードのナビゲーションを実行する必要があります。

参考に、次のとおり DOMSample.sqlの printElements()を変更します。

begin -- すべての要素を取得します。nl := xmldom.getElementsByTagName(doc, '*'); len := xmldom.getLength(nl); -- 要素間をループします。for i in 0..len-1 loop n := xmldom.item(nl, i); dbms_output.put(xmldom.getNodeName(n)); -- 要素ノードに対応付けられたテキスト・ノードを取得します。 n := xmldom.getFirstChild(n); if xmldom.getNodeType(n) = xmldom.TEXT_NODE then dbms_output.put('=' &#0124; &#0124; xmldom.getNodeValue(n)); end if; dbms_output.put(' '); end loop; dbms_output.put_line('');end printElements;

この結果、次の出力が生成されます。

要素は次のとおりです。

family member=Sarah member=Bob member=Joanne member=Jim

各要素の属性は次のとおりです。

family:familylastname val=Smithmember:membermemberid val=m1member:membermemberid val=m2member:membermemberid val=m3 mom val=m1 dad val=m2member:membermemberid val=m4 mom val=m1 dad val=m2

20-20 Oracle8iアプリケーション開発者ガイド - XML Vol.2

Page 259: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

FAQ: XML Parser for PL/SQL

CLOB((((PL/SQL))))XMLに含まれるに含まれるに含まれるに含まれる DTDの解析の解析の解析の解析

質問質問質問質問CLOBに含まれる DTDファイルの解析が正常に実行できません。XML Parser for PL/SQLに提供される API xmlparser.parseDTDClobを使用しています。

次のエラーが発生しています。

ORA-29531: メソッドparseDTDはクラスoracle/xml/parser/plsql/XMLParserCoverにはありません。

xmlparser.parseDTDClobプロシージャは、Javaストアド・プロシージャxmlparsercover.parseDTDClobをコールし、このストアド・プロシージャが別の Javaストアド・プロシージャ xmlparsercover.parseDTDをコールします。

クラス・ファイル oracle.xml.parser.plsql.XMLParserCoverが、データベースにロードされ、公開されていることは確認済です。そのため、エラー・メッセージの意味が理解できません。xmlparser.parseDTDClobをコールするために使用したプロシージャは、次のとおりです。

create or replace procedure parse_my_dtd as p xmlparser.parser; l_clob clob; begin p := xmlparser.newParser; select content into l_clob from dca_documents where doc_id = 1; xmlparser.parseDTDClob(p,l_clob,'site_template'); end;

xmlparser.parseDTDClobの APIドキュメントは次のとおりです。

parseDTDClobPURPOSE Parses the DTD stored in the given clob SYNTAX PROCEDURE parseDTDClob(p Parser, dtd CLOB, root VARCHAR2); PARAMETERS p (IN)- parser instance dtd (IN)- dtd clob to parse root (IN)- name of the root element RETURNS Nothing COMMENTS

パーサーのデフォルト動作への変更が有効になってから、このプロシージャをコールします。なんらかの理由で解析が正常に実行されない場合、アプリケーション・エラーが発生します。

XML Parser for PL/SQLの使用 20-21

Page 260: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

FAQ: XML Parser for PL/SQL

dca_documents表の内容は次のとおりです。

DOC_ID NOT NULL NUMBER DOC_NAME NOT NULL VARCHAR2(350) DOC_TYPE VARCHAR2(30)DESCRIPTION VARCHAR2(4000) MIME_TYPE VARCHAR2(48) CONTENT NOT NULL CLOB CREATED_BY NOT NULL VARCHAR2(30) CREATED_ON NOT NULL DATE UPDATED_BY NOT NULL VARCHAR2(30) UPDATED_ON NOT NULL DATE

DTDの内容は次のとおりです。

<!ELEMENT site_template (component*)> <!ATTLIST site_template template_id CDATA #REQUIRED> <!ATTLIST site_template template_name CDATA #REQUIRED> <!ELEMENT component (#PCDATA)> <!ATTLIST component component_id ID #REQUIRED> <!ATTLIST component parent_id ID #REQUIRED> <!ATTLIST component component_name ID #REQUIRED>

回答回答回答回答これは、XML Parser for PL/SQLリリース 1.0.1で検出された問題です。この問題を解決するには、次の手順に従います。

1. ./plsqlxmlparser_1.0.1/lib/sql/xmlparsercover.sqlのバックアップを取ります。

2. xmlparsercover.sqlの 18行目にある、oracle.xml.parser.plsql.XMLParserCover.parseDTDをoracle.xml.parser.plsql.XMLParserCover.parseDTDClobに変更します。

3. 18行目が、次のようになっているかどうかを確認します。procedure parseDTDClob(id varchar2, dtd CLOB, root varchar2, err in out varchar2) is language java name 'oracle.xml.parser.plsql.XMLParserCover.parseDTDClob(java.lang.String, oracle.sql.CLOB, java.lang.String, java.lang.String[])'

4. ファイルを保存します。

5. SQL*Plusで xmlparsercover.sqlを再実行します。XML Parserリリース 2.0.2.6以上がデータベースにロードされていると想定すると、これで問題が解決するはずです。

20-22 Oracle8iアプリケーション開発者ガイド - XML Vol.2

Page 261: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

FAQ: XML Parser for PL/SQL

XML Parser for PL/SQL

質問質問質問質問XML Parser for PL/SQLを使用し始めたばかりです。開始タグと終了タグの間のテキストを、ローカル変数にすることができません。このような例はありますか ?

回答回答回答回答次の文を使用すると解決できます。

selectSingleNode("pattern");getNodeValue()

要素ノードから値を取得する場合、子ノード #textまで移動して、getFirstChild.getNodeValue()などを実行します。

xmldom.DOMNode nの開始タグと終了タグの間にあるテキストを取得する必要がある場合、次の 2行のみで取得できます。

n_child:=xmldom.getFirstChild(n); text_value:=xmldom.getNodeValue(n_child));

n_childは、xmldom.DOMNode型です。

text_valueは、VARCHAR2型です。

セキュリティセキュリティセキュリティセキュリティ : ORA-29532 -ユーザーへのユーザーへのユーザーへのユーザーへの JavaSysPriv権限の付与権限の付与権限の付与権限の付与

質問質問質問質問XML Parser for PL/SQLを使用して、XMLドキュメントを解析しようとしています。次のJavaセキュリティ・エラーが発生します。

ORA-29532: 不明なJava例外でJavaコールが終了しました: java.lang.SecurityExceptionORA-06512: 0行 NSEC.XMLPARSERCOVER ORA-06512: 79行 NSEC.XMLPARSER ORA-06512: 36行 NSEC.TEST1_XML ORA-06512: 5行

ユーザーに権限を付与する必要がありますか ?構文は正確なようです。デモを実行しても、エラーが発生します。

XML Parser for PL/SQLの使用 20-23

Page 262: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

FAQ: XML Parser for PL/SQL

回答回答回答回答解析するドキュメントに <!DOCTYPEが含まれ、file:///や http:///などのプロトコルでシステム URIが指定されている場合、データベースへのアクセス権、ファイルまたはURL.CONNECT SYSTEM/MANAGERでストリームをオープンする権限を、現行のデータベース・ユーザーに付与する必要があります。

GRANT JAVAUSERPRIV, JAVASYSPRIV TO youruser;

これで解決できます。

XML Parser for PL/SQLのインストールのインストールのインストールのインストール : Oracle8i JVMオプションオプションオプションオプション

質問質問質問質問READMEでは、loadjavaを使用して、xmlparserv2.jarおよび plsql.jarを順番にアップロードすることが記載されています。Oracle8iに jarファイルをアップロードするために、次のコマンドを使用して xmlparserv2.jarのロードを試みました。

loadjava -user test/test -r -v xmlparserv2.jar

大部分をアップロードした後、次のエラー・メッセージが表示されました。

identical: oracle/xml/parser/v2/XMLConstants is unchanged from previously loaded fileidentical: org/xml/sax/Locator is unchanged from previously loaded fileloading : META-INF/MANIFEST.MFcreating : META-INF/MANIFEST.MFError while creating resource META-INF/MANIFEST.MF ORA-29547: Javaシステム・クラスがありません: oracle/aurora/rdbms/Compilerloading : oracle/xml/parser/v2/mesg/XMLErrorMesg_en_US.propertiescreating : oracle/xml/parser/v2/mesg/XMLErrorMesg_en_US.propertiesError while creating ...

そのため、前述のコマンドから -rを削除しました。

loadjava -user test/test -v xmlparserv2.jar

まだエラーが発生しますが、4つに減りました。

.identical: org/xml/sax/Locator is unchanged from previously loaded fileloading : META-INF/MANIFEST.MFcreating : META-INF/MANIFEST.MFError while creating ...Oracle8i JVMは、データベースに正常にインストールしていると思います。

回答回答回答回答loadjavaの実行中にこのようなエラーが発生する場合、Oracle8i JVMオプションが正常にインストールされていません。Java VMを適切にインストールするには、INITJVM.SQLおよび INITDBJ.SQLを実行する必要があります。これらは通常、ORACLE_HOMEの ./javavmサブディレクトリにあります。

20-24 Oracle8iアプリケーション開発者ガイド - XML Vol.2

Page 263: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

FAQ: XML Parser for PL/SQL

CLOB内の内の内の内の XML

質問質問質問質問Oracle8iのデータベースには、1MB以下の整形式の XMLドキュメントを含む CLOBがあります。

ドキュメント全体を処理するかわりに、CLOB(XMLドキュメント)の一部のみを取得し、それを変更して、データベースに返す機能が必要です。

次に、この処理をデータベース層全体で実行する必要があります。

これを行うには、どの製品またはツールが必要ですか ? Oracle8iに付属する JVMで実行できますか ?ストアド・プロシージャによってこれを実行できる PL/SQLツールはありますか ?

回答回答回答回答次のいずれかを使用して実行できます。

� Oracle XML Parser for PL/SQL

� Oracle XML Parser for Javaを使用して作成したコード上に、カスタム Javaストアド・プロシージャ・ラッパーを作成します。

XML Parser for PL/SQLには、次のメソッドがあります。

� xmlparser.parseCLOB()

他にも次のメソッドがあります。

� xslProcessor.selectNodes()(検索しているドキュメントの部分を検出します)

� xmldom.*(XMLドキュメントの内容を操作します)

� xmldom.writeToCLOB()(再度書き込みます)

CLOBのテキストを部分的に更新する必要がある場合、DBMS_LOB.*ルーチンを使用する必要があります。ただし、内容の変更に文字数の増加または減少が伴う場合、注意が必要です。

oracle.xml.parserでのメモリー不足のエラーでのメモリー不足のエラーでのメモリー不足のエラーでのメモリー不足のエラー

質問質問質問質問次のとおり、oracle.xml.parserでのメモリー不足のエラーが発生しています。

last entry at 2000-04-26 10:59:27.042: VisiBroker for Java runtime caught exception: java.lang.OutOfMemoryError at oracle.xml.parser.v2.XMLAttrList.put(XMLAttrList.java:251) at oracle.xml.parser.v2.XMLElement.setAttribute(XMLElement.java:260) at oracle.xml.parser.v2.XMLElement.setAttribute(XMLElement.java:228) at cars.XMLServer.processEXL(XMLServer.java:122)

XML Parser for PL/SQLの使用 20-25

Page 264: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

FAQ: XML Parser for PL/SQL

新しい XML属性の作成を試みながら、OutOfMemoryErrorでクラッシュしています。

50MBの XMLファイルを解析中です。200MBの shared_pool_sizeを使用して、java_pool_sizeを 150MBに増加しています。

回答回答回答回答50MBの XMLファイルの解析には、DOMパーサーを使用しないでください。SAXパーサーは実行中にノードのメモリー内ツリーを作成しないため、任意のサイズのファイルを解析する SAXパーサーを使用する必要があります。

SAXまたは DOMのどちらのパーサーを使用していますか ? DOMを使用している場合、ファイルを表すメモリー内ツリーを構築するかわりに、順次 XMLファイルを処理する SAXに移行することをお薦めします。

SAXを使用すると、非常に少量のメモリー量で、180MBを超する XMLファイルを問題なく処理できます。

DOMおよび SAX使用のガイドラインは、次のとおりです。

DOM:

� ランダム・アクセスが必要な場合に適しています。

� より多くのメモリーを使用します。

� 変換を行う場合も適しています。

� ツリーを反復したり、ドキュメント・ツリー全体を移動する場合も適しています。

� DOMインタフェースを使用する場合は、(パイプ・サイズを小さくするために)XML内の要素より多くの属性を使用できるかどうかを確認してください。

SAX:

� SAXインタフェースは、データが(I/Pストリームを使用して)ストリーム形式で受信される場合に使用します。

Parser for PL/SQL使用時のメモリー要件使用時のメモリー要件使用時のメモリー要件使用時のメモリー要件

質問質問質問質問PL/SQL使用時のメモリー要件は何ですか ?

回答回答回答回答メモリー使用は、ドキュメントのサイズに直接依存しますが、XML Parser for PL/SQLはJavaパーサーを使用するため、Oracle8i JVMが実行中であることに注意してください。Oracle8i JVMには、その構成によって通常 40~ 60MBが必要です。

20-26 Oracle8iアプリケーション開発者ガイド - XML Vol.2

Page 265: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

FAQ: XML Parser for PL/SQL

XML Parser for PL/SQL実行時の実行時の実行時の実行時の Oracle8i JVMの必要性の必要性の必要性の必要性

質問質問質問質問XML Parser for PL/SQLを実行するには、Oracle8i JVMをインストールする必要がありますか ?

回答回答回答回答データベースでパーサーを実行中の場合、現在、XML Parser for PL/SQLはバックグラウンドで XML Parser for Javaを使用するため、Oracle8i JVMをインストールする必要があります。Oracle8i JVMは、Standardおよび Enterpriseの両方のバージョンに付属しています。Cをバックグラウンドで使用する XML Parser for PL/SQLの次期バージョンを、JVMにアクセスしないアプリケーション用に開発中です。

DOM APIの使用の使用の使用の使用

質問質問質問質問XML Parser for PL/SQLの機能を教えてください。

回答回答回答回答XML Parserは、すべての XMLドキュメントを受け入れ、ドキュメントの要素および属性にアクセスしたり、それらを変更するためのツリーベースの API(DOM)を提供します。XMLドキュメントから別の XMLドキュメントへの変換を可能にする XSLTもサポートしています。

質問質問質問質問XMLドキュメントに対して、エンコーディングを動的に設定できますか ?

回答回答回答回答できません。仕様のとおりに、ドキュメント内に適切なエンコーディング宣言を含める必要があります。setCharset(DOMDocument)を使用して、ドキュメントの入力にエンコーディングを設定できません。SetCharset(DOMDocument)およびoracle.xml.parser.v2.XMLDocumentを使用して、出力に正しいエンコーディングを設定します。

質問質問質問質問XML Parserを使用して特定のタグの要素数を取得する方法を教えてください。

XML Parser for PL/SQLの使用 20-27

Page 266: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

FAQ: XML Parser for PL/SQL

回答回答回答回答getElementByTagName (elem DOMElement, name IN VARCHAR2)メソッドを使用します。このメソッドは、指定されたタグ名を持つすべての子要素の DOMNodeListを戻します。その DOMNodeList内の要素数を調べて、特定のタグの要素数が判断できます。

質問質問質問質問文字列を解析する方法を教えてください。

回答回答回答回答文字列に含まれている XMLドキュメントを直接解析する方法は現在はありません。かわりに、次のファンクションを使用できます。

� parse (Parser, VARCHAR2)ファンクション(指定された URLまたはファイルに格納された XMLデータを解析します)

� parseBuffer (Parser, VARCHAR2)ファンクション(指定されたバッファに格納されたXMLデータを解析します)

� parseCLOB (Parser, VARCHAR2)ファンクション(指定された CLOBに格納されたXMLデータを解析します)

質問質問質問質問XMLドキュメントを表示する方法を教えてください。

回答回答回答回答Internet Explorer 5ブラウザを使用している場合、直接 XMLドキュメントを表示できます。それ以外のブラウザの場合、XML Parserの XSLT Processorを使用すると、XSLスタイルシートを使用して HTMLドキュメントを作成できます。Javaで実装された XML Transviewer Beansを使用しても、XMLドキュメントを表示できます。

質問質問質問質問特殊キャラクタ・セットを使用して XMLデータを再度書き込む方法を教えてください。

回答回答回答回答ファイルまたはバッファに書き込むための、キャラクタ・セットを指定します。CLOBに書き込む場合、書き込むデータベース用のデフォルトのキャラクタ・セットを使用します。使用するメソッドは次のとおりです。

� writeToFile(doc DOMDocument, fileName VARCHAR2, charset VARCHAR2);プロシージャ

20-28 Oracle8iアプリケーション開発者ガイド - XML Vol.2

Page 267: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

FAQ: XML Parser for PL/SQL

� writeToBuffer(doc DOMDocument, buffer IN OUT VARCHAR2, charset VARCHAR2);プロシージャ

� writeToClob(doc DOMDocument, cl IN OUT CLOB, charset VARCHAR2);プロシージャ

質問質問質問質問文字データからアンパサンド(&)を取得する方法を教えてください。

回答回答回答回答XMLデータでは、アンパサンドをそのまま使用できません。かわりに、エンティティ&amp;を使用する必要があります。このエンティティは、XML標準で定義されています。

質問質問質問質問ファイルからドキュメント・オブジェクトを生成する方法を教えてください。

回答回答回答回答次の例を参照してください。

inpPath VARCHAR2;inpFile VARCHAR2;p xmlparser.parser;doc xmldom.DOMDocument;

-- 新しいパーサー・オブジェクトを初期化します。p := xmlparser.newParser;-- ファイルを解析します。xmlparser.parse(p, inpPath || inpFile);-- ドキュメント・オブジェクトを生成します。doc := xmlparser.getDocument(p);

質問質問質問質問Parserは Linux上で実行できますか ?

回答回答回答回答Java VM for Linuxのバージョン 1.1.xまたは 1.2.xがインストールされている限り、Linux上で Oracle XML Parser for Javaを実行できます。

質問質問質問質問XML Parserを使用して、>、<、>=または <=を比較する方法を教えてください。

XML Parser for PL/SQLの使用 20-29

Page 268: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

FAQ: XML Parser for PL/SQL

回答回答回答回答<にはエンティティ &lt;を、>には &gt;を使用する必要があります。

質問質問質問質問XML Namespace(名前空間)および XML Schemaはサポートされていますか ?

回答回答回答回答現行の XML Parserは、XML Namespaceをサポートしています。XML Schemaのサポートは、将来のリリースに含まれる予定です。

質問質問質問質問Parserが DTDファイルを検出しません。

回答回答回答回答<!DOCTYPE>宣言で定義された DTDファイルは、入力の XMLドキュメントの位置に相対的である必要があります。相対的でない場合は、setBaseDir(Parser, VARCHAR2)ファンクションを使用してベース URLを設定し、DTDの相対アドレスを解決する必要があります。

質問質問質問質問外部 DTDを使用して、XMLファイルを検証できますか ?

回答回答回答回答XMLドキュメントに、適用可能な DTDへの参照を含める必要があります。この参照がないと、パーサーは検証に使用する DTDを検出できません。参照の指定方法は、外部 DTDを指定するときに使用する XMLの標準方法です。参照を指定しない場合、XMLドキュメントにDTDを埋め込む必要があります。

質問質問質問質問DTDキャッシュ機能はありますか ?

回答回答回答回答DTDキャッシュはオプションであり、自動的に有効にはなりません。

質問質問質問質問XMLドキュメントを解析してから、DOCTYPEタグを挿入する方法を教えてください。

20-30 Oracle8iアプリケーション開発者ガイド - XML Vol.2

Page 269: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

FAQ: XML Parser for PL/SQL

回答回答回答回答ファイルにいくつかの事前処理を行い、再度 DOMパーサーに通す必要があります。これによって、DOCTYPEタグを含む、妥当および整形式の XMLドキュメントが生成されます。

質問質問質問質問XML DOMパーサーの動作方法を教えてください。

回答回答回答回答パーサーは XML形式のドキュメントを受け入れ、構造に基づいて DOMツリーをメモリー内に構築します。ドキュメントが整形式であるかどうかを確認し、オプションで DTDに準拠しているかどうかを確認します。パーサーは、ツリーを全検索して、ツリーからデータを返す方法も提供します。

質問質問質問質問値を後で設定できるノードを作成する方法を教えてください。

回答回答回答回答ノード・タイプを説明する表を参照する DOM仕様を確認すると、要素ノードを作成する場合に nodeValueが NULLになるため、ノードを設定できないことがわかります。ただし、テキスト・ノードを作成し、要素ノードに追加することはできます。そのテキスト・ノードには値を格納できます。

質問質問質問質問XMLファイルの要素を取得する方法を教えてください。

回答回答回答回答DOMを使用している場合は、NamedNodeMapメソッドを使用して要素を取得できます。

質問質問質問質問XML Parser for PL/SQLを使用して、テキスト・ノードを DOMElementに追加する方法を教えてください。

回答回答回答回答createTextNode()メソッドを使用して、新しいテキスト・ノードを作成します。次に、makeNode()を使用して、DOMElementを DOMNodeに変換します。これで、appendChild()を使用して、テキスト・ノードを DOMElementに追加できます。

質問質問質問質問DOMで XML Parserを使用中ですが、実際のデータを取得できません。何が間違っていますか ?

XML Parser for PL/SQLの使用 20-31

Page 270: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

FAQ: XML Parser for PL/SQL

回答回答回答回答データがどのレベルに常駐しているのかを確認する必要があります。次に例を示します。

� <?xml version=1.0 ?>

� <greeting>Hello World!</greeting>

テキストは、ドキュメントにある最初の DOM要素の最初の子ノードです。DOMレベル 1仕様によると、要素ノードの値は NULLで、getNodeValue()メソッドは常に要素型ノードに NULLを戻します。要素の子である TEXTを取得し、getNodeValue()メソッドを使用して、ノードから実際のテキストを取り出します。

質問質問質問質問XML Parser for PL/SQLは、HTMLなどの非 XMLドキュメントを生成するスタイルシートを処理できますか ?

回答回答回答回答処理できます。

サンプルの使用サンプルの使用サンプルの使用サンプルの使用

質問質問質問質問サンプル・ファイルを実行できません。インストール方法を間違えたのでしょうか ?

回答回答回答回答次に、XML Parser for PL/SQLのインストール時に実行し忘れることが多い処理を示します。

� Oracle8i JVMの初期化($ORACLE_HOME/javavm/install/initjvm.sqlの実行)

� パーサー・アーカイブからの含まれる jarファイルのロード

XML Parser for PL/SQL: CLOB内の内の内の内の DTDの解析の解析の解析の解析

質問質問質問質問CLOBに含まれる DTDファイルの解析が正常に実行できません。XML Parser for PL/SQLによって提供された API、xmlparser.parseDTDClobを使用しています。

次のエラーが発生しています。

ORA-29531: メソッドparseDTDはクラスoracle/xml/parser/plsql/XMLParserCoverにはありません。

次のとおり実行するようにしています。

20-32 Oracle8iアプリケーション開発者ガイド - XML Vol.2

Page 271: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

FAQ: XML Parser for PL/SQL

xmlparser.parseDTDClobプロシージャは、Javaストアド・プロシージャxmlparsercover.parseDTDClob をコールし、このストアド・プロシージャが別の Javaストアド・プロシージャ xmlparsercover.parseDTDをコールします。

クラス・ファイル oracle.xml.parser.plsql.XMLParserCoverが、データベースにロードされ、公開されているのを確認しています。そのため、エラー・メッセージの意味が理解できません。

解析方法に問題があるのか、パーサー APIにエラーがあるのかが判断できません。

The procedure use to call "xmlparser.parseDTDClob" :----------------------------------------------------create or replace procedure parse_my_dtd asp xmlparser.parser;l_clob clob;begin p := xmlparser.newParser; select content into l_clob from dca_documents where doc_id = 1; xmlparser.parseDTDClob(p,l_clob,'site_template');end;

xmlparser.parseDTDClobの APIドキュメントは次のとおりです。

parseDTDClobPURPOSE Parses the DTD stored in the given clobSYNTAX PROCEDURE parseDTDClob(p Parser, dtd CLOB, root VARCHAR2);PARAMETERS p (IN)- parser instance dtd (IN)- dtd clob to parse root (IN)- name of the root elementRETURNS NothingCOMMENTS

パーサーのデフォルト動作への変更が有効になってから、このプロシージャをコールします。なんらかの理由で解析が正常に実行されない場合、アプリケーション・エラーが発生します。

dca_documents表の内容は次のとおりです。

DOC_ID NOT NULL NUMBER DOC_NAME NOT NULL VARCHAR2(350) DOC_TYPE VARCHAR2(30) DESCRIPTION VARCHAR2(4000) MIME_TYPE VARCHAR2(48) CONTENT NOT NULL CLOB

XML Parser for PL/SQLの使用 20-33

Page 272: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

FAQ: XML Parser for PL/SQL

CREATED_BY NOT NULL VARCHAR2(30) CREATED_ON NOT NULL DATE UPDATED_BY NOT NULL VARCHAR2(30) UPDATED_ON NOT NULL DATE

DTDの内容は次のとおりです。

<!ELEMENT site_template (component*)><!ATTLIST site_template template_id CDATA #REQUIRED><!ATTLIST site_template template_name CDATA #REQUIRED><!ELEMENT component (#PCDATA)><!ATTLIST component component_id ID #REQUIRED><!ATTLIST component parent_id ID #REQUIRED><!ATTLIST component component_name ID #REQUIRED>

回答回答回答回答 aXML Parserをラップする Javaストアド・プロシージャを定義するスクリプトxmlparsercover.sqlに誤りがあるようです。「is language java name」部分の「parseDTD」という名前の Javaメソッドは、「parseDTDClob」(大 /小文字は区別)である必要があります。

これを解決するには、次の手順に従います。

1. このスクリプトのバックアップ・コピーを作成します。

2. 次の行を編集します。

procedure parseDTDClob(id varchar2,dtd CLOB, root varchar2, err in out varchar2) is language java name'oracle.xml.parser.plsql.XMLParserCover.parseDTD (java.lang.String, oracle.sql.CLOB, java.lang.String, java.lang.String[])';

編集後は、次のとおりです。

procedure parseDTDClob(id varchar2, dtd CLOB, root varchar2, err in out varchar2) is language java name'oracle.xml.parser.plsql.XMLParserCover.parseDTDClob(java.lang.String, oracle.sql.CLOB, java.lang.String, java.lang.String[])';

つまり、次の文字列を変更します。

'oracle.xml.parser.plsql.XMLParserCover.parseDTD

変更後は、次のとおりです。

'oracle.xml.parser.plsql.XMLParserCover.parseDTDClob

スクリプト xmlparsercover.sqlを返すと、正常に実行できます。

20-34 Oracle8iアプリケーション開発者ガイド - XML Vol.2

Page 273: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

FAQ: XML Parser for PL/SQL

注意注意注意注意 : DTDには構文エラーがありましたが、前述の変更を行った後は正常に実行できました。

declare c clob; v varchar2(400) :='<!ELEMENT site_template (component* )><!ATTLIST site_template template_name CDATA #IMPLIED tempmlate_id CDATA #IMPLIED ><!ELEMENT component (#PCDATA )><!ATTLIST component component_id ID #REQUIRED parent_id IDREF #IMPLIED component_name CDATA #IMPLIED >';begin delete from dca_documents; insert into dca_documents values(1,empty_clob()) returning content into c; dbms_lob.writeappend(c,length(v),v); commit; parse_my_dtd;end;

回答回答回答回答 bLOBを使用して何を行いますか ? LOBには一時 LOBまたは永続 LOBがあります。永続LOBの場合、表に値を挿入する必要があります。一時 LOBの場合、プログラムでインスタンス化できます。

次に例を示します。

永続LOBの場合declare clob_var CLOB;begin insert into tab_xxx values(EMPTY_CLOB()) RETURNING clob_col INTO clob_var; dbms_lob.write(,,,,);// AQに送信します。end;一時LOBの場合 -----

declare a clob;begin dbms_lob.createtemporary(a,DBMS_LOB.SESSION); dbms_lob.write(...);// AQに送信します。

end;/

XML Parser for PL/SQLの使用 20-35

Page 274: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

FAQ: XML Parser for PL/SQL

『Oracle8iアプリケーション開発者ガイド ラージ・オブジェクト』も参照してください。PL/SQLの場合、次の文を実行するのみです。

myClob CLOB = clob();

DBMS_LOB.createtemporary()を試みましたが、正常に実行できます。

回答回答回答回答 cAQで LOBを使用している場合は、次の手順に従います。

1. 1つのフィールドを CLOB型に指定して、ADTを作成します。

create type myAdt (id NUMBER, cdata CLOB);

キュー表はmyAdt型であることを宣言する必要があります。

2. オブジェクトをインスタンス化します。LOBフィールドを empty_clob()に指定します。

myMessage := myAdt(10, EMPTY_CLOB();3. メッセージをエンキューします。

clob_loc clob;enq_msgid RAW(16);DBMS_AQ.enqueue('queue1', enq_opt, msg_prop, myMessage, enq_msgid)

4. LOBロケータを取得します。

select t.user_data.cdata into clob_locfrom qtable t where t.msgid= enq_msgid;

5. dbms_lob.writeを使用して、CLOBを移入します。

6. コミットします。

コミットの例は『Oracle8iアプリケーション開発者ガイド アドバンスト・キューイング』を参照してください。Java API for AQを使用している場合、手順は少し複雑になります。

ドキュメント解析中のエラードキュメント解析中のエラードキュメント解析中のエラードキュメント解析中のエラーXML Parser for PL/SQLインタフェースを使用しています。3つのタグで構成される XMLファイルがあり、解析時に次のエラーが発生します。

ORA-20100: Error occurred while parsing: Unterminated sring

ドキュメントを個々のタグで分割すると、2つのタグは問題ないのですが、3番目のタグにエラーが発生します。

ORA-20100: Error occurred while parsing: Invalid UTF8 encoding

20-36 Oracle8iアプリケーション開発者ガイド - XML Vol.2

Page 275: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

FAQ: XML Parser for PL/SQL

1. データを分割した場合、エラーが異なるのはどうしてですか ?

2. ドキュメント内の無限文字列を見つけることができません。

3. これがデータが入力される唯一の方法であり、別のパーサーを試す時間もありません。

回答回答回答回答ドキュメントが 3つのタグで構成されている場合、複数のルート要素があるためドキュメントは整形式ではありません。3つのタグの前後に、開始タグおよび終了タグを挿入してください。

PLXML: 指定された指定された指定された指定された URLの解析の解析の解析の解析

質問質問質問質問Windows NT上で XML Parser for PL/SQLを使用しています。Parser APIのドキュメントによると、「指定された URL/ファイルに格納された XMLを解析し、構築された DOMドキュメントを戻します。」のとおり、指定された URLも解析できるとあります。ファイルからの解析は正常に実行されますが、すべての形式の URLで、「ORA-29532: 不明な Java例外で Javaコールが終了しました : java.io.FileNotFoundException」が発生します。

解決方法およびコール例を教えてください。前提条件はありますか ?

回答回答回答回答外部 URLにアクセスするには、プロキシ・ホストおよびポートを設定する必要があります。たとえば、次のタイプの構文を使用します。

java -Dhttp.proxyHost=myproxy.mydomain.com -Dhttp.proxyPort=3182DOMSample myxml.xml

XML Parserを使用したを使用したを使用したを使用した HTMLの解析の解析の解析の解析

質問質問質問質問次のとおりに HTMLファイルを解析する必要があります。

1. 各「a href」を検出します。

2. 検出された各 a hrefに対して、リンク先のファイル /パス名を取得します。

3. ファイル /パス名をパラメータとして指定し、a hrefにデータベース・プロシージャ・コールを置き換えます。

XML Parser for PL/SQLを使用して、これを実行できますか ?実行できる場合、その難易度および実行方法を教えてください。

XML Parser for PL/SQLの使用 20-37

Page 276: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

FAQ: XML Parser for PL/SQL

回答回答回答回答 aHTMLファイルは整形式の XMLドキュメントである必要はありませんが、本当に XML Parserを使用する必要がありますか ? PERLの使用を検討してください。XML Parser for PL/SQLが次のメソッドをサポートするかどうか確かではありませんが、参考までに示します。

1. getElementsByTagName()(すべての一致するノードを取り出します)

2. getNodeValue()(文字列を戻します)

3. setNodeValue()(ノード値を設定します)

回答回答回答回答 bXML Parser for PL/SQLはこれらのメソッドをサポートしますが、整形式ではない HTMLファイルではサポートしません。

Oracle 7.3.4: Webブラウザへのデータの送信(ブラウザへのデータの送信(ブラウザへのデータの送信(ブラウザへのデータの送信(PL/SQL))))

質問質問質問質問次のコンポーネントを使用して、クライアント側のWebブラウザにデータを送信します。ただし、すべての処理はサーバー(Oracle 7.3.4)上で行われる必要があります。

� XML Parser for PL/SQL

� XSQL Servlet

これを行うには、この 2つのコンポーネントで十分ですか ?

回答回答回答回答XSQL Servlet実行の要件は次のとおりです。

� Oracle XML Parser

� Oracle XML SQL Utility for Java

� Java ServletをサポートするWebサーバー

� JDBCドライバ

XSQL Servlet自体も必要です。

20-38 Oracle8iアプリケーション開発者ガイド - XML Vol.2

Page 277: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

FAQ: XML Parser for PL/SQL

Oracle 7.3.4およびおよびおよびおよび XML

質問質問質問質問XML Parser for Javaは Oracle 7.3.4で動作しますか ?

XML SQL Utilityは XML Parser for Javaの一部ですか ?または個別にダウンロードする必要がありますか ?

回答回答回答回答1. 適切な JDBCドライバがあり、中間層またはクライアント側の VMで実行する限り、

XML Parser for Javaは Oracle 7.3.4で動作します。

2. XML Parser for Javaは XML SQL Utilityに必要であるため、XML SQL Utilityのダウンロードにコピーが含まれています。

getNodeValue(): DomNode値の取得値の取得値の取得値の取得

質問質問質問質問xmlparser()を使用した後、XMLタグの間の値を取得できません。DOMSAMPLE.SQL例のコードは、次のとおりです。

-- 要素間をループします。for i in 0..len-1 loop n := xmlparser.item(nl, i); dbms_output.put(xmlparser.getNodeName(n)

コメントコメントコメントコメント同様の問題が以前発生し、要素ノードの getNodeValue()が NULLを返すことがわかりました。また、テキスト・ノードの getNodeValue()は値を戻します。

ノードのすべての子または孫の取出しノードのすべての子または孫の取出しノードのすべての子または孫の取出しノードのすべての子または孫の取出し

質問質問質問質問DOM APIを使用して、DOMツリー内の特定ノードのすべての子や孫などを取り出す方法を教えてください。 XML Parser for PL/SQLを使用しています。

回答回答回答回答次の文を実行します。

DECLARE nodeList xmldom.DOMNodeList;

XML Parser for PL/SQLの使用 20-39

Page 278: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

FAQ: XML Parser for PL/SQL

theElement xmldom.DOMElement;BEGIN :nodeList := xmldom.getElementsByTagName( theElement,'*');:END;

これによって、ルート要素が「theElement」であるすべての子ノードが取得されます。

20-40 Oracle8iアプリケーション開発者ガイド - XML Vol.2

Page 279: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

XMLの手

A

XMLの手引きの手引きの手引きの手引き

この付録の内容は次のとおりです。

� XMLの概要

� XMLの機能

� XMLと HTMLの違い

� スタイルシートを使用した XMLの表示

� 拡張性および DTD

� XMLを使用する理由

� XML関連のリソース

引き A-1

Page 280: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

XMLの概要

XMLの概要の概要の概要の概要XMLは、Web上のデータを識別および記述する標準の方法です。広範囲に実装可能で、簡単に配置できます。

XMLは、階層構造を持つデータを記述するために使用する、人間およびマシンが理解できる一般的な構文で、様々なアプリケーション、データベース、E-Commerce、Java、Web開発、検索などに適用できます。

カスタム・タグを使用すると、アプリケーション間および組織間のデータを定義、送信、検証および解析できます。

W3Cのののの XML勧告勧告勧告勧告次に示すW3Cの XML勧告は、互いに連動する一連の仕様で、その数は現在も増加しています。

� XML 1.01998年 2月にW3Cによって勧告されました。その結果、多数のW3Cワーキング・グループ、Javaプラットフォーム拡張エキスパート・グループ、および電子データ交換(Electronic Data Interchange: EDI)などの大量のデータを交換する標準の XML変換が生まれました。HTMLの次期バージョンは、XHTMLとして知られる XMLアプリケーションになります。

� XML NamespaceW3C勧告であり、複数の名前空間を持つ整形式の XMLアプリケーション内にある要素のあいまいさを取り除くことを目的としています。

� XML QueryW3Cが策定している標準で、XMLドキュメントに対する問合せ言語を指定します。

� XML SchemaW3Cが策定している標準で、単純または複雑なデータ型を XMLドキュメントに追加し、DTDの機能を XML Schema定義の XMLドキュメントに置き換えます。

� XSL次の 2つのW3C勧告で構成されます。

� XSL Transformation(XMLドキュメントを他の XMLドキュメントに変換します)

� XSL Formating Object(XMLドキュメントの表示を指定します)

� XPathW3C勧告であり、XSLT、XLinkおよび XML Queryによって使用される XMLドキュメントをナビゲートするためのデータ・モデルおよび文法を指定します。

� XPointerW3C勧告であり、XPathナビゲーションを使用して、XMLドキュメント内の個別のエンティティまたはフラグメントの識別を指定します。このW3C勧告は、http://www.w3.org/TR/WD-xptrで定義されています。

A-2 Oracle8iアプリケーション開発者ガイド - XML Vol.2

Page 281: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

XMLの概要

� DOMW3C勧告であり、プログラム・アクセス用の APIを含む XMLドキュメントの文書オブジェクト・モデルを指定します。

図 A-1に、XMLアプリケーション・グループを示します。

図図図図 A-1 XMLアプリケーション・グループ(アプリケーション・グループ(アプリケーション・グループ(アプリケーション・グループ(XMLベースの標準を含む)ベースの標準を含む)ベースの標準を含む)ベースの標準を含む)

RD

F

XL

INK

XP

OIN

TE

R

XM

L S

ign

ature

SV

G

XH

TM

L

XF

OR

MS

XS

L

SM

IL

XM

L S

chem

a

MA

TH

ML

CM

L

EA

D

リソース記述フレームワーク�

XM

Lリンク言語�

XM

L Q

uery

XP

ath

DO

M

スケーラブル・ベクター・グラフィックス�

HT

ML 4.0を

XM

Lに記述し直す�

拡張可能スタイルシート言語�

同期マルチメディア統合言語�

等式の交換を許可する�

Chem

ical Markup Language

Encoded A

rchival Description

非W3C文法�

XML HTML 4.0

SGML

XM

Lベース�

の標準

/勧告�

XMLの手引き A-3

Page 282: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

XMLの機能

XMLの機能の機能の機能の機能XMLの機能は次のとおりです。

� 構造化データから非構造化データへのデータ交換構造化データから非構造化データへのデータ交換構造化データから非構造化データへのデータ交換構造化データから非構造化データへのデータ交換XMLは、データ交換の汎用標準構文であるといえます。XMLは、非常に正確なテキストベースの方法を指定してデータ固有の構造を表すため、一意に作成および解析されます。XMLの単純でタグベースの仕組は、HTMLと同様に簡単に理解できますが、高度に構造化されたデータベース・レコードから構造化されていないドキュメントまで、「デジタル資産」全般に対応できる柔軟で拡張可能な機能を提供します。

� 特にドキュメント用に設計された特にドキュメント用に設計された特にドキュメント用に設計された特にドキュメント用に設計された SGML - あらゆるデータ用に設計されたあらゆるデータ用に設計されたあらゆるデータ用に設計されたあらゆるデータ用に設計された XMLSGMLは、特にドキュメント用に設計されました。Web中心の XMLは、他言語の記述に使用できるツールキットのようなものです。XMLは、ドキュメントに限ったものではありません。ツリーで記述可能なすべてのデータは、XMLでプログラムできます。

� データ・オブジェクトのクラスデータ・オブジェクトのクラスデータ・オブジェクトのクラスデータ・オブジェクトのクラス - SGMLの制限付き形式の制限付き形式の制限付き形式の制限付き形式www.oasis-open.orgでは、XMLを次のように説明しています。(前略)XMLは XMLドキュメントというデータ・オブジェクトのクラスを記述し、ドキュメントを処理するコンピュータ・プログラムの動作を部分的に記述します。XMLはアプリケーション・プロファイル、または SGMLの制限付き形式です。構成的に、XMLドキュメントは SGMLに準拠したドキュメントです。

� 多くの多くの多くの多くの XMLの使用方法の使用方法の使用方法の使用方法W3C.orgプレス・リリースでは、XMLを次のように説明しています。(前略)XMLは本来、業界固有のマークアップ、ベンダーに中立的なデータ交換、メディアに依存しない公開、1対 1のマーケティング、協調的なオーサリング環境でのワークフロー管理、およびインテリジェント・クライアントによるWebドキュメントの処理に対する大規模なWebコンテンツ・プロバイダの要件を満たすために開発されました。

� メタデータメタデータメタデータメタデータXMLは、メタデータ・アプリケーション内でも使用できます。

� 国際化国際化国際化国際化XMLは、UTF-8および UTF-16エンコーディングで Unicodeキャラクタ・セットをサポートするために必要なすべての対応プロセッサを装備し、ヨーロッパ言語およびアジア言語に完全に対応しています。主に、電子発行およびデータ交換に使用されます。

� 解析対象または解析対象外記憶エンティティ解析対象または解析対象外記憶エンティティ解析対象または解析対象外記憶エンティティ解析対象または解析対象外記憶エンティティW3C.orgの XML仕様提案の抜粋を示します。(前略)XMLドキュメントは、エンティティというデータの格納単位で構成され、各エンティティには解析対象または解析対象外のデータが含まれます。解析対象データは文字で構成され、中にはドキュメント内の文字データを形成したり、タグを形成するものもあります。タグ付けは、ドキュメントのデータ格納のレイアウトおよび論理構造の記述をエンコーディングします。

A-4 Oracle8iアプリケーション開発者ガイド - XML Vol.2

Page 283: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

XMLと HTMLの違い

� XML Processorによるによるによるによる XMLドキュメントの読込みドキュメントの読込みドキュメントの読込みドキュメントの読込みXMLは、データ格納レイアウトおよび論理構造を制約するメカニズムを提供します。XMLドキュメントの読込み、コンテンツおよび構造へのアクセスには、XML Processorというソフトウェア・モジュールが使用されます。XML Processorは、アプリケーションという他のモジュールのかわりに作業を行います。

� インターネットのオープン標準インターネットのオープン標準インターネットのオープン標準インターネットのオープン標準XMLは、情報交換用のプラットフォームおよびアプリケーションに中立的な形式として、IBM社、Sun Microsystems社、Microsoft社、Netscape社、SAP社、CISCO社などの他ベンダーから幅広い業界サポートを獲得しつつあります。

このマニュアルでは、XMLの構文については詳しく説明しませんが、XMLに関する主な項目の概要を次に示します。XML構文の詳細は、「XML関連のリソース」に示すリソースを参照してください。

XMLとととと HTMLの違いの違いの違いの違いHTMLと同様に、XMLは SGMLのサブセットであり、Web上での配信に最適です。

ブラウザ上で表示するためにWebページの要素をタグ付けする(たとえば、<bold>Oracle</bold>)HTMLとは異なり、XMLは、データとして要素をタグ付けします(たとえば、<company>Oracle</company>)。たとえば、XMLを使用してWebページ内の単語および値に意味を持たせることができ、単純なテキストまたは数字要素としてではなく、データとして認識させます。

HTMLのコード例を次に示します。その後、対応する XMLのコード例を示します。例では、次の従業員データを示しています。

� 従業員数

� 名前

� 職種

� 給与

HTMLの例の例の例の例 1<table> <tr><td>EMPNO</td><td>ENAME</td><td>JOB</td><td>SAL</td></tr> <tr><td>7654</td><td>MARTIN</td><td>SALESMAN</td><td>1250</td></tr> <tr><td>7788</td><td>SCOTT</td><td>ANALYST</td><td>3000</td></tr> </table>

XMLの例の例の例の例 1XMLコードでは、XMLデータ・タグが追加され、要素の構造がネストしていることに注意してください。

XMLの手引き A-5

Page 284: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

XMLと HTMLの違い

<?xml version="1.0"?> <EMPLIST> <EMP> <EMPNO>7654</EMPNO> <ENAME>MARTIN</ENAME> <JOB>SALESMAN</JOB> <SAL>1250</SAL> </EMP> <EMP>  <EMPNO>7788</EMPNO>  <ENAME>SCOTT</ENAME>  <JOB>ANALYST</JOB>  <SAL>3000</SAL> </EMP> </EMPLIST>

HTMLの例の例の例の例 2タグを使用して表の行内のデータを表す次の HTMLを考えてみます。「Java Programming」が本の名前であるか、大学の科目名であるか、仕事のスキルであるかは、ページ上のデータおよびタグを見るだけでは判断できません。これを計算するコンピュータ・プログラムについて考えてみます。

<HTML> <BODY> <TABLE> <TR> <TD>Java Programming</TD> <TD>EECS</TD> <TD>Paul Thompson</TD> <TD>Ron<BR>Uma<BR>Lindsay</TD> </TR> </TABLE> </BODY> </HTML>

XMLの例には同様のデータが含まれますが、タグは表示方法ではなく、データが何の情報を表すかを示します。「Java Programming」が大学の科目名であることがはっきりしましたが、表示方法についての説明はありません。

XMLの例の例の例の例 2:<?xml version="1.0"?> <Course> <Name>Java Programming</Name> <Department>EECS</Department> <Teacher>

A-6 Oracle8iアプリケーション開発者ガイド - XML Vol.2

Page 285: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

XMLと HTMLの違い

<Name>Paul Thompson</Name> </Teacher> <Student> <Name>Ron</Name> </Student> <Student> <Name>Uma</Name> </Student> <Student> <Name>Lindsay</Name> </Student> </Course>

XMLおよび HTMLは両方とも情報を表します。

� XMLは情報の内容を表します。

� HTMLはその内容の外観を表します。

XMLとととと HTMLの違いの概要の違いの概要の違いの概要の違いの概要図 A-1に、XMLと HTMLの違いの概要を示します。

表表表表 A-1 XMLとととと HTMLの違いの違いの違いの違い

XML HTML

情報の内容を表します。 内容の外観を表します。

ユーザー定義のタグを含みます。 標準で定義されたタグの固定セットを含みます。

すべての開始タグには終了タグがあります。 現行のブラウザでは、<P>、<B>などのタグに終了タグが必須ではありません。

属性は、一重または二重引用符で囲む必要があります。

現行のブラウザでは、この要件が必須ではありません。

空要素は、明確に示します。 現行のブラウザでは、この要件が必須ではありません。

要素名および属性は、大文字 /小文字が区別されます。

要素名および属性は、大文字 /小文字が区別されません。

XMLの手引き A-7

Page 286: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

スタイルシートを使用した XMLの表示

スタイルシートを使用したスタイルシートを使用したスタイルシートを使用したスタイルシートを使用した XMLの表示の表示の表示の表示データソースとして XMLを使用する主なメリットは、XMLの外観(Webページなど)を構造および内容から切り離せることです。

� 外観外観外観外観 : 適用したスタイルシートが、表示を定義します。XMLデータは、異なるスタイルシートを適用するだけで、外観および構成を様々な方法で表すことができます。

� 構造および内容構造および内容構造および内容構造および内容 : XMLデータは、構造および内容を定義します。

スタイルシートの使用スタイルシートの使用スタイルシートの使用スタイルシートの使用次のスタイルシートの使用方法を検討してみます。

� それぞれの表示スタイル用に異なるスタイルシートを定義することによって、ユーザー・プロファイル、ブラウザの種類または他の基準に基づいて、異なるユーザーに異なるインタフェースが表示されます。

� スタイルシートを使用して、XMLデータを、データを受信および処理する特定のアプリケーション用に調整された形式に変換します。

スタイルシートは、サーバー側またはクライアント側で適用できます。XSL-Transformation Processor(XSLT Processor)は、XML形式を、XMLまたは HTMLなど他のテキストベースの形式に変換します。すべての Oracle XML Parserには、XSLT Processorが搭載されています。

スタイルシートの適用方法および XSLT Processorの使用方法については、次の章を参照してください。

� 第 16章「XML Parser for Javaの使用」

拡張可能スタイルシート言語(拡張可能スタイルシート言語(拡張可能スタイルシート言語(拡張可能スタイルシート言語(eXtensible Stylesheet Language:XSL))))XMLのスタイルシート言語である XSLは、W3Cの勧告です。XSLが提供するスタイルシートを使用すると、次の操作が可能です。

� XMLを、XMLまたはHTMLなど他のテキストベース形式に変換できます。

� データを再配置またはフィルタできます。

� XMLデータを、別の DTDに準拠する XMLに変換できます。これは、異なるアプリケーション間でデータを共有するための重要な機能です。

A-8 Oracle8iアプリケーション開発者ガイド - XML Vol.2

Page 287: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

拡張性および DTD

カスケーディング・スタイルシート(カスケーディング・スタイルシート(カスケーディング・スタイルシート(カスケーディング・スタイルシート(Cascading Style Sheet: CSS))))W3C仕様のカスケーディング・スタイルシート(CSS1)は、本来、HTMLドキュメントで使用するために作成されました。CSSを使用すると、ドキュメントの外観に関する次の点を制御できます。

� 間隔、要素の見え方、位置およびサイズ

� カラーおよびバックグラウンド

� フォントおよびテキスト

CSS2は 1998年にW3Cによって公開され、次の機能が追加されています。

� システムのフォントおよびカラー

� 自動ナンバリング

� ページ区切りメディアのサポート

� 表および音声スタイルシート

カスケードとは、1つのドキュメントに複数のスタイルシートを適用できることを意味します。たとえば、CSSmを配置するWebページ上では、3つのスタイルシートを適用またはカスケードできます。

1. ユーザーが要求するスタイルシートが優先されます。

2. カスケーディング・スタイルシート

3. ブラウザ・スタイルシート

拡張性および拡張性および拡張性および拡張性および DTDHTMLより XMLを使用する別のメリットとして、タグの仕様および使用方法に制約がないことがあります。データの意味および構造を表す独自のタグを作成して、XMLドキュメントを作成します。

タグは、XMLドキュメント中で使用して定義するか、または形式的に DTDで定義できます。データまたはアプリケーションの要件が変更になった場合、タグを変更または追加して新しいデータ・コンテキストを反映するか、または既存のタグを拡張できます。

次に、前述の XML例の単純な DTDを示します。

<!ELEMENT EMPLIST (EMP)*> <!ELEMENT EMP (EMPNO, ENAME, JOB, SAL)> <!ELEMENT EMPNO (#PCDATA)> <!ELEMENT ENAME (#PCDATA)> <!ELEMENT JOB (#PCDATA)> <!ELEMENT SAL (#PCDATA)>

XMLの手引き A-9

Page 288: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

XMLを使用する理由

整形式および妥当な整形式および妥当な整形式および妥当な整形式および妥当な XMLドキュメントドキュメントドキュメントドキュメント

整形式整形式整形式整形式 のののの XMLドキュメントドキュメントドキュメントドキュメントXMLの構造規則および表記規則に準拠する XMLドキュメントは、整形式とみなされます。整形式 の XMLドキュメントは DTDを含んだり参照する必要はなく、データ要素およびその関係を暗黙的に定義できます。整形式の XMLドキュメントは、次の規則に従う必要があります。

� ドキュメントは、XML宣言 <?xml version="1.0">で始まります。

� すべての要素は、1つのルート要素内に含まれる必要があります。

� すべての要素は、オーバーラップすることなくツリー構造にネストする必要があります。

� 空要素以外のすべての要素には、開始および終了タグが必要です。

妥当な妥当な妥当な妥当な XMLドキュメントドキュメントドキュメントドキュメントDTDにも準拠する整形式の XMLドキュメントは、妥当であるとみなされます。DTDを含んだり参照する XMLドキュメントを解析する場合、解析アプリケーションは、XMLがDTDに準拠し、妥当であるかどうかを検証できます。これによって、解析アプリケーションは、すべてのデータ要素およびその内容が DTDに定義された規則に準拠していることを確認して、XMLドキュメントを処理できます。

XMLを使用する理由を使用する理由を使用する理由を使用する理由情報交換のインターネット標準である XMLは、次の理由から有効といえます。

� データ交換の問題を解決します。データ交換の問題を解決します。データ交換の問題を解決します。データ交換の問題を解決します。次の場合に、効率的なデータ通信が容易に行えます。

� データが様々な形式およびプラットフォームにある場合

� データを異なるプラットフォームに送信する必要がある場合

� データを異なる形式および外観で表示する必要がある場合

� データを様々なエンド・デバイスで表示する必要がある場合

このように、XMLは、アプリケーションのデータ交換の問題を解決します。XMLを使用すると、他の企業およびワークフロー・コンポーネントと容易に通信できます。XMLによるデータ交換問題の解決方法の詳細および例は、第 2章~第 19章を参照してください。

注意注意注意注意 : DOCTYPE宣言は、DTDが XMLコードに埋め込まれる場合にのみ使用されます。

A-10 Oracle8iアプリケーション開発者ガイド - XML Vol.2

Page 289: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

XML関連のリソース

Web、データベース、ネットワーキングおよびミドルウェアの相互作用に有効な XMLを使用して、Webベースのアプリケーションを構築できます。XMLは、データ送信用に構造化された形式を提供します。

� 業界固有のデータ・オブジェクトは、業界固有のデータ・オブジェクトは、業界固有のデータ・オブジェクトは、業界固有のデータ・オブジェクトは、XMLを使用して設計されています。を使用して設計されています。を使用して設計されています。を使用して設計されています。OAGやXML.orgなどの組織は、XMLを使用して業界ごとのデータ・オブジェクトを標準化しています。これによって、B2Bのデータ交換がさらに容易になります。

� XMLを使用すると、データベース内のデータに簡単にアクセス、変換および格納できを使用すると、データベース内のデータに簡単にアクセス、変換および格納できを使用すると、データベース内のデータに簡単にアクセス、変換および格納できを使用すると、データベース内のデータに簡単にアクセス、変換および格納できます。ます。ます。ます。データベースは、優れたデータの問合せ能力、スケーラビリティおよび可用性を発揮するため、大量のビジネス・データをリレーショナル表およびオブジェクト・リレーショナル表に格納します。このデータは、XML形式から変換され、オブジェクト・リレーショナル・データベース構造および純粋なリレーショナル・データベース構造に格納されるか、追加の処理のために再度 XMLに生成されます。

XMLを使用するその他のメリットを使用するその他のメリットを使用するその他のメリットを使用するその他のメリット次のように、他にも XMLを使用するメリットがあります。

� 独自のタグを作成できます。

� 多くのツールが XMLをサポートします。

� XMLはオープン標準です。

� オープン標準に準拠して構築された XML Parserは、相互運用が可能なパーサーで、単独のベンダーに拘束されません。XML仕様は、様々な業界で承認されています。

� XMLでは、データの表示がデータの構造および内容から切り離されています。データの表示は、簡単にカスタマイズできます。「スタイルシートを使用した XMLの表示」および「データ表示のカスタマイズ」を参照してください。

� 汎用性があります。XMLは、自己記述型の方法でデータを表示できるため、様々な場所で使用されます。

� 永続性があります。XMLドキュメントとしてデータを具体化することによって、プログラムによるアクセスおよび操作を可能にしながらデータは存続できます。

� プラットフォームおよびアプリケーションに依存しません。

� スケーラブルです。

XML関連のリソース関連のリソース関連のリソース関連のリソース次に、XMLに関する情報のリソースを示します。

� 『The Oracle XML Handbook』Ben Chang、Mark Scardina他著、Oracle Press出版

� 『Building Oracle XML Applications』Steve Muench著、O'Reilly出版

� 『XML Bible』Elliotte Rusty Harold著、IDG Books Worldwide出版

XMLの手引き A-11

Page 290: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

XML関連のリソース

� 『XML Unleashed』Morrisonその他著、SAMS出版

� 『Building XML Applications』St.Laurent、Cerami著、McGraw-Hill出版

� 『Building Web Sites with XML』Michael Floyd著、Prentice Hall PTR出版

� 『Building Corporate Portals with XML』Finkelstein、Aiken著、McGraw-Hill出版

� http://www.w3.org/TRに、W3Cのテクニカル・レポートがあります。

� http://www.w3.org/xmlに、W3Cの活動概要を示しています。

� http://www.xml.comに、XMLに関する業界最新ニュースを示しています。

� http://www.xml-cml.orgに、Chemical Markup Language(CML)に関する情報があります。CMLドキュメントは、Jumboブラウザ上で参照および編集できます。

� http://www.loc.gov/ead/に、アメリカ連邦議会図書館向けに開発された Encoded Archival Description(EAD)の情報があります。

� http://www.docuverse.com/xlfに、Extensible Log Format(XLF)の情報があります。XLFは、ログ・ファイル管理を簡素化するために、ログ・ファイルを XMLに変換するプロジェクトです。

� http://www.w3.org/Mathに、アプリケーション間で等式を交換する方法を提供するMathMLに関する情報があります。

� http://www.naa.orgに、案内広告を容易に交換するための全米新聞協会の案内広告形式に関する情報があります。

� http://www.w3/org/AudioVideo/に、同期マルチメディア統合言語(Synchronized Multimedia Integration Language: SMIL)に関する情報があります。

� オラクル社は OASISの公式スポンサーです。OASIS(http://www.oasis-open.orgを参照)は、XMLアプリケーションの標準化に尽力する世界最大の独立非営利団体です。OASISはすべての産業からの参加を促進し、競合企業および重複する標準本体のまとめ役を担っています。

A-12 Oracle8iアプリケーション開発者ガイド - XML Vol.2

Page 291: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

Oracle XML Parserおよび Class Generatorの言語間

B

Oracle XML Parserおよびおよびおよびおよび Class Generator

の言語間比較の言語間比較の言語間比較の言語間比較

この付録では、Oracle XML Parserおよび Class Generatorを言語間で比較します。この付録の内容は次のとおりです。

� Oracle XML Parserの比較

� Oracle XML Class Generatorの比較

比較 B-1

Page 292: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

Oracle XML Parserの比較

Oracle XML Parserの比較の比較の比較の比較表 B-1に、Oracle XML Parser機能の言語間の比較を示します。

表表表表 B-1 Oracle XML Parserの比較の比較の比較の比較

Java PL/SQL

Parser V2

DOM APIを含む DOM APIを含む

SAX APIを含む 利用不可

XSLT Processor XSLT Processor

XML Namespace 1.0をサポートする XML Namespace 1.0をサポートする

XPath 1.0をサポートする XPath 1.0をサポートする

ドキュメントが整形式かどうかを確認する ドキュメントが整形式かどうかを確認する

検証および非検証をサポートする 検証および非検証をサポートする

キャラクタ・セット(15):

  BIG 5

  EBCDIC-CP-*

  EUC-JP

  EUC-KR

  GB2312

  ISO-2022-JP

  ISO-2022-KR

  ISO-8859-1~ ISO-8859-9

  ISO-10646-UCS-2

  ISO-10646-UCS-4

  KOI8-R

  Shift_JIS

  US-ASCII

  UTF-8

  UTF-16

キャラクタ・セット(12):

  BIG 5

  EBCDIC-CP-*

  EUC-JP

  EUC-KR

  GB2312

  ISO-2022-JP

  ISO-2022-KR

  ISO-8859-1~ ISO-8859-9

  KOI8-R

  Shift_JIS

  US-ASCII

  UTF-8

B-2 Oracle8iアプリケーション開発者ガイド - XML Vol.2

Page 293: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

Oracle XML Parserの比較

デフォルトのキャラクタ・セット :

 UTF-8

デフォルトのキャラクタ・セット :

 UTF-8

オペレーティング・システム :

 Linux

 Solaris 2.6

 Windows NT 4.0/Service Pack3以上

オペレーティング・システム :

 Linux

 Solaris 2.6

 Windows NT 4.0/Service Pack3以上

致命的エラー以外のエラー・リカバリ 致命的エラー以外のエラー・リカバリ

表表表表 B-1 Oracle XML Parserの比較(続き)の比較(続き)の比較(続き)の比較(続き)

Java PL/SQL

Oracle XML Parserおよび Class Generatorの言語間比較 B-3

Page 294: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

Oracle XML Class Generatorの比較

Oracle XML Class Generatorの比較の比較の比較の比較表 B-2に、Class Generator機能の言語間の比較を示します。

表表表表 B-2 Class Generatorの比較の比較の比較の比較

Java PL/SQL

Class Generator

oracle.xml.classgen

CGDocument

CGNode

ClassGenerator

InvalidContentException

使用不可

キャラクタ・セット(8):

 EBCDIC-CP-US

   ISO-8859-1

   ISO-10646-UCS-2

   ISO-10646-UCS-4

   Shift_SJIS

   US-ASCII

   UTF-8

   UTF-16

使用不可

デフォルトのキャラクタ・セット :

   US-ASCII

使用不可

B-4 Oracle8iアプリケーション開発者ガイド - XML Vol.2

Page 295: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

XDK for Java: 仕様および早

C

XDK for Java: 仕様および早見表仕様および早見表仕様および早見表仕様および早見表

この付録では、XDK for Javaの仕様、および Java用の各 XMLコンポーネントの早見表を示します。早見表には、Oracleの各 XMLコンポーネントの主なAPI、クラスおよび対応付けられたメソッドを示します。

この付録の内容は次のとおりです。

� XML Parser for Javaの早見表

� oraxslコマンドライン・インタフェース

� XML Parser for Java V2の仕様

� XML Parser for Javaのリリース履歴

� XDK for Java: XML Class Generator for Java

� XML Class Generator for Javaの早見表

� XDK for Java: XSQL Servlet

� XSQL Servletの仕様

� XDK for Java: XSQL Servletの早見表

� XDK for Java: Transviewer Beanの早見表

� XDK for Java: Transviewer Beanの早見表

見表 C-1

Page 296: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

XML Parser for Javaの早見表

XML Parser for Javaの早見表の早見表の早見表の早見表表 C-1に、XML Parser for Javaの最上位クラスをそれぞれ簡単に説明します。

表表表表 C-1 XML Parser for Java: oracle.xml.parser.v2クラスクラスクラスクラス

クラスのサマリークラスのサマリークラスのサマリークラスのサマリー 説明説明説明説明

インタフェースインタフェースインタフェースインタフェース

NSName 要素名および属性名用の名前空間をサポートします。

NSResolver 名前空間の解決をサポートします。

XMLDocumentHandler org.xml.sax.DocumentHandlerインタフェースを拡張します。

XMLToken XMLToken用の基本インタフェースです。

クラスクラスクラスクラス

AttrDecl DTD内の属性リストに宣言されている各属性の情報を保持します。

Oracle.xml.parser.v2パッケージ

XMLDocumentHandlerインタフェースのデフォルトの動作を実装します。

DOMParser W3C勧告に従って、XML 1.0パーサーを実装します。

DTD DOM DocumentTypeインタフェースを実装し、XMLドキュメントの DTD情報を保持します。

ElementDecl DTDの要素宣言を表します。

NodeFactory 解析中に構築される DOMツリーの様々なノードを作成するメソッドを指定します。

oraxsl 複数の XMLドキュメントで適用されるスタイルシートへのコマンドライン・インタフェースを提供します。

SAXAttrList SAX AttributeListインタフェースを実装し、名前空間をサポートします。

SAXParser W3C勧告に従って、XML 1.0 SAXパーサーを実装します。

XMLAttr DOM Attrインタフェースを実装し、要素の各属性情報を保持します。

XMLCDATA DOM CDATASectionインタフェースを実装します。

XMLComment DOM Commentインタフェースを実装します。

XMLDocument DOM Documentインタフェースを実装し、XMLドキュメント全体を表します。また、DOMツリーのルートとして機能します。

C-2 Oracle8iアプリケーション開発者ガイド - XML Vol.2

Page 297: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

XML Parser for Javaの早見表

XMLDocumentFragment DOMの DocumentFragmentインタフェースを実装します。

XMLElement DOMの Elementインタフェースを実装します。

XMLEntityReference

XMLNode DOMの Nodeインタフェースを実装し、DOM全体のプライマリ・データ型として機能します。

XMLParser DOMParserクラスおよび SAXParserクラスのベース・クラスとして機能します。

XMLPI DOMの Processing Instructionインタフェースを実装します。

XMLText DOMの Textインタフェースを実装します。

XMLTokenizer W3C勧告に従って、XML 1.0パーサーを実装します。

XSLProcessor 事前に作成された XSLStylesheetを使用して、入力 XMLドキュメントを変換するメソッドを提供します。

XSLStylesheet テンプレート、キー、変数、属性セットなどの XSLスタイルシートに関する情報を保持します。

例外例外例外例外

XMLParseException XMLドキュメントの処理中に、解析例外が発生したことを示します。

XSLException XSL変換中に例外が発生したことを示します。

表表表表 C-1 XML Parser for Java: oracle.xml.parser.v2クラス(続き)クラス(続き)クラス(続き)クラス(続き)

クラスのサマリークラスのサマリークラスのサマリークラスのサマリー 説明説明説明説明

XDK for Java: 仕様および早見表 C-3

Page 298: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

XML Parser for Javaの早見表

表表表表 C-2 XML Parser for Java: DOMParser()メソッドメソッドメソッドメソッド

メソッドメソッドメソッドメソッド 説明説明説明説明

DOMParser() 新しいパーサー・オブジェクトを作成します。

メソッドメソッドメソッドメソッド

getDoctype() DTDを取得します。

getDocument() ドキュメントを取得します。

parseDTD(InputSource, String) 指定した入力ソースから XML外部 DTDを解析します。

parseDTD(InputStream, String) 指定した入力ストリームから XML外部 DTDを解析します。

parseDTD(Reader, String) 指定した入力ストリームから XML外部 DTDを解析します。

parseDTD(String, String) 指定した URLから XML外部 DTDを解析します。

parseDTD(URL, String) 指定した URLが指す XML外部 DTDを解析し、対応する XMLドキュメントの階層を作成します。

setErrorStream(OutputStream) エラーおよび警告を出力するための出力ストリームを設定します。

setErrorStream(OutputStream, String) エラーおよび警告を出力するための出力ストリームを設定します。

setErrorStream(PrintWriter) エラーおよび警告を出力するための出力ストリームを設定します。

setNodeFactory(NodeFactory) ノード・ファクトリを設定します。

showWarnings(boolean) 警告を出力するかどうかを決定します。

C-4 Oracle8iアプリケーション開発者ガイド - XML Vol.2

Page 299: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

XML Parser for Javaの入手方法

oraxslコマンドライン・インタフェースコマンドライン・インタフェースコマンドライン・インタフェースコマンドライン・インタフェースoraxslクラスは、複数の XMLドキュメントで適用されるスタイルシートへのコマンドライン・インタフェースを提供します。このクラスでは、動作を指定する様々なコマンドライン・オプションを使用できます。次に、oraxslクラスをコールする構文を示します。

public class oraxsl extends java.lang.Object java.lang.Object|+--oracle.xml.parser.v2.oraxsl

java oraxsl options* source? stylesheet? result?-w Show warnings-e <error log> A file to write errors to-l <xml file list> List of files to transform-d <directory> Directory with files to transform-x <source extension> Extensions to exclude-i <source extension> Extensions to include-s <stylesheet> Stylesheet to use-r <result extension> Extension to use for results-o <result extension> Directory to place results-p <param list> List of Params-t <# of threads> Number of threads to use-v Verbose mode

XML Parser for Javaの入手方法の入手方法の入手方法の入手方法Oracle XML Parserは、Oracle8i Enterprise Editionおよび Oracle8i Standard Editionリリース 8.1.6以上に付属しています。

XML Parser for Java V2のインストールのインストールのインストールのインストールこの項では、Windows NTおよび UNIXバージョンの XML Parser for Java V2をインストールする方法を説明します。

XML Parser for Java V2: Windows NT上でのインストール上でのインストール上でのインストール上でのインストールWindows NT上で Oracle XML Parser for Java V2をインストールするには、次の手順に従います。

1. JDK 1.1.x.以上および ZIP形式ファイルの解凍ユーティリティ(Winzipなど)をインストールします。

2. ZIP形式の Oracle XML Parserをダウンロードします。

3. ディレクトリに xmlparser.zipを解凍します。次に例を示します。

XDK for Java: 仕様および早見表 C-5

Page 300: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

XML Parser for Javaの入手方法

C:¥[ディレクトリ名]> unzip xmlparser.zip

4. 解凍すると、次のファイルおよびディレクトリが取得されます。

* license.html - ライセンス契約のコピー

* readme.html - リリース・ノートおよびインストレーション・ガイド

* doc¥ - ドキュメントのディレクトリ

* lib¥ - パーサー・クラス・ファイルのディレクトリ

* sample¥ - サンプル・コード・ファイル

XML Parser for Java V2: UNIX上でのインストール上でのインストール上でのインストール上でのインストールUNIX上で Oracle XML Parser for Java V2をインストールするには、次の手順に従います。

1. JDK 1.1.x以上および GNU gzipをインストールします。

2. .tar.gz形式の Oracle XML Parserをダウンロードします。

3. ディレクトリに配布パッケージを解凍します。次に例を示します。

#gzip -dc xmlparser.tar.gz | tar xvf -

4. 解凍すると、次のファイルおよびディレクトリが取得されます。

* license.html - ライセンス契約のコピー

* readme.html - リリース・ノートおよびインストレーション・ガイド

* doc/ - ドキュメントのディレクトリ

* lib/ - パーサー・クラス・ファイルのディレクトリ

* sample/ - サンプル・コード・ファイル

サンプル・コードサンプル・コードサンプル・コードサンプル・コードサンプル・コードおよび XML Parserの使用方法については、第 16章「XML Parser for Javaの使用」を参照してください。

C-6 Oracle8iアプリケーション開発者ガイド - XML Vol.2

Page 301: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

XML Parser for Java V2の仕様

XML Parser for Java V2の仕様の仕様の仕様の仕様Oracle XML Parser for Java V2の仕様は、次のとおりです。

� 高パフォーマンスの新しいアーキテクチャを提供します。

� W3Cの XSLT最終ワーキング・ドラフトを統合サポートします。

� 検証モードおよび非検証モードをサポートします。

� 致命的エラーが発生するまで組込みエラー・リカバリを行います。

� DOMレベル 1.0 APIを統合します。

� SAX 1.0 APIを統合します。

� W3C勧告の XML Namespaceをサポートします。

要件要件要件要件オペレーティング・システム : Java 1.1.xをサポートするオペレーティング・システム

AVA: JDK 1.1.x以上

注意注意注意注意 : Windowsおよび UNIXバージョンの内容は同じです。これらは、オペレーティング・システムの互換性およびユーザーにとっての便宜上、異なる形態でアーカイブされているのみです。

リリース固有の注意事項リリース固有の注意事項リリース固有の注意事項リリース固有の注意事項アーカイブのルート・ディレクトリにある readme.htmlファイルには、バグ修正や追加のAPIなどのリリース固有の情報が含まれています。

Oracle XML Parserは Early Adopter Release版で、Javaで作成されています。XMLドキュメントが整形式であるか、また妥当であるかどうか(オプション)を確認します。Oracle XML Parserは、アクセス可能な Javaオブジェクト・ツリーを構築します。Oracle XML Parserには、XMLドキュメントを変換するための、統合された XSLT Processorも含まれています。

標準への準拠標準への準拠標準への準拠標準への準拠Oracle XML Parserは、次の標準に準拠しています。

W3Cの XML 1.0勧告(http://www.w3.org/TR/1998/REC-xml-19980210を参照)

W3Cの DOM レベル 1 1.0勧告(http://www.w3.org/TR/REC-DOM-Level-1/を参照)

XDK for Java: 仕様および早見表 C-7

Page 302: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

XML Parser for Java V2の仕様

W3Cの XML Namespace勧告(http://www.w3.org/TR/REC-xml-names/を参照)

Simple API for XML(SAX)1.0(http://www.megginson.com/SAX/index.htmlを参照)

W3Cの XSLT最終ワーキング・ドラフト(http://www.w3.org/1999/08/WD-xsltを参照)

キャラクタ・セット・エンコーディングのサポートキャラクタ・セット・エンコーディングのサポートキャラクタ・セット・エンコーディングのサポートキャラクタ・セット・エンコーディングのサポートXML Parser for Javaは、次のエンコーディングをサポートしています。

� BIG 5

� EBCDIC-CP-*

� EUC-JP

� EUC-KR

� GB2312

� ISO-2022-JP

� ISO-2022-KR

� ISO-8859-1~ ISO-8859-9

� ISO-10646-UCS-2

� ISO-10646-UCS-4

� KOI8-R

� Shift_JIS

� US-ASCII

� UTF-8

� UTF-16

デフォルトデフォルトデフォルトデフォルト : デフォルトでは、UTF-8がエンコーディングになります。JDKがサポートする他の ASCIIベースまたは EBCDICベースのエンコーディングも使用できます。ただし、IANAが定義する公式キャラクタ・セット名ではなく、JDKが要求する形式で指定する必要があります。

エラー・リカバリエラー・リカバリエラー・リカバリエラー・リカバリOracle XML Parserは、エラー・リカバリも行います。ほとんどのエラーからのリカバリを行い、致命的なエラーが発生するまでは処理を継続します。

C-8 Oracle8iアプリケーション開発者ガイド - XML Vol.2

Page 303: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

Oracle XML Parser V1および Oracle XML Parser V2

Oracle XML Parser V1およびおよびおよびおよび Oracle XML Parser V2XML Parser for Java V2では、XSLT Processorが組み込まれたことの他に、V1から再構築されています。その結果、特に Namespaceをサポートするクラス名が大幅に変更されています。V1から V2のコード変換で注意する必要がある変更の概要を、次に示します。

新しいクラス構造新しいクラス構造新しいクラス構造新しいクラス構造oracle.xml.parserパッケージは、oracle.xml.parser.v2に改名されています。

新しいインタフェースは次のとおりです。

� NSName

� XMLDocumentHandler

次のインタフェースは削除されています。

� NSAttr

� NSAttributeList

� NSDocumentHandler

� NSElement

V2の新しいクラスは次のとおりです。

� DOMParser

� DefaultXMLDocumentHandler

� SAXAttrList

� SAXParser

� XSLProcessor

� XSLStylesheet

� XSLException

注意注意注意注意 : この概要は、XML Parser V1.0.14(V1)および V2.0.00(V2)に基づいています。

XDK for Java: 仕様および早見表 C-9

Page 304: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

Oracle XML Parser V1および Oracle XML Parser V2

このパッケージ内では、クラスは次のとおり再編成されています。

表表表表 C-3 XML Parser for Java: クラスの再編成および変更クラスの再編成および変更クラスの再編成および変更クラスの再編成および変更

V1 V2

クラスの再編成クラスの再編成クラスの再編成クラスの再編成

XMLParser � XMLParser(DOMおよび SAXのアクセスに適用可能なメソッドを含みます)

� DOMParser(DOMアクセスに固有のメソッドを含みます)

� SAXParser(SAXアクセスに固有のメソッドを含みます)

NSDocumentHandler XMLDocumentHandler

NSAttr XMLAttr(Namespaceをサポートし、NSAttrインタフェースは削除されています)

NSAttributeList SAXAttrList(NSAttributeListおよび org.xml.sax.AttributeListのメソッドを含みます)

NSElement XMLElement(Namespaceをサポートし、NSElelementインタフェースは削除されています)

パブリック・クラスパブリック・クラスパブリック・クラスパブリック・クラス /変数変数変数変数 /コンストラクタコンストラクタコンストラクタコンストラクタ /メソッドメソッドメソッドメソッドの変更の変更の変更の変更

AttrDecl

getName() 削除されています。XMLNode.getNodeNameを使用してください。

getPresence() getAttrPresence()

getType() getAttrType()

getValues() getEnumerationValues()

ElementDecl

ASTERISK 将来の実装のために予約されています。

COMMA 将来の実装のために予約されています。

ELEMENT 将来の実装のために予約されています。

OR 将来の実装のために予約されています。

PLUS 将来の実装のために予約されています。

QMARK 将来の実装のために予約されています。

getParseTree() 将来の実装のために予約されています。

C-10 Oracle8iアプリケーション開発者ガイド - XML Vol.2

Page 305: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

Oracle XML Parser V1および Oracle XML Parser V2

XMLAttr 新しいコンストラクタ - XMLAttr(String, String, String, String)

新しいメソッド :

� cloneNode()

� getPrefix()

XMLElement 新しいコンストラクタ - XMLElement(String, String, String)

新しいメソッド :

� checkNamespace(String, String)

� getElementsByTagName(String, String)

� resolveNamespacePrefix(String)

XMLNode 新しいメソッド - transformNode()

XMLText 新しいメソッド - getNodeValue()

表表表表 C-3 XML Parser for Java: クラスの再編成および変更(続き)クラスの再編成および変更(続き)クラスの再編成および変更(続き)クラスの再編成および変更(続き)

V1 V2

XDK for Java: 仕様および早見表 C-11

Page 306: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

XML Parser for Javaのリリース履歴

XML Parser for Javaのリリース履歴のリリース履歴のリリース履歴のリリース履歴表 C-4に、XML Parser for Javaのリリース履歴をリストします。

表表表表 C-4 XML Parser for Java V2: リリース履歴リリース履歴リリース履歴リリース履歴

リリースリリースリリースリリース 説明説明説明説明

Oracle XML Parser

2.0.2.?

Parserクラスの新しい API:

� reset(): 内部 DOMデータ構造をリセットします。

XMLDocumentクラスの新しい API:

� print(PrintDriver): 出力機能をカスタマイズします。

新しいインタフェース :

� PrintDriver: 出力のカスタマイズ用のインタフェースです。

� XMLPrintDriverクラス : PrintDriverのデフォルトの実装です。

2.0.2.? 変更 :

新しい組込み拡張要素 :

� ora:output(xmlns:ora=http://www.oracle.com/XSL/Transform/java)

この要素は、xsl:outputのような最上位の要素として使用されます(すべての属性を xsl:outputで受け入れ、同様の機能を持ちます)。識別子として使用される追加の属性「name」も含みます。ora:outputがテンプレートで使用される場合、2つの属性「use」および「href」しか含めることができません。「use」属性は使用する最上位の ora:outputを指定し、「href」属性は出力 URLを指定します。

新しい組込み拡張関数 :

� ora:node-set(xmlns:ora=http://www.oracle.com/XSL/Transform/java)

ora:node-set機能は、結果ツリーのフラグメントをノード・セットに変換します。

2.0.2.7.0 変更 :

� XMLドキュメントを解析する新しいコマンドライン・インタフェースが、binディレクトリに追加されています。詳細は、bin/readme.htmlを参照してください。

� デバッグのサポートが、XSLT処理に追加されています。デバッグ・モードでは、エラー /警告に、システム識別子、行番号および列番号が含まれます。DOMParser.setDebugMode(boolean)または Javaシステム・プロパティ「oracle.xml.parser.debugmode」を使用して、デバッグ・モードを設定できます。

C-12 Oracle8iアプリケーション開発者ガイド - XML Vol.2

Page 307: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

XML Parser for Javaのリリース履歴

2.0.2.7.0/... DOMParserクラスの新しい API:

� setDebugMode(boolean flag)

XMLDocumentクラスの新しい API:

� setDoctype(String rootname, String sysid, String pubid): XMLドキュメントに DOCTYPE宣言を追加します。

2.0.2.6 変更 :

� XSLT/XPATH October RECに準拠しています。

XSLStylesheetクラスの新しい API:

� removeParam(String param)

� resetParams()

2.0.2.5 変更 :

� XSLT/XPATH October PRに準拠しています。

� 国際化されたエラー・メッセージのサポートが追加されています。setLocale(java.util.Locale)ファンクションを使用して、XSLProcessor、SAXParserおよび DOMParserでロケール設定を行うことができます。次のロケールがサポートされています。

国国国国 言語言語言語言語 国コード国コード国コード国コード 言語コード言語コード言語コード言語コード

アルゼンチン スペイン語 AR es

ブラジル ブラジル系ポルトガル語 BR pt

中国 中国語 CN zh

チェコ共和国 チェコ語 CZ cs

デンマーク デンマーク語 DK da

フィンランド フィンランド語 FI fi

フランス フランス語 FR fr

ドイツ ドイツ語 DE de

ギリシャ ギリシャ語 GR el

ハンガリー ハンガリー語 HU hu

イスラエル ヘブライ語 IL iw

イタリア イタリア語 IT it

日本 日本語 JP ja

表表表表 C-4 XML Parser for Java V2: リリース履歴(続き)リリース履歴(続き)リリース履歴(続き)リリース履歴(続き)

リリースリリースリリースリリース 説明説明説明説明

XDK for Java: 仕様および早見表 C-13

Page 308: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

XML Parser for Javaのリリース履歴

国国国国 言語言語言語言語 国コード国コード国コード国コード 言語コード言語コード言語コード言語コード

韓国 韓国語 KR ko

ノルウェー ノルウェー語 NO no

ポーランド ポーランド語 PL pl

ポルトガル ポルトガル語 PT pt

ルーマニア ルーマニア語 RO ro

ロシア ロシア語 RU ru

スロバキア スロバキア語 SK sk

スペイン カタロニア語 ES ca

スペイン スペイン語 ES es

スウェーデン スウェーデン語 SE sv

台湾 中国語 TW zh

オランダ オランダ語 NL nl

トルコ トルコ語 TR tr

アラブ首長国連邦 アラビア語 AE ar

アメリカ合衆国 英語 US en

XMLNodeクラスの新しい API:

� value-of(String pattern)

� selectNodes(String pattern)

� selectSingleNode(String pattern)

� selectSingleNode(String pattern, NSResolver ns)

XSLStylesheetクラスの新しい API:

� setParam(String param, String value)

2.0.2.4.0 XSL URIの定数は、http://www.w3.org/1999/XSL/Transformを参照してください。

拡張関数の名前空間の参照は、http://www.oracle.com/oracle.xml.parser/xsl/java/classnameからhttp://www.oracle.com/XSL/Transform/java/classnameに変更されています。

2.0.2.3.0 拡張関数のサポートが追加され、XSL Processorのユーザーが XSL式からすべての Javaメソッドをコールできます。拡張機能の詳細は、extfunc.htmlを参照してください。

表表表表 C-4 XML Parser for Java V2: リリース履歴(続き)リリース履歴(続き)リリース履歴(続き)リリース履歴(続き)

リリースリリースリリースリリース 説明説明説明説明

C-14 Oracle8iアプリケーション開発者ガイド - XML Vol.2

Page 309: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

XML Parser for Javaのリリース履歴

2.0.2.2.0 xsl:output要素をサポートする xsl:outputクラスの新しい API:

� processXSL(XSLStylesheet xsl, XMLDocument xml, OutputStream out)

� processXSL(XSLStylesheet xsl, XMLDocument xml, PrintWriter pw)

� processXSL(XSLStylesheet xsl, XMLDocumentFragment xml, OutputStream out)

� processXSL(XSLStylesheet xsl, XMLDocumentFragment xml, PrintWriter pw)

2.0.2.1.0 変更 :

� Bug#992758: 無効な文字検出におけるバグが修正されています。

� Bug#995394: IDの前方参照におけるバグが修正されています。

� XPathのブール式および数式の解析におけるバグが修正されています。

� 空のカウント属性を持つ XSL: Numberにおけるバグが修正されています。

これは V2の最初のパッチ・リリースです。

2.0.2.0.0 変更 :

XSLT/XPATH August WDに準拠しています。

注意注意注意注意 : April99 XSLTドラフトと August99 XSLT/XPathドラフトの間ではいくつかの変更があり、これらの変更は XSL Processorに実装されています。XSL Processorは、式およびパターンに対する XPath構文を受け入れるように変更されています。スタイルシートをこのリリースで使用する前に、スタイルシートをAugust XSLT/XPathドラフトに準拠するように変更する必要があります。

Aprilと Augustのドラフトの違いは次のとおりです。

� スタイルシート内の式は、XPathの式と一致する必要があります。

� XSL名前空間の属性名および要素名のいくつかは、変更されています。

� いくつかの新しいファンクションが、XPath CORE関数ライブラリに追加されています。

詳細は、August XSLT/XPathドラフトを参照してください。

これは V2の最初のリリースです。

表表表表 C-4 XML Parser for Java V2: リリース履歴(続き)リリース履歴(続き)リリース履歴(続き)リリース履歴(続き)

リリースリリースリリースリリース 説明説明説明説明

XDK for Java: 仕様および早見表 C-15

Page 310: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

XML Parser for Javaのリリース履歴

変更 :

スクリプトで使用でき、複数のスレッドを指定できる「oraxsl」のコマンドライン・バージョンが、binディレクトリに追加されていることに注意してください。

Java XML Parser V1と共存できるように、ファイル名「xmlparser.jar」は「xmlparserv2.jar」に変更されていることに注意してください。

次のバグが修正されています。

� #972862: 複数のファイルに対して DTDが毎回ロードされるのではなく、キャッシュされる場合の DOM例外です。

� #968640: 現在は、IANA以外のキャラクタ・セットのエンコーディング名がサポートされています。

� #929682: 現在は、XSLTのコマンドライン・バージョンがバンドルされています(binディレクトリを参照)。

� #978320: CloneNode()メソッドを使用して、クローン・ドキュメントにノードを追加するエラーです。

� 属性検証 /setDTD/parseDTDに関する問題

レクサーが改善されています。JDK 1.6では、lexical analyzer内の変更によって、XML Parserの全体的なパフォーマンスが向上しています。

新しいインタフェース XMLTokenが追加されています。アプリケーションはインタフェース・ハンドルを登録でき、インタフェース・コールバック・メソッドtoken()は、XML Parserが登録し検出した XMLトークンを受け取ります。XMLトークンは、インタフェース定数として定義されます。トークンは次のとおりです。

STagName

EmptyElemTag

STag

ETag

ETagName

Attribute

AttName

AttValue

Reference

Comment

CharData

CDSect

表表表表 C-4 XML Parser for Java V2: リリース履歴(続き)リリース履歴(続き)リリース履歴(続き)リリース履歴(続き)

リリースリリースリリースリリース 説明説明説明説明

C-16 Oracle8iアプリケーション開発者ガイド - XML Vol.2

Page 311: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

XML Parser for Javaのリリース履歴

PI

PITarge

XMLDecl

TextDecl

DTDName

AttListDecl

elementdecl

ElemDeclName

EntityDecl

EntityDeclName

EntityValue

NotationDecl

ExternalID

前述のトークンは、W3Cの XML仕様の構文変数に対応します。

次のクラスの新しい API:

1. oracle.xml.parser

- setTokenHandler (XMLToken handler)

XMLtokenインタフェース・ハンドラを設定します。

- setToken (int token, boolean val)

XMLトークンのオン /オフを登録します。

表表表表 C-4 XML Parser for Java V2: リリース履歴(続き)リリース履歴(続き)リリース履歴(続き)リリース履歴(続き)

リリースリリースリリースリリース 説明説明説明説明

XDK for Java: 仕様および早見表 C-17

Page 312: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

XML Parser for Javaのリリース履歴

2.0.0.1.0 変更 :

次のバグが修正されています。

� #920536: XSLTを介して要素属性へのアクセスできません。

� #898423: DTDでの ElementDeclです。

� #774774: XSLパターン一致を使用して DOMが拡張されています。

� #863890: SAX IOExceptionが発生していません。

次の新しいインタフェースの API:

1. oracle.xml.parser.v2.NSResolver

- resolveNamespacePrefix

与えられた名前空間の接頭辞の有効範囲内で、名前空間の定義を検出します。

- selectNodes

与えられたパターンに一致するツリーからノードを選択します。クライアントは、NSResolverを実装して、パターン内の名前空間の接頭辞を解決できます。

2. oracle.xml.parser.v2.ElementDecl

- getParseTree

コンテンツ・モデルの解析ツリーのルート・ノードを戻します。その後この解析ツリーは、getFirstChild()および getLastChild()を使用して、ノードごとに検索されます。ノード・タイプには、PLUS、COMMA、ASTERISK、ELEMENTおよび QMARKがあります。

2.0.0.0.0 Oracle XML Parser V2は初期のベータ・リリース版で、Javaで作成されています。Oracle XML Parser V1のアーキテクチャが改善され、XMLドキュメントのサイズにかかわらずパフォーマンスが向上しています。XSLT Processorを統合しているため、スタイルシートに従って XMLドキュメントをフォーマットできます。

注意注意注意注意 : いくつかのパッケージ名およびエラー・メッセージは、Oracle XML Parser V1のものとは異なります。次のページ、およびサンプル・ディレクトリ内にある v2changes.txtおよび .diffファイル(差分ファイル)を参照してください。

XML Parser for Java V2では、XSLT Processorが組み込まれたことの他に、V1から再構築されています。その結果、特に Namespaceをサポートするクラス名が大幅に変更されています。変更の概要を、次に示します。

表表表表 C-4 XML Parser for Java V2: リリース履歴(続き)リリース履歴(続き)リリース履歴(続き)リリース履歴(続き)

リリースリリースリリースリリース 説明説明説明説明

C-18 Oracle8iアプリケーション開発者ガイド - XML Vol.2

Page 313: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

XML Parser for Javaのリリース履歴

注意注意注意注意 : この概要は、XML Parser V1.0.14(V1)および V2.0.00(V2)に基づいています。

新しいクラス構造

oracle.xml.parserパッケージは、oracle.xml.parser.v2に改名されています。新しいインタフェースは次のとおりです。

� NSName

� XMLDocumentHandler

� 次のインタフェースは削除されています。

� NSAttr

� NSAttributeList

� NSDocumentHandler

� NSElement

� V2の新しいクラスは次のとおりです。

� DOMParser

� DefaultXMLDocumentHandler

� SAXAttrList

� SAXParser

� XSLProcessor

� XSLStylesheet

� XSLException

表表表表 C-4 XML Parser for Java V2: リリース履歴(続き)リリース履歴(続き)リリース履歴(続き)リリース履歴(続き)

リリースリリースリリースリリース 説明説明説明説明

XDK for Java: 仕様および早見表 C-19

Page 314: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

XDK for Java: XML Class Generator for Java

XDK for Java: XML Class Generator for Java

XML Class Generator for Javaのインストールのインストールのインストールのインストール次の項では、Oracle XML Class Generator for Javaのインストールについて説明します。

XML Class Generator for Java: Windows NT上でのインストール上でのインストール上でのインストール上でのインストールWindows NT上で Oracle XML Class Generatorをインストールするには、次の手順に従います。

1. JDK-1.1.x.以上および ZIP形式ファイルの解凍ユーティリティ(Winzipなど)をインストールします。

2. ZIP形式の Oracle XML Class Generator for Javaをダウンロードします。

3. ディレクトリに xmlclassgenV1_0_0.zipを解凍します。次に例を示します。

C:¥[ディレクトリ名]>unzip xmlclassgenV1_0_0.zip

4. 解凍すると、次のファイルおよびディレクトリが取得されます。

� license.html - ライセンス契約のコピー

� readme.html - リリース・ノートおよびインストレーション・ノート

� doc¥ - ドキュメントのディレクトリ

� lib¥ - classgenクラス・ファイルのディレクトリ

� sample¥ - サンプル・コード・ファイル

XML Class Generator for Java: UNIX上でのインストール上でのインストール上でのインストール上でのインストールUNIX上で Oracle XML Class Generator for Java をインストールするには、次の手順に従います。

1. JDK-1.1.x以上および GNU gzipをインストールします。

2. .tar.gz形式の Oracle XML Class Generator for Javaをダウンロードします。

3. ディレクトリに配布パッケージを解凍します。次に例を示します。

#gzip -dc xmlclassgenV1_0_0.tar.gz | tar xvf -

4. 解凍すると、次のファイルおよびディレクトリが取得されます。

� license.html - ライセンス契約のコピー

� readme.html - リリース・ノートおよびインストレーション・ノート

� doc/ - ドキュメントのディレクトリ

C-20 Oracle8iアプリケーション開発者ガイド - XML Vol.2

Page 315: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

XDK for Java: XML Class Generator for Java

� lib/ - classgenクラス・ファイルのディレクトリ

� sample/ - サンプル・コード・ファイル

XDK for Java: 仕様および早見表 C-21

Page 316: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

XML Class Generator for Javaの早見表

XML Class Generator for Javaの早見表の早見表の早見表の早見表表 C-5に、主な XML Parser for Javaの APIおよび最上位クラスについてそれぞれ簡単に説明します。

表表表表 C-5 XML Class Generator for Java: APIおよびクラスおよびクラスおよびクラスおよびクラス

クラスクラスクラスクラス 説明説明説明説明

クラスクラスクラスクラス

CGDocument Class Generatorによって生成されたクラスのベース・ドキュメント・クラスとして機能します。

CGNode Class Generatorによって生成されたノードのベース・クラスとして機能します。

ClassGenerator クラスを生成するために Class Generatorによって使用されます。

例外例外例外例外

InvalidContentException dtdcompilerクラスによって発生する InvalidContentExceptionの定義です。

表表表表 C-6 XML Class Generator for Java: デフォルトのコンストラクタデフォルトのコンストラクタデフォルトのコンストラクタデフォルトのコンストラクタ

ClassGenerator() ClassGeneratorのデフォルトのコンストラクタのデフォルトのコンストラクタのデフォルトのコンストラクタのデフォルトのコンストラクタ

generate(DTD, String)クラス doctype要素をルートとして DTDを全検索し、Javaクラスを生成します。

setGenerateComments(boolean) Javaドキュメント・コメントを生成するかどうかを決定します。デフォルトは TRUEです。

setJavaPackage(String) 生成されたクラスのパッケージを設定します。デフォルトはパッケージなしです。

setOutputDirectory(String) 出力ディレクトリを設定します。デフォルトは現在のディレクトリです。

setSerializationMode(boolean) DTDをシリアル化されたオブジェクトとして保存するか、またはテキスト・ファイルとして保存するかを決定します。

setValidationMode(boolean) 生成されたクラスが、構成中の XMLドキュメントを検証する必要があるかどうかを決定します。デフォルトはTRUEです。

C-22 Oracle8iアプリケーション開発者ガイド - XML Vol.2

Page 317: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

XML Class Generator for Javaの早見表

CGDocument(String, DTD)クラス DTDのルート要素のコンストラクタです。パブリック抽象クラス CGDocumentは、CGNodeを拡張します。DTDコンパイラによって生成されたクラスのベース・ドキュメント・クラスとして機能します。

print(OutputStream) 作成した XMLドキュメントを出力します。

print(OutputStream, String) 作成した XMLドキュメントを出力します。

public abstract class CGNode Objectクラスを拡張します。XML Class Generatorによって生成されたノードのベース・クラスとして機能します。

CGNode(String) DOMツリーの要素に対するコンストラクタです。

addData(String) 要素に PCDATAを追加します。

addNode(CGNode) 要素にノードを子として追加します。

getCGDocument() ベース・ドキュメント(ルート要素)を取得します。

getDTDNode() ベース・ドキュメントから静的 DTDを取得します。

setAttribute(String, String) 属性値を設定します。

setDocument(CGDocument) ベース・ドキュメント(ルート要素)を設定します。

storeID(String, String) IDREF値を後で検証できるように、ID識別子の値を格納します。

storeIDREF(String, String) 対応する IDが定義されたかどうかを後で検証できるように、ID識別子の値を格納します。

validateContent() DTDで指定されたコンテンツ・モデルのとおりに、要素のコンテンツが有効かどうか確認します。

validEntity(String) ENTITY識別子が有効かどうかを確認します。

validID(String) ID識別子が有効かどうかを確認します。

validNMTOKEN(String) NMTOKEN識別子が有効かどうかを確認します。

表表表表 C-6 XML Class Generator for Java: デフォルトのコンストラクタ(続き)デフォルトのコンストラクタ(続き)デフォルトのコンストラクタ(続き)デフォルトのコンストラクタ(続き)

ClassGenerator() ClassGeneratorのデフォルトのコンストラクタのデフォルトのコンストラクタのデフォルトのコンストラクタのデフォルトのコンストラクタ

XDK for Java: 仕様および早見表 C-23

Page 318: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

XDK for Java: Transviewer Beanの早見表

XDK for Java: Transviewer Beanの早見表の早見表の早見表の早見表表 C-7に、XDK for Javaの Transviewer Beanの主な APIおよび最上位クラスをそれぞれ簡単に説明しています。

表表表表 C-7 XDK for Java: Transviewer Beanのののの APIおよびクラスおよびクラスおよびクラスおよびクラス

クラスのサマリークラスのサマリークラスのサマリークラスのサマリー 説明説明説明説明

インタフェースインタフェースインタフェースインタフェース

DOMBuilderErrorListener 解析中にエラーが検出された場合に通知を受け取るためには、このインタフェースを実装する必要があります。

DOMBuilderListener 非同期解析中のイベントに関する通知を受け取るためには、このインタフェースを実装する必要があります。

XSLTransformerErrorListener 非同期変換中のエラー・イベントに関する通知を受け取るためには、このインタフェースを実装する必要があります。

XSLTransformerListener 非同期変換中のイベントに関する通知を受け取るためには、このインタフェースを実装する必要があります。

クラスクラスクラスクラス

DOMBuilder W3C勧告に従って、XML 1.0パーサーを実装しています。

DOMBuilderBeanInfo

DOMBuilderErrorEvent 解析例外の発生時に送信されるエラー・イベントを定義します。

DOMBuilderEvent DOMBuilderが、すべての登録リスナーに解析イベントについて通知するために使用するイベント・オブジェクトです。

ResourceManager 固定数の論理リソースへのアクセスを維持する単純セマフォです。

XSLTransformer バックグラウンド・スレッドで XSL変換を適用します。

XSLTransformerBeanInfo

XSLTransformerErrorEvent XSLTransformerが、すべての登録リスナーに変換エラー・イベントについて通知するために使用するエラー・イベント・オブジェクトです。

XSLTransformerEvent XSLTransformerが、すべての登録リスナーに変換イベントについて通知するために使用するイベント・オブジェクトです。

C-24 Oracle8iアプリケーション開発者ガイド - XML Vol.2

Page 319: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

XDK for Java: Transviewer Beanの早見表

表表表表 C-8 async.XSLTransformer API

メンバーのサマリーメンバーのサマリーメンバーのサマリーメンバーのサマリー

コンストラクタコンストラクタコンストラクタコンストラクタ

XSLTransformer() XSLTransformerコンストラクタです。

XSLTransformer(int) XSLTransformerコンストラクタです。

メソッドメソッドメソッドメソッド

addXSLTransformerErrorListener(XSLTransformerErrorListener)

エラー・イベント・リスナーを追加します。

addXSLTransformerListener(XSLTransformerListener)

リスナーを追加します。

一意の XSLTransformerの IDを戻します。

getResult() 結果ドキュメントのドキュメント・フラグメントを戻します。

processXSL(XSLStylesheet, InputStream, URL)

バックグラウンドで XSL Transformationを開始します。

processXSL(XSLStylesheet, Reader, URL)

バックグラウンドで XSL Transformationを開始します。

processXSL(XSLStylesheet, URL, URL)

バックグラウンドで XSL Transformationを開始します。

バックグラウンドで XSL Transformationを開始します。

processXSL(XSLStylesheet, XMLDocument, OutputStream)

バックグラウンドで XSL Transformationを開始します。

removeDOMTransformerErrorListener(XSLTransformerErrorListener)

エラー・イベント・リスナーを削除します。

removeXSLTransformerListener(XSLTransformerListener)

リスナーを削除します。

run()

XSL Processorが使用するエラー・ストリームを設定します。

showWarnings(boolean) XSL Processorが使用する showWarningsフラグを設定します。

XDK for Java: 仕様および早見表 C-25

Page 320: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

XDK for Java: XSQL Servlet

XDK for Java: XSQL Servlet

Oracle XSQL Servletのインストールのインストールのインストールのインストール

XSQL Servletのインストールのインストールのインストールのインストール

ダウンロードしたファイルの解凍ダウンロードしたファイルの解凍ダウンロードしたファイルの解凍ダウンロードしたファイルの解凍XSQL Servlet配布パッケージの内容を解凍するには、次の手順に従います。

1. .¥xsqlディレクトリおよびそのサブディレクトリを格納するディレクトリを選択(C:¥など)します。

2. ディレクトリを C:¥に変更し、ダウンロードした XSQLのアーカイブ・ファイルを解凍します。次に例を示します。

UNIXの場合 :

tar xvfz xsqlservlet_v0_9_9_1.tar.gz

Windows NTの場合 :

pkzip25 -extract -directories xsqlservlet_v0_9_9_1.zip

pkzip25コマンドライン・ツールまたはWinZip(ビジュアル・アーカイブ解凍ツール)を使用します。

Windows NT: Web-to-go Serverの使用の使用の使用の使用XSQL Servletには、Oracle Web-to-go Serverがバンドルされています。Oracle Web-to-go Serverは、XSQL Pagesを使用できるように事前構成されています。Oracle Web-to-go Serverはシングル・ユーザー・サーバーで、Servlet 2.1 APIをサポートし、モバイル・アプリケーションの配置および開発に使用されます。XSQL Pagesを実行する目的で他のサーブレット・エンジンの構成の詳細を調べる前に、Oracle Web-to-go Serverを使用してWindowsマシン上で XSQL Pagesを試行することをお薦めします。

次の手順に従うと、Windows NTのユーザーはすぐに XSQL Pagesを使用できます。

1. .¥xsqlディレクトリでスクリプト xsql-wtg.batを実行します。

2. http://localhost:7070/xsql/index.htmlをブラウズします。

注意注意注意注意 : Oracle Web-to-go Serverは、モバイル・アプリケーション用のOracleの開発および配置プラットフォームの一部です。Web-to-goの詳細は、http://www.oracle.com/mobileを参照してください。

C-26 Oracle8iアプリケーション開発者ガイド - XML Vol.2

Page 321: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

XDK for Java: XSQL Servlet

このスクリプトの起動時にエラーが発生する場合、xsql-wtg.batファイルを編集して、2つの環境変数 JAVAおよび XSQL_HOMEを、使用中のマシンに適切な値に設定します。

REM ---------------------------------------------- REM 変数JAVAを、Java実行可能ファイルのフルパスに設定 REM します。 REM ---------------------------------------------- set JAVA=J:¥java1.2¥jre¥bin¥java.exe set XSQL_HOME=C:¥xsql REM ---------------------------------------------- REM 変数XSQL_HOMEを、XSQL Servlet配布パッケージの REM インストール場所のフルパスに設定します。 REM ----------------------------------------------

編集後、前述の 2つの手順を繰り返します。

デモの実行時にデータベース接続エラーが発生する場合、次の項を参照して、XSQLConfig.xmlファイルのデータベース接続情報を正しく設定した後で、再度前述の手順を実行してください。

環境用のデータベース接続定義の設定環境用のデータベース接続定義の設定環境用のデータベース接続定義の設定環境用のデータベース接続定義の設定デモは、ローカル・マシン(Webサーバーを実行中のマシン)上で、データベースのSCOTTスキーマを使用するように設定されます。ローカル・データベースの実行中で、SCOTTアカウント(パスワードは TIGER)がある場合は、準備が完了しています。そうでない場合、.¥xsql¥lib¥XSQLConfig.xmlファイルを編集して、「username」、「password」および「dburl」に適切な値を設定し、「demo」接続に適切なドライバ値を設定する必要があります。

<?xml version="1.0" ?> <XSQLConfig> : <connectiondefs> <connection name="demo"> <username>scott</username> <password>tiger</password> <dburl>jdbc:oracle:thin:@localhost:1521:ORCL</dburl> <driver>oracle.jdbc.driver.OracleDriver</driver> </connection> <connection name="lite"> <username>system</username> <password>manager</password> <dburl>jdbc:Polite:POlite</dburl> <driver>oracle.lite.poljdbc.POLJDBCDriver</driver> </connection> </connectiondefs> : </XSQLConfig>

XDK for Java: 仕様および早見表 C-27

Page 322: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

XDK for Java: XSQL Servlet

UNIX: XSQL Page実行のためのサーブレット・エンジンの設定実行のためのサーブレット・エンジンの設定実行のためのサーブレット・エンジンの設定実行のためのサーブレット・エンジンの設定Webサーバーに XSQL Servletをインストールする必要がある UNIXユーザーを含むすべてのユーザーは、使用するWebサーバーに基づいて、次の手順を実行する必要があります。いずれの場合でも、3つの基本手順があります。

サーバー CLASSPATHに XSQLConfig.xmlが常駐するディレクトリ(デフォルトでは、./xsql/lib)の他に、XSQL Javaアーカイブのリストも含めます。

注意注意注意注意 : 便宜上、xsqlservlet_v0_9_9_1.tar.gzおよび xsqlservlet_v0_9_9_1.zip配布パッケージは、Oracle XSQL Pages独自の .jarアーカイブとともに、Oracle XML Parser for Java V2、Oracle XML SQL Utilities for Javaおよびリリース 8.1.6の JDBCドライバ用の .jarファイルを .\libサブディレクトリに含んでいます。

1. .xsqlファイルの拡張を、oracle.xml.xsql.XSQLServletサーブレット・クラスにマッピングします。

2. XSQLファイルを解凍したディレクトリに、仮想ディレクトリ /xsqlをマッピングします(オンライン・ヘルプおよびデモへのアクセス用)。

C-28 Oracle8iアプリケーション開発者ガイド - XML Vol.2

Page 323: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

XSQL Servletの仕様

XSQL Servletの仕様の仕様の仕様の仕様XSQL Servletの仕様は次のとおりです。

� 1つ以上の SQL問合せに基づいて、動的 XMLドキュメントを生成します。

� XSLTを使用して、サーバーまたはクライアント側の、結果として生成される XMLドキュメントを変換します(オプション)。

� W3Cの XML 1.0勧告をサポートします。

� DOMレベル 1.0 APIをサポートします。

� W3Cの XSLT最終ワーキング・ドラフトをサポートします。

� W3Cの XML Namespace勧告をサポートします。

キャラクタ・セットのサポートキャラクタ・セットのサポートキャラクタ・セットのサポートキャラクタ・セットのサポートXSQL Servletは、次のキャラクタ・セット・エンコーディングをサポートします。

� BIG

� EBCDIC-CP-*

� EUC-JP

� EUC-KR

� GB2312

� ISO-2022-JP

� ISO-2022-KR

� ISO-8859-1~ ISO-8859-9

� ISO-10646-UCS-2

� ISO-10646-UCS-4

� KOI8-R

� Shift_JIS

� US-ASCII

� UTF-8

� UTF-16

XDK for Java: 仕様および早見表 C-29

Page 324: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

XDK for Java: XSQL Servletの早見表

XDK for Java: XSQL Servletの早見表の早見表の早見表の早見表表 C-9および表 C-10に、XSQL Servletの APIおよび最上位クラスをそれぞれ簡単に説明します。

表表表表 C-9 XSQL Servletクラスクラスクラスクラス

クラスのサマリークラスのサマリークラスのサマリークラスのサマリー 説明説明説明説明

インタフェースインタフェースインタフェースインタフェース

XSQLActionHandler すべての XSQL Action Element Handlerが実装する必要があるインタフェースです。

XSQLPageRequest XSQL Pagesに対する要求を表すインタフェースです。

クラスクラスクラスクラス

Res

XSQLActionHandlerImpl ユーザー独自のカスタム・ハンドラを作成するために拡張可能なXSQLActionHandlerの基本実装です。

XSQLCommandLine XSQLページを処理するコマンドライン・ユーティリティです。

XSQLDiagnostic

XSQLHttpUtil

XSQLPageRequestImpl 新しい種類のページ要求実装の導出に使用可能な、XSQLPageRequestインタフェースの基本的な実装です。

XSQLParserHelper 一般的な XML解析ルーチンです。

XSQLRequest XSQLページの要求をプログラム処理します。

XSQLServlet XSQL Pagesに対して HTTPの GETメソッドおよび POSTメソッドを使用可能にするサーブレットです。

XSQLServletPageRequest サーブレットベースの XSQLページ要求のためのXSQLPageRequestの実装です。

XSQLStylesheetProcessor XSLTスタイルシート処理エンジンです。

XSQLUtil

C-30 Oracle8iアプリケーション開発者ガイド - XML Vol.2

Page 325: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

XDK for Java: XSQL Servletの早見表

表表表表 C-10 XSQL Servlet: XSQLPageRequest()クラスクラスクラスクラス

メソッドメソッドメソッドメソッド 説明説明説明説明

createNestedRequest(URL, Dictionary) ネストした要求のインスタンスを戻します。

getConnectionName() この要求に使用されている接続の名前を戻します。接続が設定または使用されてない場合、NULLになる場合があります。

getErrorWriter() この要求を処理するエラーを出力するためのPrintWriterを戻します。

getJDBCConnection() この要求に使用されている JDBC接続を取得します(NULLになる可能性があります)。

getPageEncoding() この要求に対応付けられたソース XSQLページのエンコーディングを戻します。

getParameter(String) 要求されたパラメータ値を戻します。

getPostedDocument() この要求に対してポストされた XMLの内容を、XMLドキュメントとして戻します。

getRequestParamsAsXMLDocument() 要求パラメータの内容を、XMLドキュメントとして戻します。

getRequestType() 作成しているページ要求のタイプを識別する文字列を戻します。

getSourceDocumentURI() 要求されたドキュメントの URIの文字列表現を戻します。

getStylesheetParameter(String) スタイルシート・パラメータを名前で取得します。

getStylesheetParameters() スタイルシート・パラメータの名前の列挙を取得します。

getStylesheetURI() 結果処理に使用されるスタイルシートの URIを戻します。

getUserAgent() 要求しているプログラムの文字列識別子を戻します。

getWriter() ページ要求の結果の出力に使用されるPrintWriterを戻します。

getXSQLConnection() この要求に使用されている XSQLConnectionオブジェクトを取得します。NULLになる場合があります。

isIncludedRequest() この要求が別の要求に含まれている場合、TRUEを戻します。

XDK for Java: 仕様および早見表 C-31

Page 326: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

XDK for Java: XSQL Servletの早見表

isOracleDriver() 現行の接続が Oracle JDBC Driverを使用している場合、TRUEを戻します。

printedErrorHeader() Error Headerが出力されたかどうかを戻します。

requestProcessed() ページ要求が要求終了処理を実行できるようにします。

setConnectionName(String) この要求に使用する接続名を設定します。

setContentType(String) 結果ページの Content Typeを設定します。

setIncludingRequest(XSQLPageRequest) この要求に対して Including Page Requestオブジェクトを設定します。

setPageEncoding(String) この要求に対応付けられたソース XSQLページのエンコーディングを設定します。

setPageParam(String, String) 動的ページ・パラメータ値を設定します。

setPostedDocument(Document) ポストされたドキュメントのプログラムを設定できるようにします。

setPrintedErrorHeader(boolean) Error Headerが出力されたかどうかを設定します。

setStylesheetParameter(String, String) 対応付けられたスタイルシートへ渡されるパラメータ値を設定します。

setStylesheetURI(String) 結果処理に使用されるスタイルシートの URIを設定します。

translateURL(String) この要求のベース URIに対して相対 URIに変換された絶対 URLを表す文字列を戻します。

useConnectionPooling() この要求に対して接続プーリングが必要とされる場合、TRUEを戻します。

useHTMLErrors() この要求に対して HTML形式のエラー・メッセージが必要とされる場合、TRUEを戻します。

表表表表 C-10 XSQL Servlet: XSQLPageRequest()クラス(続き)クラス(続き)クラス(続き)クラス(続き)

メソッドメソッドメソッドメソッド 説明説明説明説明

C-32 Oracle8iアプリケーション開発者ガイド - XML Vol.2

Page 327: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

XDK for PL/SQL: 仕様および早

D

XDK for PL/SQL: 仕様および早見表仕様および早見表仕様および早見表仕様および早見表

この付録では、Oracle XDK for PL/SQLの仕様および構文の早見表を示します。この付録の内容は次のとおりです。

� XML Parser for PL/SQL

� XML Parser for PL/SQLの仕様

� XML Parser for PL/SQL: Parser() API

� XML Parser for PL/SQL: XSLT Processor API

� XML Parser for PL/SQL: W3C DOM API - 型

� XML Parser for PL/SQL: W3C DOM API - ノード・メソッド、ノード型および DOMインタフェース型

見表 D-1

Page 328: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

XML Parser for PL/SQL

XML Parser for PL/SQLXMLドキュメントは、エンティティというデータの格納単位で構成され、各エンティティには解析対象または解析対象外のデータが含まれます。解析対象データは文字で構成され、中にはドキュメント内の文字データを形成したり、タグを形成するものもあります。タグ付けは、ドキュメントのデータの格納レイアウトおよび論理構造の記述をエンコーディングします。XMLは、データ格納レイアウトおよび論理構造を制約するメカニズムを提供します。

XMLドキュメントの読込み、およびそのドキュメントのコンテンツと構造へのアクセスには、XML Processorというソフトウェア・モジュールが使用されます。XML Processorは、アプリケーションという他のモジュールのかわりに作業を行います。

Oracle XML Parserの機能の機能の機能の機能XML Parser for PL/SQLは、アプリケーションで処理できるように、XMLドキュメント(またはスタンドアロンの DTD)を解析します。ライブラリおよびコマンドライン・バージョンは、次の標準および機能をサポートしています。

� DOMサポートは、W3Cの DOM 1.0勧告に準拠しています。これらの APIによってアプリケーションは、XMLドキュメントをツリー構造としてメモリー内でアクセスし操作できます。このインタフェースは、エディタなどのアプリケーションで使用されます。

� SAX(Simple API for XML)のサポートは、SAX 1.0仕様に準拠しています。これらのAPIによってアプリケーションは、イベント駆動モデルを使用して XMLドキュメントを処理できます。

� XML Namespace 1.0もサポートされています。これによって名前の競合が回避され、再利用性が向上し、アプリケーション統合が容易になります。

� Oracle8iおよび Internet Application Server(iAS)で実行できます。

その他にも次の機能があります。

� 検証モードおよび非検証モード

� 致命的エラーが発生するまでの組込みエラー・リカバリ

� Oracle XSLTransformation Processorによるドキュメント作成のための DOM拡張 API

Oracle XML Parser V2には、XSLスタイルシートを使用して XMLデータを変換するためのXSLT Processorが統合されています。XSLT Processorを使用すると、XMLドキュメントをXML、HTMLまたはほぼすべてのテキストベース形式に変換できます。XSLT Processorは、次の標準および機能をサポートします。

� W3Cの XSL Transform 1.0勧告提案に準拠しています。

� W3Cの XPath 1.0勧告提案に準拠しています。

� XML Parserに統合され、パフォーマンスおよび拡張性を向上します。

� Javaおよび PL/SQL用のライブラリおよびコマンドライン・インタフェースで使用可能です。

D-2 Oracle8iアプリケーション開発者ガイド - XML Vol.2

Page 329: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

XML Parser for PL/SQL

XML NamespaceのサポートのサポートのサポートのサポートXML Parser for Javaは XML Namespaceもサポートしています。XML Namespaceは、XMLドキュメント内にある要素型(タグ)または属性間の名前の競合を解決または回避するメカニズムです。このメカニズムは、汎用の名前空間要素型および属性名を提供します。このマニュアルでは、これらの一部のみを説明しています。タグは、<oracle:EMP xmlns:oracle="http://www.oracle.com/xml"/>などのユニフォーム・リソース識別子(URI)で修飾されています。たとえば、名前空間を使用して、オラクル社の<EMP>データ要素を、他社の <EMP>データ要素の定義と区別して識別できます。これによってアプリケーションは、処理する要素および属性をより簡単に識別できます。XML Parser for Javaは、汎用要素型と属性名、およびローカルの非修飾要素型と属性名を識別および解析できるようにすることで、名前空間をサポートします。

検証モードおよび非検証モードのサポート検証モードおよび非検証モードのサポート検証モードおよび非検証モードのサポート検証モードおよび非検証モードのサポートXML Parser for Javaは、検証モードまたは非検証モードで XMLを解析できます。非検証モードでは、XML Parser for Javaは、XMLが整形式であることを確認し、データを、DOM APIが操作できるオブジェクトのツリーに解析します。検証モードでは、XML Parser for Javaは、XMLが整形式であることを確認し、その XMLデータを DTD(存在する場合)に対して検証します。検証には、属性名および要素タグが正当であるかどうか、ネストした要素が適切な場所にあるかどうかなどの確認も含まれます。

サンプル・コードサンプル・コードサンプル・コードサンプル・コードサンプル・コードおよび XML Parserの使用方法については、第 20章「XML Parser for PL/SQLの使用」を参照してください。

XML Parser for PL/SQLのディレクトリ構造のディレクトリ構造のディレクトリ構造のディレクトリ構造XML Parser for PL/SQLの $ORACLE_HOME/xdk/plsql/parser内のディレクトリ構造は、次のとおりです。

� Windows NT

� license.html - ライセンス契約のコピー

� readme.html - リリース・ノートおよびインストレーション・ノート

� doc¥ - Parser APIのディレクトリ

� lib¥ - Parser の SQLおよびクラス・ファイルのディレクトリ

� sample¥ - サンプル・コード・ファイル

� UNIX

� license.html - ライセンス契約のコピー

� readme.html - リリース・ノートおよびインストレーション・ノート

� doc/ - Parser APIのディレクトリ

� lib/ - Parser の SQLおよびクラス・ファイルのディレクトリ

� sample/ - サンプル・コード・ファイル

XDK for PL/SQL: 仕様および早見表 D-3

Page 330: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

XML Parser for PL/SQL

DOM APIおよびおよびおよびおよび SAX APIXML APIは、通常、イベントベースおよびツリーベースの 2つのカテゴリに分類されます。SAXなどのイベントベース APIは、コールバックを使用してアプリケーションに解析イベントを通知します。アプリケーションは、カスタマイズしたイベント・ハンドラによってこれらのイベントを処理します。イベントには、要素および文字の開始および終了が含まれます。イベントベース APIは、ツリーベース APIとは異なり、通常 XMLドキュメントのメモリー内ツリー表現を構築しません。したがって、SAXは、XMLツリーの操作が必要でない検索操作などのアプリケーションに有効です。たとえば、次の XMLドキュメントを考えてみます。

<?xml version="1.0"?> <EMPLIST> <EMP> <ENAME>MARTIN</ENAME> </EMP> <EMP> <ENAME>SCOTT</ENAME> </EMP> </EMPLIST>

この XMLドキュメントは、次のような一連の線形イベントになります。

start documentstart element: EMPLISTstart element: EMPstart element: ENAMEcharacters: MARTINend element: EMPstart element: EMPstart element: ENAMEcharacters: SCOTTend element: EMP end element: EMPLISTend document

DOMなどのツリーベースの APIは、XMLドキュメントのメモリー内にツリーを構築します。この APIは、アプリケーションがツリーを操作および処理するためのクラスおよびメソッドを提供します。通常、DOMインタフェースは、要素の再順序付け、要素および属性の追加および削除、要素の改名などの XMLツリーの構造的な操作に最も有効です。

D-4 Oracle8iアプリケーション開発者ガイド - XML Vol.2

Page 331: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

XML Parser for PL/SQLの仕様

XML Parser for PL/SQLの仕様の仕様の仕様の仕様XML Parser for PL/SQLの仕様は次のとおりです。

� 検証および非検証モードをサポートします。

� 致命的エラーが発生するまで組込みエラー・リカバリを行います。

� W3Cの XML 1.0勧告をサポートします。

� W3Cの XSLT最終ワーキング・ドラフトをサポートします。

XML Processor(または Parser)の PL/SQL実装は、W3Cの XML仕様(REC-xml-19980210改訂)に準拠し、アプリケーションに提供する必要がある XMLデータおよび情報の読込み方法の点で、XML Processorに必要な動作を含みます。

XML Parser for PL/SQL: デフォルト動作デフォルト動作デフォルト動作デフォルト動作XML Parser for PL/SQLのデフォルト動作は、次のとおりです。

� DOM APIがアクセスできる解析ツリーが構築されます。

� DTDが検出された場合、XML Parser for PL/SQLは検証を行います。検出されない場合は、非検証パーサーになります。

� エラー・ログが指定されない限り、エラーは記録されません。ただし、解析が正常に実行されない場合、アプリケーション・エラーが発生します。

このマニュアルに記載されている型およびメソッドは、PL/SQLパッケージ xmlparserに付属しています。

� 統合された DOMレベル 1.0 API

キャラクタ・セット・エンコーディングのサポートキャラクタ・セット・エンコーディングのサポートキャラクタ・セット・エンコーディングのサポートキャラクタ・セット・エンコーディングのサポート次の Oracleデータベース・エンコーディングのドキュメントをサポートします。

� BIG 5

� EBCDIC-CP-*

� EUC-JP

� EUC-KR

� GB2312

� ISO-2022-JP

� ISO-2022-KR

� ISO-8859-1~ ISO-8859-9

� KOI8-R

XDK for PL/SQL: 仕様および早見表 D-5

Page 332: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

XML Parser for PL/SQLの仕様

� Shift_JIS

� US-ASCII

� UTF-8

デフォルトデフォルトデフォルトデフォルト : デフォルトでは、UTF-8がエンコーディングになります。Oracle8iがサポートする他の ASCIIベースまたは EBCDICベースのエンコーディングも使用できます。

要件要件要件要件Javaオプションが使用可能な Oracle8iデータベース

リリース固有の注意事項リリース固有の注意事項リリース固有の注意事項リリース固有の注意事項Oracle XML Parser for PL/SQLは Early Adopter Release版で、PL/SQLおよび Javaで作成されています。XMLドキュメントが整形式であるか、また妥当であるかどうか(オプション)を確認します。Oracle XML Parser for PL/SQLは、PL/SQLインタフェースでアクセス可能なオブジェクト・ツリーを構築します。

標準への準拠標準への準拠標準への準拠標準への準拠XML Parser for PL/SQLは、次の標準に準拠しています。

W3Cの XML 1.0勧告(http://www.w3.org/TR/1998/REC-xml-19980210を参照)

W3Cの DOMレベル 1 1.0勧告(http://www.w3.org/TR/REC-DOM-Level-1/を参照)

XML Parser for PL/SQLは現在、SAXおよび Namespaceをサポートしていません。将来のバージョンでサポートされる予定です。

エラー・リカバリエラー・リカバリエラー・リカバリエラー・リカバリOracle XML Parserは、エラー・リカバリも行います。ほとんどのエラーからのリカバリを行い、致命的なエラーが発生するまでは処理を継続します。

注意注意注意注意 : Windows版および UNIX版の内容は同じです。これらは、オペレーティング・システムの互換性およびユーザーにとっての便宜上、異なる形態でアーカイブされているのみです。

D-6 Oracle8iアプリケーション開発者ガイド - XML Vol.2

Page 333: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

XML Parser for PL/SQL: Parser() API

XML Parser for PL/SQL: Parser() API表 D-1に、XML Parser for PL/SQLの Parser() API関数を示します。

表表表表 D-1 XML Parser for PL/SQL: Parser() API

Parser()ファンクションファンクションファンクションファンクション 説明説明説明説明

parse(VARCHAR2) 指定した URL/ファイルに格納された XMLを解析し、構築された DOMドキュメントを戻します。

newParser 新しいパーサーのインスタンスを戻します。

parse(Parser, VARCHAR2) 指定した URL/ファイルに格納された XMLを解析します。

parseBuffer(Parser, VARCHAR2) 指定したバッファに格納された XMLを解析します。

parseClob(Parser, CLOB) 指定した CLOBに格納された XMLを解析します。

parseDTD(Parser, VARCHAR2, VARCHAR2) 指定した URL/ファイルに格納された XMLを解析します。

parseDTDBuffer(Parser, VARCHAR2, VARCHAR2) 指定したバッファに格納された XMLを解析します。

parseDTDClob(Parser, CLOB, VARCHAR2) 指定した CLOBに格納された XMLを解析します。

setBaseDir(Parser, VARCHAR2) 関連 URLの解決に使用されるベース・ディレクトリを設定します。

showWarnings(Parser, BOOLEAN) 警告のオン /オフを切り換えます。

setErrorLog(Parser, VARCHAR2) エラーが指定されたファイルに送信されるように設定します。

setPreserveWhitespace(Parser, BOOLEAN) 空白保存モードを設定します。

setValidationMode(Parser, BOOLEAN) 検証モードを設定します。

getValidationMode(Parser) 検証モードを取得します。

setDoctype(Parser, DOMDocumentType) DTDを設定します。

getDoctype(Parser) DTDを取得します。

getDocument(Parser) DOMドキュメントを取得します。

freeParser(Parser) パーサー・オブジェクトを解放します。

XDK for PL/SQL: 仕様および早見表 D-7

Page 334: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

XML Parser for PL/SQL: XSLT Processor API

XML Parser for PL/SQL: XSLT Processor API表 D-2に、XML Parser for PL/SQLの XSLT Processor API関数を示します。

次のインタフェースについて示します。

� プロセッサ・インタフェース型 : Processor()

� スタイルシート・インタフェース型 : Stylesheet()

表表表表 D-2 XML Parser for PL/SQL: XSLT Processor() APIの機能の機能の機能の機能

XSLT Processorファンクションファンクションファンクションファンクション 説明説明説明説明

newProcessor 新しいプロセッサ・インスタンスを戻します。

processXSL(Processor, Stylesheet, DOMDocument)

指定した DOMDocumentおよびスタイルシートを使用して、入力された XMLドキュメントを変換します。

processXSL(Processor, Stylesheet, DOMDocumentFragment)

指定した DOMDocumentFragmentおよびスタイルシートを使用して、入力された XMLドキュメント・フラグメントを変換します。

showWarnings(Processor, BOOLEAN) 警告のオン /オフを切り換えます。

setErrorLog(Processor, VARCHAR2) エラーが指定ファイルに送信されるように設定します。

newStylesheet(DOMDocument, VARCHAR2) 指定した DOMDocumentおよび参照 URLを使用して、新しいスタイルシートを戻します。

newStylesheet(VARCHAR2, VARCHAR2) 指定した入力および参照 URLを使用して、新しいスタイルシートを戻します。

transformNode(DOMNode, Stylesheet) 指定したスタイルシートを使用して、DOMツリー内のノードを変換します。

selectNodes(DOMNode, VARCHAR2) 指定したパターンに一致する DOMツリーのノードを選択します。

selectSingleNodes(DOMNode, VARCHAR2) 指定したパターンと一致するツリーの最初のノードを選択します。

valueOf(DOMNode, VARCHAR2) 指定したパターンと一致するツリーの最初のノード値を取り出します。

setParam(Stylesheet, VARCHAR2, VARCHAR2)

最上位のスタイルシートのパラメータ値を設定します。

removeParam(Stylesheet, VARCHAR2) 最上位のスタイルシートのパラメータを削除します。

resetParams(Stylesheet) 最上位のスタイルシートのパラメータをリセットします。

freeStylesheet(Stylesheet) スタイルシート・オブジェクトを解放します。

freeProcessor(Processor) プロセッサ・オブジェクトを解放します。

D-8 Oracle8iアプリケーション開発者ガイド - XML Vol.2

Page 335: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

XML Parser for PL/SQL: W3C DOM API - 型

XML Parser for PL/SQL: W3C DOM API - 型型型型DOMは、HTMLおよび XMLドキュメントに対するアプリケーション・プログラム・インタフェース(Application Program Interface: API)です。ドキュメントの論理構造、およびドキュメントへのアクセス方法および操作方法を定義します。DOM仕様では、「ドキュメント」は広い意味で使用される用語です。XMLは、様々なシステムに格納される様々な情報を表す方法として、ますます需要が高まっています。従来、この情報のほとんどは、ドキュメントではなくデータとして考えられてきましたが、XMLでは、データをドキュメントとして表し、このデータを管理するために DOMが使用されます。

表表表表 D-3 XML Parser for PL/SQL: W3C DOM API型型型型

型型型型 DOMException型型型型 DOMインタフェース型インタフェース型インタフェース型インタフェース型

DOM Node types INDEX_SIZE_ERR DOMNode

ELEMENT_NODE DOMSTRING_SIZE_ERR DOMNamedNodeMap

ATTRIBUTE_NODE HIERARCHY_REQUEST_ERR DOMNodeList

TEXT_NODE WRONG_DOCUMENT_ERR DOMAttr

CDATA_SECTION_NODE INVALID_CHARACTER_ERR DOMCDataSection

ENTITY_REFERENCE_NODE NO_DATA_ALLOWED_ERR DOMCharacterData

ENTITY_NODE NO_MODIFICATION_ALLOWED_ERR DOMComment

PROCESSING_INSTRUCTION_NODE NOT_FOUND_ERR DOMDocumentFragment

COMMENT_NODE NOT_SUPPORTED_ERR DOMElement

DOCUMENT_NODE INUSE_ATTRIBUTE_ERR DOMEntity

DOCUMENT_TYPE_NODE DOMException types DOMEntityReference

DOCUMENT_FRAGMENT_NODE INDEX_SIZE_ERR DOMNotation

NOTATION_NODE DOMSTRING_SIZE_ERR DOMProcessingInstruction

DOMText

DOMImplementation

DOMDocumentType

DOMDocument

XDK for PL/SQL: 仕様および早見表 D-9

Page 336: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

XML Parser for PL/SQL: W3C DOM API - ノード・メソッド、ノード型および DOMインタフェース型

XML Parser for PL/SQL: W3C DOM API - ノード・メソッド、ノードノード・メソッド、ノードノード・メソッド、ノードノード・メソッド、ノード型および型および型および型および DOMインタフェース型インタフェース型インタフェース型インタフェース型

ノード・メソッドノード・メソッドノード・メソッドノード・メソッド次に、DOM APIのノード・メソッドを示します。

� FUNCTION isNull(n DOMNode) RETURN BOOLEAN;

� FUNCTION makeAttr(n DOMNode) RETURN DOMAttr;

� FUNCTION makeCDataSection(n DOMNode) RETURN DOMCDataSection;

� FUNCTION makeCharacterData(n DOMNode) RETURN DOMCharacterData;

� FUNCTION makeComment(n DOMNode) RETURN DOMComment;

� FUNCTION makeDocumentFragment(n DOMNode) RETURN DOMDocumentFragment;

� FUNCTION makeDocumentType(n DOMNode) RETURN DOMDocumentType;

� FUNCTION makeElement(n DOMNode) RETURN DOMElement;

� FUNCTION makeEntity(n DOMNode) RETURN DOMEntity;

� FUNCTION makeEntityReference(n DOMNode) RETURN DOMEntityReference;

� FUNCTION makeNotation(n DOMNode) RETURN DOMNotation;

� FUNCTION makeProcessingInstruction(n DOMNode) RETURN DOMProcessingInstruction;

� FUNCTION makeText(n DOMNode) RETURN DOMText;

� FUNCTION makeDocument(n DOMNode) RETURN DOMDocument;

� PROCEDURE writeToFile(n DOMNode, fileName VARCHAR2);

� PROCEDURE writeToBuffer(n DOMNode, buffer IN OUT VARCHAR2);

� PROCEDURE writeToClob(n DOMNode, cl IN OUT CLOB);

� PROCEDURE writeToFile(n DOMNode, fileName VARCHAR2, charset VARCHAR2);

� PROCEDURE writeToBuffer(n DOMNode, buffer IN OUT VARCHAR2, charset VARCHAR2);

� PROCEDURE writeToClob(n DOMNode, cl IN OUT CLOB, charset VARCHAR2);

� FUNCTION getNodeName(n DOMNode) RETURN VARCHAR2;

� FUNCTION getNodeValue(n DOMNode) RETURN VARCHAR2;

D-10 Oracle8iアプリケーション開発者ガイド - XML Vol.2

Page 337: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

XML Parser for PL/SQL: W3C DOM API - ノード・メソッド、ノード型および DOMインタフェース型

� PROCEDURE setNodeValue(n DOMNode, nodeValue IN VARCHAR2);

� FUNCTION getNodeType(n DOMNode) RETURN NUMBER;

� FUNCTION getParentNode(n DOMNode) RETURN DOMNode;

� FUNCTION getChildNodes(n DOMNode) RETURN DOMNodeList;

� FUNCTION getFirstChild(n DOMNode) RETURN DOMNode;

� FUNCTION getLastChild(n DOMNode) RETURN DOMNode;

� FUNCTION getPreviousSibling(n DOMNode) RETURN DOMNode;

� FUNCTION getNextSibling(n DOMNode) RETURN DOMNode;

� FUNCTION getAttributes(n DOMNode) RETURN DOMNamedNodeMap;

� FUNCTION getOwnerDocument(n DOMNode) RETURN DOMDocument;

� FUNCTION insertBefore(n DOMNode, newChild IN DOMNode, refChild IN DOMNode) RETURN DOMNode;

� FUNCTION replaceChild(n DOMNode, newChild IN DOMNode, oldChild IN DOMNode)> RETURN DOMNode;

� FUNCTION removeChild(n DOMNode, oldChild IN DOMNode) RETURN DOMNode;

� FUNCTION appendChild(n DOMNode, newChild IN DOMNode) RETURN DOMNode;

� FUNCTION hasChildNodes(n DOMNode) RETURN BOOLEAN;

� FUNCTION cloneNode(n DOMNode, deep boolean) RETURN DOMNode;

DOMノード型ノード型ノード型ノード型次に、DOM APIのノード型を示します。

� DOMノード型

� ELEMENT_NODE

� ATTRIBUTE_NODE

� TEXT_NODE

� CDATA_SECTION_NODE

� ENTITY_REFERENCE_NODE

� ENTITY_NODE

� PROCESSING_INSTRUCTION_NODE

XDK for PL/SQL: 仕様および早見表 D-11

Page 338: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

XML Parser for PL/SQL: W3C DOM API - ノード・メソッド、ノード型および DOMインタフェース型

� COMMENT_NODE

� DOCUMENT_NODE

� DOCUMENT_TYPE_NODE

� DOCUMENT_FRAGMENT_NODE

� NOTATION_NODE

DOMException型型型型次に、DOMException型を示します。

� INDEX_SIZE_ERR

� DOMSTRING_SIZE_ERR

� HIERARCHY_REQUEST_ERR

� WRONG_DOCUMENT_ERR

� INVALID_CHARACTER_ERR

� NO_DATA_ALLOWED_ERR

� NO_MODIFICATION_ALLOWED_ERR

� NOT_FOUND_ERR

� NOT_SUPPORTED_ERR

� INUSE_ATTRIBUTE_ERR

DOMインタフェース型インタフェース型インタフェース型インタフェース型次に、DOMインタフェース型を示します。

� DOMインタフェース型

� DOMNode

� DOMNamedNodeMap

� DOMNodeList

� DOMAttr

� DOMCDataSection

� DOMCharacterData

� DOMComment

� DOMDocumentFragment

D-12 Oracle8iアプリケーション開発者ガイド - XML Vol.2

Page 339: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

XML Parser for PL/SQL: W3C DOM API - ノード・メソッド、ノード型および DOMインタフェース型

� DOMElement

� DOMEntity

� DOMEntityReference

� DOMNotation

� DOMProcessingInstruction

� DOMText

� DOMImplementation

� DOMDocumentType

� DOMDocument

XDK for PL/SQL: 仕様および早見表 D-13

Page 340: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

XML Parser for PL/SQL: W3C DOM API - ノード・メソッド、ノード型および DOMインタフェース型

D-14 Oracle8iアプリケーション開発者ガイド - XML Vol.2

Page 341: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

XML SQL Utility(XSU)の仕様および早

E

XML SQL Utility((((XSU)の仕様および早見表)の仕様および早見表)の仕様および早見表)の仕様および早見表

この付録の内容は次のとおりです。

� XML SQL Utilityのインストール

� XML SQL Utility実行の要件

� XML SQL Utility(XSU)for Javaの早見表

� XML SQL Utility(XSU)for PL/SQLの早見表

見表 E-1

Page 342: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

XML SQL Utilityのインストール

XML SQL Utilityのインストールのインストールのインストールのインストール

XSU配布パッケージの内容配布パッケージの内容配布パッケージの内容配布パッケージの内容表 E-1に、XSU配布アーカイブ(ZIPファイル)の内容を示します。

XML SQL Utilityのインストールのインストールのインストールのインストール : 手順手順手順手順XSUをインストールするには、次の手順に従います。

1. 必要なソフトウェアをロードしたことを確認します。

2. XSUファイルを解凍します。

3. クライアント側の環境を正しく設定します。

� CLASSPATHを設定します。

� データベースが起動されているかどうかを確認します。

4. サーバー側の環境を正しく設定します。

表表表表 E-1 XSUアーカイブの内容アーカイブの内容アーカイブの内容アーカイブの内容

ファイル(相対位置)ファイル(相対位置)ファイル(相対位置)ファイル(相対位置) 説明説明説明説明

relnotes.html リリース・ノートです。

env.csh このファイルはヘルパー cshシェル・スクリプトで、XSUを正しく実行するために必要な、すべての環境変数を設定できます。ユーザーは、ディレクトリ情報を正しく設定する必要があります(JDKのインストール場所の指定など)。

env.bat このファイルは、Windowsのプラットフォーム用に作成されていることを除き、env.cshと同じです。

lib/oraclexmlsql.jar XSU用のすべての Javaファンクションを含む jarファイルです。

lib/xmlparserv2.jar XSUに同梱された Oracle XML Parser V2です。

lib/oraclexmlsqlload.csh(UNIX)

lib¥oraclexmlsqlload.bat (Windows)

Oracleデータベースへの XSUのロードを支援する cshおよびbatスクリプトです。これらのスクリプトは、loadjavaをコールして jarファイルをデータベースにロードし、xmlgenpkg.sqlを実行して PL/SQLフロントエンド・ラッパーを作成します。

lib/xmlgenpkg.sql PL/SQLフロントエンド・ラッパーを作成するための SQLスクリプトを含みます。

E-2 Oracle8iアプリケーション開発者ガイド - XML Vol.2

Page 343: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

XML SQL Utility実行の要件

XML SQL Utility実行の要件実行の要件実行の要件実行の要件XSUには、XSU111.zipおよび XSU12.zipの 2つのバージョンがあります。XSU111.zipはJDK 1.1.xと互換性があり、XSU12.zipは JDK1.2と互換性があります。

XSU111 - XML SQL Utility((((JDK 1.1.x用)用)用)用)このバージョンの XSUは、JDK 1.1.xと互換性があります。XSU111には、Java JDK 1.1.xバージョンおよび JDBC 1.x準拠のドライバが必要です。オラクル社では、JDBC 1.x準拠のドライバとして classes111.zipを出荷しています。XSU111は、ドキュメントの解析およびDOMノードの作成に対して、Oracle XML Parser V2に依存しています。XSUをデータベースにロードするには、そのデータベースで Oracle8i JVM(JServer)バージョン 8.1.5以上が実行されている必要があります。

XSU12 - XML SQL Utility((((JDK 2.x用)用)用)用)このバージョンの XSUは、JDK 1.2.x/JDK 2.xに準拠しています。XSU12を使用するには、Java JDK 1.2.x(または JDK 2.x)が必要です。また、JDBCドライバも JDK 1.2に準拠している必要があります。オラクル社では、JDBC2.0準拠のドライバとして classes12.zipを出荷しています。XSUは、Oracle XML Parserにも依存しています。XSUをサーバーへアップロードしたり、データベース内で実行するには、データベースがリリース 8.1.6以上で、Oracle8i JVM(JServer)対応である必要があります。

XSUの要件の要件の要件の要件XSUをインストールする前に、ニーズに応じて正しいバージョンの XSUを選択する必要があります。たとえば、JDK 1.1.xのみを使用する場合、XSU111.zipファイルをダウンロードします。JDKおよび JDBCドライバがない場合、それらを正しくダウンロードして、インストールする必要があります。

XSUファイルの解凍ファイルの解凍ファイルの解凍ファイルの解凍ZIPファイルをダウンロードした後、C:¥xmlなどの任意のディレクトリに内容を解凍します。XSUのバージョンによって、ファイルは XSU111または XSU12というサブディレクトリに展開されます。

XML SQL Utility(XSU)の仕様および早見表 E-3

Page 344: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

XML SQL Utility実行の要件

XSU環境の正しい設定環境の正しい設定環境の正しい設定環境の正しい設定 : クライアント側クライアント側クライアント側クライアント側XSUの使用方法によって、クライアント側またはサーバー側で、異なる設定タスクを行います。

CLASSPATHの設定の設定の設定の設定クライアント側から XSUを実行する場合、CLASSPATH設定を修正する必要があります。環境でこれらの変数がすでに正しく設定されている場合、oraclexmlsql.jarが CLASSPATHに含まれていることを確認するのみです。これを行うには、グローバル設定を編集するか現行シェルの設定を変更します。

� グローバル設定グローバル設定グローバル設定グローバル設定 : グローバル設定を編集するには、次の手順に従います。

� UNIX: loginスクリプトまたは .tcshスクリプト内の CLASSPATH変数を設定します。単純にこれらのスクリプトを編集し、oraclexmlsql.jarファイルへのパスを含めます。次に例を示します。

setenv CLASSPATH /private/john/xmlwork/XSU12/lib/oraclexmlsql.jar:$CLASSPATH

� Windows: Windowsの「設定」の「コントロール パネル」にある「システムのプロパティ」内の環境変数を変更して、パスを含めます。たとえば、XSUを D:¥xmlに展開した場合、D:¥xml¥XSU12¥lib¥oraclexmlsql.jarを変数設定に含めます。

� 現行シェルの設定現行シェルの設定現行シェルの設定現行シェルの設定 : 実行中の特定シェルの設定を変更するには、次の手順に従います。

� UNIX: env.cshファイルを編集します。env.csh内のパス名が正しいことを確認し、env.cshファイルをソースに指定します。これによって、環境変数が正しく設定されます。cshまたは tcsh以外のシェルを使用している場合、そのシェルの構文を使用するようにファイルを編集します。

� Windows: env.batファイルを編集し、変数設定が正しいことを確認してから、ファイルを実行して現行の環境で変数を設定します。

Windows上での操作は、実行中の現行のシェルのみに影響するため、すべての異なるシェルに対してバッチ・ファイルをソースに指定するか、または実行する必要があります。

データベースデータベースデータベースデータベースデータベースが起動され実行中であることを確認します。

確認したら、クライアント側で XSUを使用できます。

E-4 Oracle8iアプリケーション開発者ガイド - XML Vol.2

Page 345: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

XML SQL Utility実行の要件

XSU環境の正しい設定環境の正しい設定環境の正しい設定環境の正しい設定 : サーバー側サーバー側サーバー側サーバー側XSUの PL/SQL APIを使用するか、または XSU Java APIに Javaストアド・プロシージャを作成するには、次の手順に従います。

1. XSUをアップロードするデータベース・スキーマを選択します。デフォルトのスキーマは「scott」です。このスキーマを変更するには、oraclexmlsql.xxxファイルを編集し、USER_PASSWORDマクロ・ファイルを任意のスキーマに変更します。

� UNIX: oraclexmlsqlload.cshファイルを変更します。

� Windows: oraclexmlsqlload.batファイルを変更します。

2. XSUをロードする Oracleデータベースが Java対応で、起動されて実行中であることを確認します。

3. 適切な oraclexmlsqlload.xxxファイルを実行して、次の操作を行います。

� Oracle XML Parser for Java V2をデータベースにロードします。Oracle XML Parser for Java V2がすでにデータベースにロードされている場合、Parserをロードするoraclexmlsqlload.xxxの行をコメント・アウトできます。

� XSUを構成する Javaクラス oraclexmlsql.jarを、Oracleデータベースにロードします。

� SQLスクリプト xmlgenpkg.sqlを実行します。このスクリプトは、ロードされたJavaクラスに PL/SQL APIを作成します。

� PL/SQL APIがロードされ操作可能であることをテストする oraclexmltest.sqlを実行します。このスクリプトを実行すると、SQLPlusが起動され、様々な問合せが実行されて、XMLの結果が表示されます。テストが正常に実行されない場合、適切な手順で問題を解決してから XSUを再ロードする必要があります。

これで、Oracle Server内で Javaおよび PL/SQL APIを使用できます。

XML SQL Utility(XSU)の仕様および早見表 E-5

Page 346: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

XML SQL Utility(XSU)for Javaの早見表

XML SQL Utility((((XSU))))for Javaの早見表の早見表の早見表の早見表表 E-2、表 E-3および表 E-4に、XSU for Javaの最上位クラスの早見表を示します。

表表表表 E-2 OracleXMLSave()

メンバーのサマリーメンバーのサマリーメンバーのサマリーメンバーのサマリー

フィールドフィールドフィールドフィールド

DATE_FORMAT setDateFormat(String)で使用される日付書式です。

DEFAULT_BATCH_SIZE 挿入時のデフォルトのバッチ・サイズは 17です。

コンストラクタコンストラクタコンストラクタコンストラクタ

OracleXMLSave(Connection, String)

OracleXMLSaveユーティリティに対するパブリック・コンストラクタです。

メソッドメソッドメソッドメソッド

close() このオブジェクトに対応付けられたすべてのコンテキストのクローズまたは割当て解除を行います。

deleteXML(Document) XMLドキュメントのレコードに対応するデータベース・オブジェクトから、レコードを削除します。

deleteXML(InputStream) XMLドキュメントのレコードに対応するデータベース・オブジェクトから、レコードを削除します。

deleteXML(String) XMLドキュメントのレコードに対応するデータベース・オブジェクトから、レコードを削除します。

deleteXML(URL) XMLドキュメントのレコードに対応するデータベース・オブジェクトから、レコードを削除します。

insertXML(Document) 指定した表に XMLドキュメントを挿入します。処理された行の数を戻します。

insertXML(InputStream) 指定した表に XMLドキュメントを挿入します。処理された行の数を戻します。

insertXML(String) 指定した表に XMLドキュメントを挿入します。処理された行の数を戻します。

insertXML(URL) 指定した表に XMLドキュメントを挿入します。処理された行の数を戻します。

setBatchSize(int) DML操作中に使用されるバッチ・サイズを変更します。

setCommitBatch(int) コミットのバッチ・サイズを設定します。

setDateFormat(String) 日付タグの書式を設定します。

E-6 Oracle8iアプリケーション開発者ガイド - XML Vol.2

Page 347: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

XML SQL Utility(XSU)for Javaの早見表

setIgnoreCase(boolean) XSUがタグ名と表 /ビューの列名を比較する場合に、タグ名の大 /小文字を区別しないように指定します。

setKeyColumnList(String[]) 更新または削除中に、データベース表内の特定の行を識別するために使用する、列のリストを設定します。

setRowTag(String) XMLドキュメントで使用するタグを指定し、各行の値に対応する XML要素を囲みます。

setUpdateColumnList(String[]) 更新する列の値を設定します。

updateXML(Document) XMLドキュメントを指定して、表を更新します。

updateXML(InputStream) XMLドキュメントを指定して、表を更新します。

updateXML(String) XMLドキュメントを指定して、表を更新します。

updateXML(URL) XMLドキュメントを指定して、表を更新します。

表表表表 E-3 OracleXMLQuery()

メンバーのサマリーメンバーのサマリーメンバーのサマリーメンバーのサマリー 説明説明説明説明

フィールドフィールドフィールドフィールド

DTD DTDの生成を指定します。

ERROR_TAG ERRORドキュメントのデフォルトのタグ名を指定します。

MAXROWS_ALL すべての行を結果に含めます。

NONE DTDを生成しないことを指定します。

ROW_TAG ROW要素のデフォルトのタグ名を指定します。

ROWIDATTR_TAG ROW要素のデフォルトのタグ名を指定します。

ROWSET_TAG ドキュメントのデフォルトのタグ名を指定します。

SKIPROWS_ALL 結果内ですべての行をスキップします。

コンストラクタコンストラクタコンストラクタコンストラクタ

OracleXMLQuery(Connection, ResultSet) OracleXMLQueryObjectのコンストラクタです。

OracleXMLQuery(Connection, String) OracleXMLQueryObjectのコンストラクタです。

OracleXMLQuery(OracleXMLDataSet) OracleXMLQueryObjectのコンストラクタです。

表表表表 E-2 OracleXMLSave()(続き)(続き)(続き)(続き)

メンバーのサマリーメンバーのサマリーメンバーのサマリーメンバーのサマリー

XML SQL Utility(XSU)の仕様および早見表 E-7

Page 348: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

XML SQL Utility(XSU)for Javaの早見表

メソッドメソッドメソッドメソッド

close() すべてのオープン・リソースをクローズします。

getXMLDOM() OracleXMLDocGenDOMクラスを使用して、XMLドキュメントの DOM表現を戻し、DOMツリーを生成します。

getXMLDOM(Node) ルート・ノードも指定します。

getXMLDOM(Node, int) XMLドキュメントを含む Documentオブジェクトを戻します。

getXMLMetaData(int, boolean) getXMLコールによって生成された可能性があるXMLドキュメントの DTDを戻します。

getXMLString() OracleXMLDocGenStringクラスを使用して、XMLドキュメントの文字列表現を戻し、文字列を作成します。DTDは生成しません。

getXMLString(int) OracleXMLDocGenStringクラスを使用して、XMLドキュメントの文字列表現を戻し、文字列を作成します。

getXMLString(Node) 作成されたすべての子を、このルート・ノードに追加します。

getXMLString(Node, int) XMLドキュメントを含む Stringオブジェクトを戻します。

keepObjectOpen(boolean) ResultSetオブジェクトを取らないすべてのgetXMLファンクションのデフォルトの動作は、ResultSetオブジェクトおよび Statementオブジェクトをコールの終わりにクローズすることです。このメソッドを使用して、この動作を変更できます。これは、すべてのメタデータを保持するため、1回に少数のレコードしか取得しない場合に有効です。

setCollIdAttrName(String)

setDataHeader(Reader, String) XMLデータ・ヘッダーを設定します。

setDateFormat(String) XMLドキュメントに生成日付の書式を設定します。

setEncoding(String) XMLドキュメントにエンコードを設定します。

setErrorTag(String) エラーが発生した場合のエラー・タグの名前(デフォルトは ERROR)を設定します。

表表表表 E-3 OracleXMLQuery()(続き)(続き)(続き)(続き)

メンバーのサマリーメンバーのサマリーメンバーのサマリーメンバーのサマリー 説明説明説明説明

E-8 Oracle8iアプリケーション開発者ガイド - XML Vol.2

Page 349: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

XML SQL Utility(XSU)for Javaの早見表

setException(Exception) ユーザーに例外の指定を許可し、XSUに対処させます。

setMaxRows(int) skipRowsの数の行がスキップされた後、問合せ結果から取り出す行の最大数を設定します。MAXROWS_NONE、MAXROWS_ALLまたはMAXROWS_DEFAULTのいずれかを使用できます。

setMetaHeader(Reader) XMLメタ・ヘッダーを設定します。

setRaiseException(boolean) TRUEを指定してコールすると、NULL行を戻すかわりに、「データが見つからない」などの例外が発生します。

setRaiseNoRowsException(boolean) 生成された XMLドキュメントが空の場合に、理由にかかわらず OracleXMLNoRowsExceptionが発生するかどうかを XSUに通知します。

setRowIdAttrName(String) 行の囲みタグの ID属性名を設定します。

setRowIdAttrValue(String) 列値が行の囲みタグの ID属性に割り当てられるスカラー列を指定します。

setRowsetTag(String) XMLデータセットを囲むタグを設定します。

setRowTag(String) データベースに対応する XML要素を囲むタグを設定します。

setSkipRows(int) スキップする行数を設定します。

setStylesheetHeader(String) 生成された XMLドキュメントにスタイルシート・ヘッダー(スタイルシート処理命令)を設定します。

setStylesheetHeader(String, String) 生成された XMLドキュメントにスタイルシート・ヘッダー(スタイルシート処理命令)を設定します。

setXSLT(Reader, String) XML生成中に適用するスタイルシートを設定します。

setXSLT(String, String) XML生成中に適用するスタイルシートを設定します。

useLowerCaseTagNames() すべてのタグ名を小文字に設定します。

useNullAttributeIndicator(boolean) NULLを示すために、XML属性を使用するか、XMLドキュメント内の特定のエンティティを省略するかを指定します。

表表表表 E-3 OracleXMLQuery()(続き)(続き)(続き)(続き)

メンバーのサマリーメンバーのサマリーメンバーのサマリーメンバーのサマリー 説明説明説明説明

XML SQL Utility(XSU)の仕様および早見表 E-9

Page 350: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

XML SQL Utility(XSU)for Javaの早見表

useUpperCaseTagNames() すべてのタグ名を大文字に設定します。

表表表表 E-4 OracleXMLSQLException()

メンバーのサマリーメンバーのサマリーメンバーのサマリーメンバーのサマリー 説明説明説明説明

コンストラクタコンストラクタコンストラクタコンストラクタ

OracleXMLSQLException(Exception)

OracleXMLSQLException(Exception, String)

OracleXMLSQLException(String)

OracleXMLSQLException(String, Exception)

OracleXMLSQLException(String, Exception, String)

OracleXMLSQLException(String, int)

OracleXMLSQLException(String, int, String)

OracleXMLSQLException(String, String)

メソッドメソッドメソッドメソッド

getErrorCode()

getParentException() 元の例外がある場合、それを戻します。ない場合は、NULLを戻します。

getXMLErrorString() XMLエラー文字列を、指定したエラー・タグ名で出力します。

getXMLSQLErrorString() エラー・メッセージにも SQLパラメータを出力します。

setErrorTag(String) XMLエラー・レポートを生成するために、getXMLErrorStringおよびgetXMLSQLErrorStringで使用されるエラー・タグ名を設定します。

表表表表 E-3 OracleXMLQuery()(続き)(続き)(続き)(続き)

メンバーのサマリーメンバーのサマリーメンバーのサマリーメンバーのサマリー 説明説明説明説明

E-10 Oracle8iアプリケーション開発者ガイド - XML Vol.2

Page 351: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

XML SQL Utility(XSU)for PL/SQLの早見表

XML SQL Utility((((XSU))))for PL/SQLの早見表の早見表の早見表の早見表XSU for PL/SQLは、次の PL/SQLパッケージを提供します。

� DBMS_XMLQuery(DB_to_XML型の機能を提供します)

� DBMS_XMLSave(XML_to_DB型の機能を提供します)

参照参照参照参照 : 『Oracle8i XMLリファレンス・ガイド』も参照してください。

XML SQL Utility(XSU)の仕様および早見表 E-11

Page 352: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

XML SQL Utility(XSU)for PL/SQLの早見表

E-12 Oracle8iアプリケーション開発者ガイド - XML Vol.2

Page 353: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

用語集用語集用語集用語集

API

「アプリケーション・プログラム・インタフェース(Application Program Interface: API)」を参照。

B to B((((Business-to-Business: B2B))))

商品販売およびサービス提供における企業間の相互のコミュニケーションを示す用語。これを実現するソフトウェア・インフラストラクチャが取引である。

B to C((((Business-to-Consumer: B2C))))

商品販売およびサービス提供における企業とコンシューマ間のコミュニケーションを示す用語。

BC4J

Business Components for Java。

BFILE

オペレーティング・システム内に常駐するデータベース表領域の外に存在する外部バイナリ・ファイル。BFILEはデータベース・セマンティクスから参照され、外部 LOBともいう。

BLOB

「バイナリ・ラージ・オブジェクト(Binary Large Object: BLOB)」を参照。

CDATA

「文字データ(Character Data: CDATA)」を参照。

CDF

チャネル定義形式。インターネット上のチャネルに関する情報を交換する方法を提供する。

用語集用語集用語集用語集 -1

Page 354: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

CGI

「共通ゲートウェイ・インタフェース(Common Gateway Interface: CGI)」を参照。

CLASSPATH

JVMがアプリケーションの実行に必要なクラスを検索するために使用する、オペレーティング・システムの環境変数。

CLOB

「キャラクタ・ラージ・オブジェクト(Character Large Object: CLOB)」を参照。

Common Oracle Runtime Environment((((CORE))))

Cで作成されたファンクションのライブラリ。これによって開発者は、事実上すべてのプラットフォームおよびオペレーティング・システムに簡単に移植できるコードを作成できる。

CORBA

「共通オブジェクト要求ブローカ API(Common Object Request Broker API: CORBA)」を参照。

CSS

カスケーディング・スタイルシート。

DOCTYPE

XMLドキュメント内に DTDまたはその参照を指定するタグ名として使用される用語。たとえば、<!DOCTYPE person SYSTEM "person.dtd">では、ルート要素名が personとして、また外部 DTDが person.dtdとしてファイル・システム内に宣言される。内部 DTDは、DOCTYPE宣言内で宣言される。

DOM

「ドキュメント・オブジェクト・モデル(Document Object Model: DOM)」を参照。

DTD

「文書型定義(Document Type Definition: DTD)」を参照。

EDI

電子データ交換。

Enterprise JavaBean((((EJB))))

サーバー上の JVM内で実行する独立プログラム・モジュール。CORBAによって EJBのインフラストラクチャが提供され、コンテナ・レイヤーによって、サポートされたサーバーにセキュリティ、トランザクション・サポートおよびその他の共通機能が提供される。

用語集用語集用語集用語集 -2

Page 355: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

eXtensible Stylesheet Language Formatting Object((((XSLFO))))

書式設定セマンティクスを指定するための XML用語を定義する、W3Cの標準仕様。

eXtensible Stylesheet Language Transformation((((XSLT))))

XSLTとも書く。XMLドキュメントを別のドキュメントに変換する変換言語を定義する、W3Cの XSL標準仕様。

HTML

「ハイパー・テキスト・マークアップ言語(Hypertext Markup Language: HTML)」を参照。

HTTP

「ハイパー・テキスト転送プロトコル(Hypertext Transport Protocol: HTTP)」を参照。

IDE

「統合開発環境(Integrated Development Environment: IDE)」を参照。

iFS

「Internet File System(iFS)」を参照。

interMedia

複合データ型のコレクションおよびこのコレクションの Oracle8i内でのアクセスを示す用語。これには、テキスト、ビデオ、時系列および空間データ型が含まれる。

Internet File System((((iFS))))

Oracle8iデータベース内または中間層上で実行する、Oracleのファイル・システムおよびJavaベースの開発環境。単一のデータベース・リポジトリに複数の型のドキュメントを作成、格納および管理する方法を提供する。

Internet Inter-ORB Protocol((((IIOP))))

インターネットなどの TCP/IPネットワーク上で、メッセージを交換するために CORBAが使用するプロトコル。

Java

Sun Microsystems社によって開発およびメンテナンスされた高水準のプログラミング言語。Javaでは、アプリケーションが JVMという仮想マシン内で実行する。JVMは、オペレーティング・システムに対するすべてのインタフェースの役割を担う。開発者は、このアーキテクチャによって、JVMを搭載するすべてのオペレーティング・システムまたはプラットフォームで実行する Javaアプリケーションおよびアプレットを開発できる。

用語集用語集用語集用語集 -3

Page 356: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

Java Database Connectivity((((JDBC))))

Javaアプリケーションが、SQL言語を介してデータベースにアクセスできるようにするプログラム API。JDBCドライバは、プラットフォームに依存しないように Javaで作成されるが、各データベースに固有である。

Java Developer's Kit((((JDK))))

Java開発環境を確立する Javaバージョン用の、Javaクラス、ランタイム、コンパイラ、デバッガおよびソース・コードのコレクション。JDKはバージョンで指定され、Java 2はバージョン 1.2以上を指定するために使用される。

Java Runtime Environment((((JRE))))

プラットフォーム上で Java仮想マシンを構成する、コンパイル済クラスのコレクション。JREはバージョンで指定され、Java 2はバージョン 1.2以上を指定するために使用される。

JavaBean

JVM内で実行する独立プログラム・モジュール。通常、クライアント側のユーザー・インタフェースを作成するために使用される。サーバー側の同等のモジュールは、Enterprise JavaBean(EJB)という。「Enterprise JavaBean(EJB)」を参照。

JavaServer Page((((JSP))))

Webページへの単純なプログラム・インタフェースを可能にする、サーブレットの拡張機能。JSPは、特殊タグ、およびWebまたはアプリケーション・サーバーで実行される埋込みJavaコードを含む HTMLページであり、HTMLページに動的機能を提供する。JSPは、サーバーの JVMで最初に要求および実行されるときに、サーブレットにコンパイルされる。

Java仮想マシン(仮想マシン(仮想マシン(仮想マシン(Java virtual machine: JVM))))

コンパイル済 Javaバイトコードをプラットフォームのマシン言語に変換し、それを実行する Javaインタプリタ。JVMは、クライアント側、ブラウザ内、中間層内、Web上、OASなどのアプリケーション・サーバー上、または Oracle8iなどのデータベース・サーバー内で実行できる。

JDBC

「Java Database Connectivity(JDBC)」を参照。

JDeveloper

アプリケーション、アプレットおよびサーブレットの開発を可能にする Oracleの Java IDE。エディタ、コンパイラ、デバッガ、構文チェッカ、ヘルプ・システムなどを含む。バージョン 3.1の JDeveloperは、エディタで XMLがサポートされるとともに、簡単に使用できるように統合された Oracle XDK for Javaを搭載して、XMLベースの開発をサポートするように拡張されている。

用語集用語集用語集用語集 -4

Page 357: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

JDK

「Java Developer's Kit(JDK)」を参照。

JVM

「Java仮想マシン(Java virtual machine: JVM)」を参照。

LAN

「ローカル・エリア・ネットワーク(Local Area Network: LAN)」を参照。

LOB

「ラージ・オブジェクト(Large Object: LOB)」を参照。

NCLOB

「各国語キャラクタ・ラージ・オブジェクト(National Character Large Object: NCLOB)」を参照。

N層(層(層(層(N-tier))))

クライアントおよびサーバーで構成される 1つ以上の層で構成される、コンピュータ通信ネットワーク・アーキテクチャの指定。通常、2層システムは 1つのクライアント・レベルおよび 1つのサーバー・レベルで構成される。3層システムは、通常、1つのクライアン層とともに、データベース・サーバーとWebまたはアプリケーション・サーバーの 2つのサーバー層を使用する。

OAG

Open Applications Group。

OAI

Oracle Applications Integrator。CRMアプリケーションを Oracle ERPに加えて他の ERPシステムと統合するための、Oracle iStudio開発ツールを含むランタイム。固有の APIは、メッセージ対応である必要がある。標準の拡張フックを使用して、他のアプリケーション・システムと交換された XMLストリームを生成または解析する。

OAS

「Oracle Applilcation Server(OAS)」を参照。

OASIS

「Organization for the Advancement of Structured Information(OASIS)」を参照。

OE

Oracle Exchange。

用語集用語集用語集用語集 -5

Page 358: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

OIS

「Oracle Integration Server(OIS)」を参照。

Oracle Applilcation Server((((OAS))))

Oracleアプリケーション・サーバー。オープン標準フレームワーク内で高パフォーマンスのN層トランザクション指向Webアプリケーションを構築、配置および管理するために必要な、すべての主要なサービスおよび機能を統合する。

Oracle Integration Server((((OIS))))

アプリケーション統合のためのメッセージング・ハブとして機能する Oracleのサーバー製品。OISには、AQおよび Oracle Workflowを搭載した Oracle8iデータベース、およびOracle Message Brokerを使用して、アプリケーション間で XML形式のメッセージを転送するアプリケーションへのインタフェースが含まれる。

ORACLE_HOME

アプリケーションで使用するために、Oracleデータベースのインストール場所を識別するオペレーティング・システムの環境変数。

Oracle8i JVM

Oracle8iデータベースのメモリー領域内で実行する Java仮想マシン。JVMは、Oracle 8i リリース 8.1.5では Java 1.1準拠であったが、リリース 8.1.6では Java 1.2準拠である。

ORB

「オブジェクト要求ブローカ(Object Request Broker: ORB)」を参照。

Organization for the Advancement of Structured Information((((OASIS))))

会議、セミナー、展示会およびその他の教育イベントを通じて、パブリック情報標準の普及促進を目的として設立されたメンバーの組織。XMLは、SGMLと同様に、OASISが活発に普及を促進している標準である。

PCDATA

「解析対象文字データ(Parsed Character Data: PCDATA)」を参照。

PDA

Palm Pilotなどのパーソナル・デジタル・アシスタント。

PL/SQL

データベース内で実行できるプログラムを作成するために SQLを拡張した、Oracleプロシージャ型言語。

PUBLIC

後に続く参照の、インターネット上の場所を指定する用語。

用語集用語集用語集用語集 -6

Page 359: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

RDF

リソース記述フレームワーク。

SAX

「Simple API for XML(SAX)」を参照。

SGML

「標準汎用マークアップ言語(Standard Generalized Markup Language: SGML)」を参照。

Simple API for XML((((SAX))))

XMLパーサーによって提供され、イベント駆動型のアプリケーションによって使用されるXML標準インタフェース。

SQL

「構造化問合せ言語(Structured Query Language: SQL)」を参照。

SSI

「サーバー側インクルード(Server-Side Include: SSI)」を参照。

SSL

「セキュア・ソケット・レイヤー(Secure Sockets Layer: SSL)」を参照。

SYSTEM

後に続く参照の、ホスト・オペレーティング・システム上の場所を指定する用語。

TCP/IP

「トランスミッション・コントロール・プロトコル /インターネット・プロトコル(Transmission Control Protocol/Internet Protocol: TCP/IP)」を参照。

URI

「ユニフォーム・リソース識別子(Uniform Resource Identifier: URI)」を参照。

URL

「ユニフォーム・リソース・ロケータ(Uniform Resource Locator: URL)」を参照。

W3C

「World Wide Web Consortium(W3C)」を参照。

WAN

「ワイド・エリア・ネットワーク(Wide Area Network: WAN)」を参照。

用語集用語集用語集用語集 -7

Page 360: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

Web Request Broker((((WRB))))

URLを処理し、適切なカートリッジに送信する OAS内のカートリッジ。

World Wide Web Consortium((((W3C))))

1994年に設立された、Webの標準を確立するための国際的な産業組合。W3Cのサイトは、www.w3c.orgである。

XLink

XMLドキュメント内でのハイパーリンクの使用を制御する規則で構成された XML Linking言語。これらの規則は、W3Cの勧告プロセス下の XML Linking Groupによって開発されている。XLinkは、XMLがドキュメントの表示およびハイパーリンクの管理にサポートする 3つの言語(Xlink、Xpointerおよび XPath)の 1つである。

XML

「拡張可能マークアップ言語(eXtensible Markup Language: XML)」を参照。

XML Class Generator

入力ファイルを受け入れ、対応する機能を持つ一連の出力クラスを作成するユーティリティ。XML Class Generatorの場合、入力ファイルは DTDであり、出力は、その DTDに準拠する XMLドキュメントを作成するために使用できる一連のクラスである。

XML Developer's Kit((((XDK))))

ソフトウェア開発者に、アプリケーションを XML対応にするための標準ベースの機能を提供する、一連のライブラリ、コンポーネントおよびユーティリティ。Oracle XDK for Javaには、XML Parser、XSL Processor、XML Class Generator、Transviewer Beansおよび XSQL Servletが含まれる。

XML Query

W3Cが取り組む、XMLドキュメントを問い合せるための言語および構文の標準。

XML Schema

W3Cが取り組む、XMLドキュメント内で単純なデータ型および複合構造を表すための標準。データ型の定義や妥当性など、現在 DTDで不足している領域に取り組んでいる。Oracle XML Schema Processorは、オンライン取引などの E-Businessアプリケーションで使用される、XMLドキュメントおよびデータの妥当性を自動的に確認する。XML Schemaは、XMLドキュメントに単純および複雑なデータ型を追加し、DTDの機能を XML Schema定義の XMLドキュメントに置き換える。

XML Transviewer Beans

XDK for Javaに含まれる Oracle XML Java Beansを示す Oracle用語。これらの Beanには、XML Source View Bean、Tree View Bean、DOMParser Bean、Transformer BeanおよびTransViewer Beanが含まれる。

用語集用語集用語集用語集 -8

Page 361: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

XMLパーサー(パーサー(パーサー(パーサー(XML parser))))

XMLで、XMLドキュメントを入力として受け入れ、ドキュメントが整形式であり、また妥当(オプション)であるかどうかを判断するソフトウェア・プログラム。Oracle XML Parserは、SAXおよび DOMインタフェースの両方をサポートする。

XPath

XSLおよび XPointerで使用されるドキュメント内で要素を指定するための、オープン標準の構文。XPathは、現在W3C勧告である。XSLT、XLinkおよび XML Queryに使用されるXMLドキュメントを操作するためのデータ・モデルおよび文法を指定する。

XPointer

XMLドキュメント・フラグメントへの参照を記述するためのW3C勧告。XPointerは、XPath形式の URIの終わりに使用できる。XPathナビゲーションを使用して、XMLドキュメント内の個別のエンティティまたはフラグメントの識別を指定する。

XSL

(W3C)の XMLは、XSL Transformationsおよび XSL Formatting Objectsという 2つのW3C勧告で構成されている。XSL Transformationsは 1つの XMLドキュメントを別の XMLドキュメントに変換し、XSL Formatting Objectsは XMLドキュメントの表示を指定する。XSLは、スタイルシートを表す言語である。XSLは、次の 2つで構成される。

� XMLドキュメントを変換するための言語(XSLT)

� 書式設定セマンティクスを指定するための XMLボキャブラリ(XSLFO)

XSLスタイルシートは、書式設定用ボキャブラリを使用する XMLドキュメントへのクラスのインスタンスの変換方法を記述して、XMLドキュメントのクラス表示を指定する。

XSL

「拡張可能スタイルシート言語(eXtensible Stylesheet Language: XSL)」を参照。

XSLFO

「eXtensible Stylesheet Language Formatting Object(XSLFO)」を参照。

XSLT

「eXtensible Stylesheet Language Transformation(XSLT)」を参照。

XSQL

Oracle XSQL Servletによって使用される指定。1つ以上の SQL問合せから動的 XMLドキュメントを生成し、XMLスタイルシートを使用して、サーバー内のドキュメントを変換する(オプション)機能を提供する。

用語集用語集用語集用語集 -9

Page 362: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

アプリケーション・サーバー(アプリケーション・サーバー(アプリケーション・サーバー(アプリケーション・サーバー(Application Server))))

アプリケーションおよびその環境をホストするために設計されたサーバーであり、サーバー・アプリケーションの実行を許可する。代表的な例は OASで、リモート・クライアントがインタフェースを制御する場合に、Java、C、C++および PL/SQLアプリケーションをホストできる。「Oracle Applilcation Server(OAS)」を参照。

アプリケーション・プログラム・インタフェース(アプリケーション・プログラム・インタフェース(アプリケーション・プログラム・インタフェース(アプリケーション・プログラム・インタフェース(Application Program Interface: API))))

一連のパブリック・プログラム・インタフェース。オペレーティング・システム、またはデータベース、Webサーバー、JVMなどの他のプログラム環境と通信するための言語およびメッセージ形式で構成される。通常これらのメッセージは、アプリケーション開発に使用可能なファンクションおよびメソッドをコールする。

インスタンス化(インスタンス化(インスタンス化(インスタンス化(instantiate))))

Javaや C++などのオブジェクト・ベース言語で使用される用語で、特定のクラスのオブジェクト作成を示す。

エンティティ(エンティティ(エンティティ(エンティティ(entity))))

別の文字列、またはドキュメントのキャラクタ・セットに属さない特殊文字を表すことができる文字列。エンティティ、およびパーサーによってエンティティの代替となるテキストは、DTDに宣言される。

オブジェクト・ビュー(オブジェクト・ビュー(オブジェクト・ビュー(オブジェクト・ビュー(Object View))))

1つ以上のオブジェクト表または他のビューに含まれるデータの、調整された外観。オブジェクト・ビュー問合せの出力は、表として扱われる。オブジェクト・ビューは、表が使用されているほとんどの場所で使用できる。

オブジェクト要求ブローカ(オブジェクト要求ブローカ(オブジェクト要求ブローカ(オブジェクト要求ブローカ(Object Request Broker: ORB))))

クライアント側の要求元プログラムとサーバー側のオブジェクト間のメッセージ通信を管理するソフトウェア。ORBは、アクション要求およびそのパラメータをオブジェクトに渡し、結果を戻す。共通の実装は、CORBAおよび EJBである。「共通オブジェクト要求ブローカAPI(Common Object Request Broker API: CORBA)」を参照。

オブジェクト・リレーショナル(オブジェクト・リレーショナル(オブジェクト・リレーショナル(オブジェクト・リレーショナル(object-relational))))

テキスト・ドキュメント、オーディオ・ファイル、ビデオ・ファイル、ユーザー定義オブジェクトなどの高順序のデータ型を格納および操作できるリレーショナル・データベース・システムを示す用語。

親要素(親要素(親要素(親要素(parent element))))

子要素という別の要素を囲む要素。たとえば、<Parent><Child></Child></Parent>は、Parent要素がその Child要素をラップしていることを示す。

用語集用語集用語集用語集 -10

Page 363: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

カートリッジ(カートリッジ(カートリッジ(カートリッジ(cartridge))))

Javaまたは PL/SQLのストアド・プログラム。データベースが新しいデータ型を理解および処理するために必要な機能を追加する。カートリッジは、Oracle8または Oracle8i内の拡張フレームワークでインタフェースの役割を担う。interMedia Textはこの種類のカートリッジであり、データベース内に格納されたテキスト・ドキュメントの読込み、書込みおよび検索のサポートを追加する。

解析対象文字データ(解析対象文字データ(解析対象文字データ(解析対象文字データ(Parsed Character Data: PCDATA))))

解析する必要があるが、タグまたは解析対象外データの一部ではないテキストで構成される要素内容。

拡張可能スタイルシート言語(拡張可能スタイルシート言語(拡張可能スタイルシート言語(拡張可能スタイルシート言語(eXtensible Stylesheet Language: XSL))))

XMLドキュメントを変換またはレンダリングするために、スタイルシート内で使用される言語。XSLスタイルシートには、XSL Transformations(XSLT)および XSL Formatting Objects(XSLFO)という 2つのW3C勧告がある。

拡張可能マークアップ言語(拡張可能マークアップ言語(拡張可能マークアップ言語(拡張可能マークアップ言語(eXtensible Markup Language: XML))))

データ記述のオープン標準。SGML構文のサブセットを使用してW3Cによって開発され、インターネットでの使用のために設計された。現行の標準はバージョン 1.0で、1998年 2月にW3C勧告として公開された。

各国語キャラクタ・ラージ・オブジェクト(各国語キャラクタ・ラージ・オブジェクト(各国語キャラクタ・ラージ・オブジェクト(各国語キャラクタ・ラージ・オブジェクト(National Character Large Object: NCLOB))))

データベースの各国語キャラクタ・セットに対応する文字データで構成された値を持つ LOBデータ型。

空要素(空要素(空要素(空要素(empty element))))

テキスト内容または子要素のない要素。属性およびその値のみを含む場合がある。空要素の書式は、<name/>、または <name></name>(タグの間には空白なし)である。

キャラクタ・ラージ・オブジェクト(キャラクタ・ラージ・オブジェクト(キャラクタ・ラージ・オブジェクト(キャラクタ・ラージ・オブジェクト(Character Large Object: CLOB))))

データベース・キャラクタ・セットに対応する文字データで構成された値を持つ LOBデータ型。CLOBは、interMedia Textの検索エンジンを使用して索引付けおよび検索できる。

共通オブジェクト要求ブローカ共通オブジェクト要求ブローカ共通オブジェクト要求ブローカ共通オブジェクト要求ブローカ API((((Common Object Request Broker API: CORBA))))

ネットワーク全体の分散オブジェクト間の通信用の、Object Management Groupによる標準。これらの自己完結型ソフトウェア・モジュールは、異なるプラットフォームまたはオペレーティング・システム上で実行しているアプリケーションで使用できる。CORBAオブジェクトとそのデータ形式、およびファンクションは、Java、C、C++、Smalltalk、COBOLなどの様々な言語にコンパイルできるインタフェース定義言語(Interface Definition Language: IDL)で定義される。

用語集用語集用語集用語集 -11

Page 364: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

共通ゲートウェイ・インタフェース(共通ゲートウェイ・インタフェース(共通ゲートウェイ・インタフェース(共通ゲートウェイ・インタフェース(Common Gateway Interface: CGI))))

Webサーバーが他のプログラムを実行し、ブラウザに送信された HTMLページ、図形、オーディオおよびビデオに出力を渡すことを可能にするプログラム・インタフェース。

クライアントクライアントクライアントクライアント /サーバー(サーバー(サーバー(サーバー(client-server))))

実際のアプリケーションはクライアント側で実行するが、ネットワークを介して、サーバー側のデータまたは他の外部プロセスにアクセスするアプリケーション・アーキテクチャを表す用語。

結果セット(結果セット(結果セット(結果セット(result set))))

1行以上のデータで構成される SQL問合せの出力。

構造化問合せ言語(構造化問合せ言語(構造化問合せ言語(構造化問合せ言語(Structured Query Language: SQL))))

リレーショナル・データベース内のデータをアクセスおよび処理するために使用する標準言語。

コールバック(コールバック(コールバック(コールバック(callback))))

1つのプロセスに他のプロセスを開始させ、それを継続させるプログラム方法。2番目のプロセスは、アクションの結果、値または他のイベントとして 1番目のプロセスをコールする。この方法は、継続的な対話を許可するユーザー・インタフェースを持つほとんどのプログラムに使用されている。

コマンドライン(コマンドライン(コマンドライン(コマンドライン(command line))))

ユーザーがコマンド・インタプリタのプロンプトにコマンドを入力するインタフェース・メソッド。

子要素(子要素(子要素(子要素(child element))))

親要素という別の要素内に全体が含まれた要素。たとえば、<Parent><Child></Child></Parent>は、Child要素がその Parent要素内にネストされていることを示す。

サーバー側インクルード(サーバー側インクルード(サーバー側インクルード(サーバー側インクルード(Server-Side Include: SSI))))

データまたは他の内容を、要求元ブラウザに送信する前にWebページに置くHTMLコマンド。

サーブレット(サーブレット(サーブレット(サーブレット(servlet))))

サーバー(通常はWebまたはアプリケーション・サーバー)内で実行する Javaアプリケーション。サーブレットは、CGIスクリプトに相当する Javaである。

スキーマ(スキーマ(スキーマ(スキーマ(schema))))

データベース内の構造およびデータ型の定義。スキーマは、XML SchemaのW3C勧告をサポートする XMLドキュメントも示す。

用語集用語集用語集用語集 -12

Page 365: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

スタイルシート(スタイルシート(スタイルシート(スタイルシート(Stylesheet))))

XMLでは、XML処理命令で構成される XMLドキュメントを示す用語。XML処理命令は、入力 XMLドキュメントを出力 XMLドキュメントに変換またはフォーマットするために、XMLプロセッサによって使用される。

スレッド(スレッド(スレッド(スレッド(thread))))

プログラミングにおける、Windows、UNIX、Javaなどの複数のオペレーティング・システムをサポートするオペレーティング・システム内の、単一のメッセージまたはプロセス実行パス。

整形式(整形式(整形式(整形式(well-formed))))

XMLドキュメントが、XML宣言で宣言された XMLバージョンの構文に準拠している状態を示す用語。これには、ルート要素が単一か、タグが適切にネストされているかなどが含まれる。

セキュア・ソケット・レイヤー(セキュア・ソケット・レイヤー(セキュア・ソケット・レイヤー(セキュア・ソケット・レイヤー(Secure Sockets Layer: SSL))))

インターネット上のプライマリ・セキュリティ・プロトコル。ブラウザとサーバー間の暗号化形式に、公開鍵 /秘密鍵を使用する。

セッション(セッション(セッション(セッション(session))))

2つの層の間のアクティブ接続。

属性(属性(属性(属性(attribute))))

要素のプロパティ。等号で区切られた名前および値で構成され、開始タグ内の要素名の後に含まれる。たとえば、<Price units=’USD’>5</Price>では、units(単位)が属性で USDがその値である。値は、一重または二重引用符で囲む必要がある。属性は、ドキュメントまたは DTD内に格納できる。要素には多くの属性を指定できるが、その取得順序は定義されない。

タグ(タグ(タグ(タグ(tag))))

XMLマークアップの単一のピース。要素の開始または終了を指定する。タグは、<で始まり>で終わる。XMLには、開始タグ(<name>)、終了タグ(</name>)および空タグ(<name/>)がある。

妥当(妥当(妥当(妥当(valid))))

XMLドキュメントの構造および要素内容が、参照 DTDまたは内部 DTDで宣言されたものと一貫している状態を示す用語。

データグラム(データグラム(データグラム(データグラム(datagram))))

XSQL Servletが処理した SQL問合せから、HTMLページに埋め込まれたリクエスタに戻されるテキストのフラグメント。XML形式の場合もある。

用語集用語集用語集用語集 -13

Page 366: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

データベース・アクセス記述子(データベース・アクセス記述子(データベース・アクセス記述子(データベース・アクセス記述子(Database Access Descriptor: DAD))))

データベース・アクセスに使用される、名前付きの一連の構成値。DADは、データベース名や SQL*Net V2サービス名などの情報、ORACLE_HOMEディレクトリ、および言語、ソート型、日付言語などの NLS構成情報を指定する。

統合開発環境(統合開発環境(統合開発環境(統合開発環境(Integrated Development Environment: IDE))))

ソフトウェアの開発を支援するために設計された、単一のユーザー・インタフェースから実行されるプログラム・セット。JDeveloperは、Java開発用の IDEであり、エディタ、コンパイラ、デバッガ、構文チェッカ、ヘルプ・システムなどを含む。JDeveloperを使用すると、単一のユーザー・インタフェースを介して Javaソフトウェアを開発できる。

ドキュメント・オブジェクト・モデル(ドキュメント・オブジェクト・モデル(ドキュメント・オブジェクト・モデル(ドキュメント・オブジェクト・モデル(Document Object Model: DOM))))

XMLドキュメントのメモリー内ツリーベースのオブジェクト表現。要素および属性へのプログラム・アクセスを可能にする。DOMオブジェクトおよびそのインタフェースは、W3C勧告である。プログラム・アクセス用の APIなど、XMLドキュメントの DOMを指定する。DOMは、解析対象ドキュメントをオブジェクトのツリーとして表示する。

トランスミッション・コントロール・プロトコルトランスミッション・コントロール・プロトコルトランスミッション・コントロール・プロトコルトランスミッション・コントロール・プロトコル /インターネット・プロトコルインターネット・プロトコルインターネット・プロトコルインターネット・プロトコル((((Transmission Control Protocol/Internet Protocol: TCP/IP))))

TCPで構成される通信ネットワーク・プロトコル。TCPは、トランスポート機能、およびルーティング・メカニズムを提供する IPを制御する。TCP/IPは、インターネット通信の標準である。

名前空間(名前空間(名前空間(名前空間(namespace))))

XMLドキュメント内にある、関連する一連の要素名または属性を示す用語。名前空間の構文およびその使用方法は、W3C勧告によって定義されている。たとえば<xsl:apply-templates/ >要素は、XSL名前空間の一部として識別される。名前空間は、XMLドキュメントまたは DTD内で、属性の構文 xmlns:xsl="http://www.w3.org/TR/WD-xsl"を宣言してから宣言される。

バイナリ・ラージ・オブジェクト(バイナリ・ラージ・オブジェクト(バイナリ・ラージ・オブジェクト(バイナリ・ラージ・オブジェクト(Binary Large Object: BLOB))))

内容がバイナリ・データで構成されたラージ・オブジェクト・データ型。このデータは、データ構造がデータベースに認識されないため、RAW型とみなされる。

ハイパー・テキスト(ハイパー・テキスト(ハイパー・テキスト(ハイパー・テキスト(hypertext))))

ユーザーがハイパーリンクとして指定されたワードまたは句を選択して、他のドキュメントまたは図形間を操作できるテキスト・ドキュメントを作成および公開する方法。

ハイパー・テキスト転送プロトコル(ハイパー・テキスト転送プロトコル(ハイパー・テキスト転送プロトコル(ハイパー・テキスト転送プロトコル(Hypertext Transport Protocol: HTTP))))

インターネットを介して、Webサーバーとブラウザ間で HTMLファイルを転送するために使用するプロトコル。

用語集用語集用語集用語集 -14

Page 367: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

ハイパー・テキスト・マークアップ言語(ハイパー・テキスト・マークアップ言語(ハイパー・テキスト・マークアップ言語(ハイパー・テキスト・マークアップ言語(Hypertext Markup Language: HTML))))

Webブラウザに送信するファイルを作成するために使用し、Webの基礎として機能するマークアップ言語。HTMLの次のバージョンは xHTMLと呼ばれ、XMLアプリケーションになる予定である。

表記法(表記法(表記法(表記法(NOTATION))))

XMLでは、パーサーが理解できない内容の型の定義。これらの型には、オーディオ、ビデオおよび他のマルチメディアが含まれる。

標準汎用マークアップ言語(標準汎用マークアップ言語(標準汎用マークアップ言語(標準汎用マークアップ言語(Standard Generalized Markup Language: SGML))))

マークアップおよび DTDを使用して実装された、テキスト・ドキュメントの書式を定義するための ISO標準。

プロローグ(プロローグ(プロローグ(プロローグ(prolog))))

XML宣言および DTD、またはドキュメントを処理するために必要な他の宣言を含む、XMLドキュメントの最初の部分。

文書型定義(文書型定義(文書型定義(文書型定義(Document Type Definition: DTD))))

XMLドキュメントの使用可能な構造を定義する一連の規則。DTDは、SGMLから書式を導出し、DOCTYPE要素を使用するか、または DOCTYPE参照を介して外部ファイルを使用して XMLドキュメント内に含めることができるテキスト・ファイルである。

モード(モード(モード(モード(mode))))

XMLでは、DOMツリー内のアドレス指定可能な各エンティティを示す用語。

文字データ(文字データ(文字データ(文字データ(Character Data: CDATA))))

ドキュメント内の解析対象外のテキストは、CDATAセクションに格納される。これによって、&、<、>などの、他に特別な機能を持つ文字を含めることができる。CDATAセクションは、要素の内容または属性内で使用できる。

ユーザー・インタフェース(ユーザー・インタフェース(ユーザー・インタフェース(ユーザー・インタフェース(User Interface: UI))))

メニュー、スクリーン、キーボード・コマンド、マウス・クリック、およびユーザーによるソフトウェア・アプリケーションとの対話方法を定義するコマンド言語の組合せ。

ユニフォーム・リソース識別子(ユニフォーム・リソース識別子(ユニフォーム・リソース識別子(ユニフォーム・リソース識別子(Uniform Resource Identifier: URI))))

URLおよび XPathを作成するために使用するアドレス構文。

ユニフォーム・リソース・ロケータ(ユニフォーム・リソース・ロケータ(ユニフォーム・リソース・ロケータ(ユニフォーム・リソース・ロケータ(Uniform Resource Locator: URL))))

インターネット上のファイルの場所およびルートを定義するアドレス。URLは、Webをナビゲートするためにブラウザによって使用され、プロトコル接頭辞、ポート番号、ドメイン名、ディレクトリ名とサブディレクトリ名、およびファイル名で構成される。

用語集用語集用語集用語集 -15

Page 368: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

要素(要素(要素(要素(element))))

XMLドキュメントの基本論理単位。子、データ、属性とその値などの他の要素に対するコンテナとして機能する。要素は、開始タグ <name>および終了タグ </name>、または空要素の場合、<name/>によって識別される。

ラージ・オブジェクト(ラージ・オブジェクト(ラージ・オブジェクト(ラージ・オブジェクト(Large Object: LOB))))

内部 LOBおよび外部 LOBに分割された SQLデータ型のクラス。内部 LOBには BLOB、CLOBおよび NCLOBが含まれ、外部 LOBには BFILEが含まれる。「BFILE」、「バイナリ・ラージ・オブジェクト(Binary Large Object: BLOB)」および「キャラクタ・ラージ・オブジェクト(Character Large Object: CLOB)」を参照。

ラッパー(ラッパー(ラッパー(ラッパー(Wrapper))))

通常、汎用またはオブジェクト・インタフェースを提供するために、他のデータまたはソフトウェアをラップするデータ構造またはソフトウェアを示す用語。

リスナー(リスナー(リスナー(リスナー(listener))))

入力プロセスを監視する個別のアプリケーション・プロセス。

ルート要素(ルート要素(ルート要素(ルート要素(root element))))

XMLドキュメント内にある他のすべての要素を囲む要素。オプションのプロローグとエピローグの間に存在する。XMLドキュメントには、1つのルート要素のみ置くことができる。

レンダラ(レンダラ(レンダラ(レンダラ(renderer))))

ドキュメントを指定された形式に出力するソフトウェア・プロセッサ。

ローカル・エリア・ネットワーク(ローカル・エリア・ネットワーク(ローカル・エリア・ネットワーク(ローカル・エリア・ネットワーク(Local Area Network: LAN))))

限定された地域内のユーザー用のコンピュータ通信ネットワーク。LANは、サーバー、ワークステーション、通信ハードウェア(ルーター、ブリッジ、ネットワーク・カードなど)およびネットワーク・オペレーティング・システムで構成される。

ワーキング・グループ(ワーキング・グループ(ワーキング・グループ(ワーキング・グループ(Working Group: WG))))

特定のインターネット・テクノロジ分野における勧告を実行する業界のメンバーで構成されたW3Cの委員会。

ワイド・エリア・ネットワーク(ワイド・エリア・ネットワーク(ワイド・エリア・ネットワーク(ワイド・エリア・ネットワーク(Wide Area Network: WAN))))

州や国などの広域内のユーザー用のコンピュータ通信ネットワーク。WANは、サーバー、ワークステーション、通信ハードウェア(ルーター、ブリッジ、ネットワーク・カードなど)およびネットワーク・オペレーティング・システムで構成される。

用語集用語集用語集用語集 -16

Page 369: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

索引索引索引索引

AAPI,用語集 -1

BB2B,用語集 -1B2Bの定義,用語集 -1B2Cの定義,用語集 -1BC4Jの定義,用語集 -1BLOBの定義,用語集 -14Business Components for Javaの定義,用語集 -1

CCDATAセクション,16-48CDATAの定義,用語集 -15CGIの定義,用語集 -12Class Generator for Java,17-1,17-2Class Generator for Javaの FAQ,17-17Class Generator、比較,B-4CLASSPATH,18-11CLASSPATHの定義,用語集 -2CLOB内の XML,20-25CLOBの定義,用語集 -11CLOB、XML,20-25Common Oracle Runtime Environmentの定義,

用語集 -2Cookie,18-57CORBAの定義,用語集 -11COREの定義,用語集 -2

DDADの定義,用語集 -14

DBMS_XMLQuery、PL/SQLパッケージ,E-11DBMS_XMLSave、PL/SQLパッケージ,E-11DOCTYPEノード、作成,16-52DOCTYPEの定義,用語集 -2DOM API,16-49DOM APIおよび SAX API,16-6DOM API、使用,20-27DOM Builder Bean,19-2,19-4domsample,20-9DOMインタフェース,20-5DOMの定義,用語集 -14DTDのキャッシュ,16-45DTDの定義,用語集 -15

EEJBの定義,用語集 -2Enterprise Java Beanの定義,用語集 -2eXtensible Stylesheet Language Formatting Objectの定

義,用語集 -3eXtensible Stylesheet Language Transformationの定

義,用語集 -3

FFAQ、XML Parser for PL/SQL,20-19FAQ、XSQL Servlet,18-39

GgetNodeValue(),20-39

HHP/UX,16-94

索引索引索引索引 -1

Page 370: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

HTMLエラー,16-84HTMLの解析,20-37HTMLの定義,用語集 -15HTMLへの XMLの変換,16-93HTTPの定義,用語集 -14

IIDEの定義,用語集 -14IIOPの定義,用語集 -3interMediaの定義,用語集 -3Internet File Systemの定義,用語集 -3

JJava Beanの定義,用語集 -4Java Database Connectivityの定義,用語集 -4Java Runtime Environmentの定義,用語集 -4JAVASYSPRIV、権限付与,16-80Javaの定義,用語集 -3JDBCの定義,用語集 -4JDeveloperの定義,用語集 -4JDK,16-72JDKの定義,用語集 -4JREの定義,用語集 -4JRunおよび XSQL Servlet,18-49JSPの定義,用語集 -4JVM,20-24JVMの定義,用語集 -4

LLANの定義,用語集 -16Linux,20-29LOBの定義,用語集 -16

NNamespace、XML,16-4N層の定義,用語集 -5

OOAGの定義,用語集 -5OAIの定義,用語集 -5OASISの定義,用語集 -6OASの定義,用語集 -6

OEの定義,用語集 -5OISの定義,用語集 -6Open Applications Groupの定義,用語集 -5Oracle Applilcation Serverの定義,用語集 -6Oracle Exchangeの定義,用語集 -5Oracle Integration Serverの定義,用語集 -6Oracle XML Parser,16-38Oracle XML Parser、比較,B-2Oracle XSL Processor,16-38ORACLE_HOMEの定義,用語集 -6Oracle8i JVM,20-24Oracle8i JVMの定義,用語集 -6oracle.xml.async API,19-4,19-8OracleXMLQuery()、XSUクラス,E-7OracleXMLSave()、XSUクラス,E-6OracleXMLSQLException()、XSUクラス,E-10oracle.xml.srcviewer API,19-13oracle.xml.transviewer API,19-17oraxml,16-38oraxsl,16-38OraXSL Parser,16-83ORBの定義,用語集 -10OUT変数,18-54

PParser for Java,16-1Parser for PL/SQL,20-1PCDATAの定義,用語集 -11PL/SQL Parser,20-1PL/SQLの定義,用語集 -6PUBLICの定義,用語集 -6

SSAX,16-2SAX API,16-6,16-53SAXNamespace()クラス,16-34SAXParser()クラス,16-21SAXSample.java,16-54SAXの定義,用語集 -7Schema、XML、定義,16-71Servletの条件文,18-40Servlet、XSQL,18-1SGMLの定義,用語集 -15Simple API for XMLの定義,用語集 -7Source Viewer Bean,19-3

索引索引索引索引 -2

Page 371: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

SQLの定義,用語集 -12SSIの定義,用語集 -12SSLの定義,用語集 -13System.out.primtln(),16-74SYSTEMの定義,用語集 -7

TTCP/IPの定義,用語集 -14Transformer Bean,19-3Transviewer Beans,19-1Tree Viewer Bean,19-3Treeviewer Bean,19-12

UUIの定義,用語集 -15URIの定義,用語集 -15URLの解析,20-37URLの定義,用語集 -15UTF-16エンコーディング,16-64

WW3C DOM API,D-10W3Cの XML勧告勧告、W3C,A-2

W3Cの定義,用語集 -8WANの定義,用語集 -16Web Request Brokerの定義,用語集 -8Webサーバー

Java,18-46WGの定義,用語集 -16World Wide Web Consortiumの定義,用語集 -8WRBの定義,用語集 -8wrong_document_err,16-57

XXDKの定義,用語集 -8XDKのバージョン番号,16-72XLinkの定義,用語集 -8XML推奨書籍,16-92

XML Class Generator for Java,17-2XML Class Generatorの定義,用語集 -8XML Class Generator、比較,B-4

XML Developer’s Kitの定義,用語集 -8XML Namespace,16-4

Namespace、XML,A-2XML Parser for Java,16-1XML Parser for PL/SQL,20-1XML Parser for PL/SQLに関する FAQ,20-19XML Parserおよび Class Generator、比較,B-1XML Parserのアンインストール,16-68XML Query

Query、XML,A-2XML Queryの定義,用語集 -8XML Schema,A-2XML Schemaに対する検証,16-70XML Schemaの定義,16-71,用語集 -8XML Source Viewer Bean,19-3XML Transviewer Beans,19-2XML Transviewer Beansの定義,用語集 -8xmlgen,18-46XMLNode.selectNodes()メソッド,16-52XMLSourceView Bean,19-13XMLTransformPanel Bean,19-3XMLTransformPanel() Bean,19-17XMLTreeView() API,19-12XMLから HTML、変換,16-93XMLから Javaへのオブジェクト・マッピング,17-17XML機能機能、XML,A-4

XMLグループ,A-3XMLツリー、全検索,16-50XMLドキュメントのマージ,16-77XMLドキュメント、子として追加,16-65XMLの定義,用語集 -11XMLパーサーの定義,用語集 -9XMLベースの標準,A-3XPath,A-2XPathの定義,用語集 -9XPointer,A-2XPointerの定義,用語集 -9XSL推奨書籍,16-92

XSL Transformation(XSLT)Processor,16-4XSL Transformer Bean,19-3XSLFOの定義,用語集 -3xslsample,20-10XSLT,16-4XSLT Processor,16-26,20-5XSLT Processor API,D-8

索引索引索引索引 -3

Page 372: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

XSLTの定義,用語集 -3XSLの定義,用語集 -11XSQL Page Processorアーキテクチャ,18-18XSQL Pages,18-10XSQL Servlet,18-1XSQL Servletおよび JRun,18-49XSQL Servletとリモート・データベースの接続,18-46XSQL Servletの FAQ,18-39XSQLConfig.xml,18-38XSQL コマンドライン・ユーティリティ,18-15XSQLの定義,用語集 -9XSQLを使用したチューニング,18-38

ああああアーキテクチャ、XSQL Page Processor,18-18アプリケーション・サーバー,用語集 -10アプリケーション・プログラム・インタフェースの定

義,用語集 -1

いいいいイベントベース API,16-6インスタンス化の定義,用語集 -10

ええええエラー、HTML,16-84エンティティの定義,用語集 -10

おおおお大文字 /小文字の識別、パーサー,16-48オブジェクト・ビューの定義,用語集 -10オブジェクト・マッピング、XMLから Java,17-17オブジェクト・リレーショナルの定義,用語集 -10親要素の定義,用語集 -10

かかかかカートリッジの定義,用語集 -11解析エラー,20-36拡張可能スタイルシート言語の定義,用語集 -11拡張可能マークアップ言語

XML,A-2カスケーディング・スタイルシート,用語集 -2

各国語キャラクタ・ラージ・オブジェクトの定義,用語集 -11

空要素の定義,用語集 -11

きききき共通オブジェクト要求ブローカ APIの定義,

用語集 -11

くくくく組込みアクション・ハンドラ、XSQL,18-28クライアント /サーバーの定義,用語集 -12

けけけけ結果セットの定義,用語集 -12検証モード,16-4

ここここコールバックの定義,用語集 -12子としての XMLドキュメントの追加,16-65コマンドライン・インタフェース,16-38

ささささサーバー側インクルードの定義,用語集 -12サーブレットの定義,用語集 -12最初の子ノード - 値,16-55

しししし自動移入,17-17出力のエスケープ,16-76

すすすすスキーマの定義,用語集 -12スタイルシートの定義,用語集 -13スレッドの定義,用語集 -13

せせせせ整形式の定義,用語集 -13セッションの定義,用語集 -13接続定義,18-12

索引索引索引索引 -4

Page 373: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

そそそそ属性の定義,用語集 -13

たたたたタグ値、取得,16-79タグの定義,用語集 -13妥当の定義,用語集 -13

ちちちちチャネル定義書式の定義,用語集 -1

つつつつツリーベース API,16-6

ててててデータグラムの定義,用語集 -13データベース・アクセス記述子の定義,用語集 -14テキスト表記規則,xix

電子データ交換の定義,用語集 -2

とととと統合開発環境の定義,用語集 -14動的 SQLおよび XSQL Servlet,18-53ドキュメント・オブジェクト・モデルの定義,

用語集 -14ドキュメント解析中のエラー,20-36特殊文字,16-74

なななな名前空間の定義,用語集 -14

ののののノード値設定時の DOMException,16-59ノードの作成,16-50

ははははパーサーの大文字 /小文字の識別,16-48

パーサー、XML,16-2パーソナル・デジタル・アシスタントの定義,

用語集 -6バイナリ・データ,16-71,16-93バイナリ・ラージ・オブジェクトの定義,用語集 -14ハイパー・テキスト転送プロトコルの定義,用語集 -14ハイパー・テキストの定義,用語集 -14ハイパー・テキスト・マークアップ言語の定義,

用語集 -15早見表、XDK for PL/SQL,D-1

ひひひひ非検証モード,16-4表記法の定義,用語集 -15

ふふふふ複数スレッドでのドキュメントのクローン,16-61複数の XMLドキュメント、デリミタ付け,16-76複数の出力,16-92複数フォーム、ロード,18-61ブラウザ Cookie,18-57プロローグの定義,用語集 -15文書型定義の定義,用語集 -15

めめめめメモリー・エラー,20-25メモリー不足のエラー,20-25

ももももモードの定義,用語集 -15文字データからのアンパサンド、取得,16-75文字列の解析,16-74

ゆゆゆゆユーザー・インタフェースの定義,用語集 -15ユニフォーム・リソース識別子の定義,用語集 -15ユニフォーム・リソース・ロケータの定義,用語集 -15

よよよよ用語集,用語集 -1要素の定義,用語集 -16

索引索引索引索引 -5

Page 374: Oracle8iアプリケーション開発者ガイド - XML …...(Artesia Technologies, Inc. )、Steve Muench、Visar Nimani、Paul Nock 、Rajesh Raheja 、Tomas Saulys、Mark Scardina、Flora

ららららラッパーの定義,用語集 -16

りりりりリスナーの定義,用語集 -16リソース記述フレームワークの定義,用語集 -7

るるるるルート要素の定義,用語集 -16

れれれれレンダラの定義,用語集 -16

ろろろろローカル・エリア・ネットワークの定義,用語集 -16

わわわわワイド・エリア・ネットワークの定義,用語集 -16

索引索引索引索引 -6