296 XMLTYPE

XMLTypeは、XMLデータ処理用のシステム定義の不透明なタイプです。XMLノードおよびフラグメントを抽出するためのメンバー・ファンクションが事前定義されています。

XMLTypeの列を作成し、その中にXML文書を挿入することができます。SYS_XMLAGG SQLファンクションを使用して、XMLドキュメントをXMLTypeインスタンスとして動的に生成することもできます。

この章のトピックは、次のとおりです:

296.1 XMLTypeサブプログラムの要約

この表は、XMLTypeのファンクションおよびプロシージャの要約を示しています。

表296-1 XMLTYPEのサブプログラム

メソッド 説明

CREATENONSCHEMABASEDXML

入力スキーマに基づいたインスタンスから非スキーマ・ベースのXMLを作成します。

CREATESCHEMABASEDXML

入力スキーマURLを使用し、非スキーマ・ベースのインスタンスからスキーマ・ベースのXMLTypeインスタンスを作成します。

CREATEXML

XMLTypeインスタンスを作成して、戻すための静的なファンクション。

EXISTSNODE

XMLTypeインスタンスおよびXPathインスタンスを参照して、XPathを適用した場合に空でないノードのセットが戻されるかどうかを1または0を戻して示します。

EXTRACT

XMLTypeインスタンスおよびXPathインスタンスを参照し、XPath式を適用して結果をXMLTypeで戻します。

GETBLOBVAL

XMLTypeインスタンスの値をBLOBで戻します。

GETCLOBVAL

XMLTypeインスタンスの値をCLOBで戻します。

GETNAMESPACE

スキーマ・ベースのドキュメントの最上位要素のネームスペースを戻します。

GETNUMBERVAL

XMLTypeインスタンスの値をNUMBERで戻します。入力XMLTypeインスタンスがシンプルなテキスト・ノードで構成されており、数値に変換可能である場合にのみ有効です。

GETROOTELEMENT

入力インスタンスのルート要素を戻します。インスタンスがフラグメントの場合はNULLを戻します。

GETSCHEMAURL

入力がXMLスキーマ・ベースである場合は、XMLスキーマURLを戻します。

GETSTRINGVAL

XMLTypeインスタンスの値を文字列で戻します。

ISFRAGMENT

入力XMLTypeインスタンスがフラグメントかどうかをチェックします。フラグメントとは、複数のルート要素を持つXMLインスタンスです。

ISSCHEMABASED

入力XMLTypeインスタンスがスキーマ・ベースであるかどうかを1または0を戻して示します。

ISSCHEMAVALID

指定されたスキーマURLに基づき、入力インスタンスが有効なスキーマであるかどうかをチェックします。

ISSCHEMAVALIDATED

インスタンスがスキーマと照合して検証されているかどうかをチェックします。

SCHEMAVALIDATE

XMLスキーマに基づいて入力インスタンスを検証します。入力スキーマが非スキーマ・ベースの場合はエラーが発生します。

SETSCHEMAVALIDATED

手間のかかるスキーマ検証を省くために、スキーマが有効であることを示すフラグを設定します。

TOOBJECT

XMLTypeインスタンスをオブジェクト・タイプに変換します。

TRANSFORM

XMLTypeインスタンスと関連するスタイルシート(これもXMLTypeインスタンス)を参照し、スタイルシートを適用して結果をXMLで戻します。

XMLTYPE

XMLTypeデータ・タイプのインスタンスを構成します。コンストラクタはXMLをCLOBVARCHAR2として、またはオブジェクト・タイプとして取り込みます。

296.1.1 CREATENONSCHEMABASEDXML

このメンバー・ファンクションは、スキーマ・ベースのインスタンスから非スキーマ・ベースのXML文書を作成します。

構文

MEMBER FUNCTION CREATENONSCHEMABASEDXML
return XMLType deterministic;

296.1.2 CREATESCHEMABASEDXML

このメンバー・ファンクションは、非スキーマ・ベースのXMLType値からスキーマ・ベースのXMLTypeインスタンスを作成します。

付属のSCHEMA URL、またはインスタンスのSCHEMALOCATION属性のいずれかを使用します。

構文

MEMBER FUNCTION createSchemaBasedXML(
schema IN varchar2 := NULL)
return XMLType deterministic;

表296-2 CREATESCHEMABASEDXMLサブプログラムのパラメータ

パラメータ 説明

schema

値を指定されたスキーマに変換するために使用する、オプションのXMLSchema URL。

296.1.3 CREATEXML

この静的なファンクションは、XMLTypeインスタンスを作成して戻します。日付を渡すための文字列とCLOBパラメータには、適切な構成で有効なXML文書が含まれている必要があります。

指定できるオプションは、次の表のとおりです。

表296-3 CREATEXMLのサブプログラム

構文 説明

STATIC FUNCTION createXML(

xmlData IN varchar2)

RETURN XMLType deterministic;

文字列からXMLTypeインスタンスを作成します。

STATIC FUNCTION createXML(

   xmlData IN clob)

RETURN XMLType deterministic;

CLOBからXMLTypeインスタンスを作成します。

STATIC FUNCTION createXML (

   xmlData IN clob,

   schema IN varchar2,

   validated IN number := 0,

   wellformed IN number := 0 )

RETURN XMLType deterministic;

指定されたスキーマとXMLデータ・パラメータを使用して、静的なファンクションから、スキーマ・ベースのXMLTypeインスタンスを作成します。

STATIC FUNCTION createXML(

   xmlData IN varchar2,

   schema IN varchar2,

   validated IN number := 0,

   wellformed IN number := 0)

RETURN XMLType deterministic;

指定されたスキーマとXMLデータ・パラメータを使用して、静的なファンクションから、スキーマ・ベースのXMLTypeインスタンスを作成します。

STATIC FUNCTION createXML (

   xmlData IN "<ADT_1>",

   schema IN varchar2 := NULL,

   element IN varchar2 := NULL,

   validated IN NUMBER := 0)

RETURN XMLType deterministic;

ユーザー定義タイプのインスタンスからXMLインスタンスを作成します。

STATIC FUNCTION createXML(

xmlData IN SYS_REFCURSOR,

schema in varchar2 := NULL,

element in varchar2 := NULL,

   validated in number := 0)

RETURN XMLType deterministic;

カーソル参照からXMLインスタンスを作成します。任意のSQL問合せをCURSORとして渡すことができます。

STATIC FUNCTION createXML (

   xmlData IN AnyData,

schema in varchar2 := NULL,

element in varchar2 := NULL,

   validated in number := 0)

RETURN sys.XMLType deterministic

   parallel_enable

ANYDATAからXMLインスタンスを作成します。ANYDATAインスタンスにADTが含まれている場合、ADTを直接コールした場合の結果と同じXMLTypeが戻されます。ANYDATAにスカラーが含まれている場合は、XMLTypeにはスカラー値が設定されたリーフ・ノードが含まれます。このノードの要素名は、オプションの要素文字列が存在する場合、そこから付けられます。存在しない場合は、ANYDATAとなります。

STATIC FUNCTION createXML (

   xmlData IN blob,

   csid IN number,

   schema IN varchar2,

   validated IN number := 0,

   wellformed IN number := 0)

return sys.XMLType deterministic

BLOBからXMLインスタンスを作成します。

STATIC FUNCTION createXML (

   xmlData IN bfile,

   csid IN number,

   Schema IN varchar2,

   validated IN number := 0,

   wellformed IN number := 0)

return sys.XMLType deterministic

BFILEからXMLインスタンスを作成します。

表296-4 CREATEXMLのパラメータ

パラメータ 説明

xmlData

BFILEBLOBCLOBREFカーソル、VARCHAR2またはオブジェクト・タイプの形式に含まれる実際のデータ。

schema

指定されたスキーマに応じた入力を行うための、オプションのスキーマURL。注意: オラクル社は、スキーマ登録によって生成されたタイプの使用をサポートしません(『Oracle XML DB開発者ガイド』を参照)。

validated

指定されたXMLスキーマに基づき、インスタンスが有効であることを示すフラグ。(デフォルトは0です。)

wellformed

入力が適切に構成されていることを示すフラグ。設定すると、入力インスタンスに対する構成チェックは行われません(デフォルトは0です。)

element

ADT_1またはREF CURSORコンストラクタの場合のオプションの要素名。(デフォルトはNULLです)。注意: オラクル社は、スキーマ登録によって生成されたタイプの使用をサポートしません(『Oracle XML DB開発者ガイド』を参照)。

csid

入力XMLデータの文字セットID。

296.1.4 EXISTSNODE

このメンバー・ファンクションは、ノードが存在するかどうかをチェックします。

XPath文字列がNULLの場合、またはドキュメントが空の場合、0という値が戻されます。それ以外の場合は、1が戻されます。

指定できるオプションは、次の表のとおりです。

構文 説明

MEMBER FUNCTION existsNode(

   xpath IN varchar2)

RETURN number deterministic;

指定されたXPath式に基づき、文書に適用されたXPathが有効なノードを戻せるかどうかをチェックします。

MEMBER FUNCTION existsNode(

   xpath in varchar2,

   nsmap in varchar2)

RETURN number deterministic;

このメンバー・ファンクションは、ネームスペースの情報が設定されたXPath式を使用し、XPathを適用するとノードを戻すかどうかをチェックします。

表296-5 EXISTSNODEサブプログラムのパラメータ

パラメータ 説明

xpath

テストするXPath式。

nsmap

ネームスペースのマッピング(オプション)。

296.1.5 EXTRACT

このメンバー・ファンクションは、XMLTypeフラグメントを抽出し、結果のノードを含むXMLTypeインスタンスを戻します。ノードが含まれていない場合は、NULLを戻します。

指定できるオプションは、次の表のとおりです。

構文 説明

MEMBER FUNCTION extract(

   xpath IN varchar2)

RETURN XMLType deterministic;

指定されたXPath式に基づいてXPathを文書に適用し、フラグメントをXMLTypeとして戻します。

MEMBER FUNCTION extract(

   xpath IN varchar2,

   nsmap IN varchar2)

RETURN XMLType deterministic;

このメンバー・ファンクションは、XPath式とネームスペースのマッピングをXMLデータに適用し、結果のフラグメントを含むXMLTypeインスタンスを戻します。

表296-6 EXTRACTサブプログラムのパラメータ

パラメータ 説明

xpath

適用するXPath式。

nsmap

ネームスペースのマッピング情報に対するオプションの接頭辞。

296.1.6 GETBLOBVAL

このメンバー・ファンクションは、シリアル化されたXML表現が含まれるBLOBを戻します。戻されたBLOBが一時的なものである場合、使用後に解放する必要があります。

構文

MEMBER FUNCTION getBlobVal(
   csid   IN   NUMBER)
 RETURN BLOB DETERMINISTIC;

表296-7 GETBLOBVALサブプログラムのパラメータ

パラメータ 説明

csid

出力BLOBの必要な文字セットID。

296.1.7 GETCLOBVAL

このメンバー・ファンクションは、シリアル化されたXML表現が含まれるCLOBを戻します。戻されたCLOBが一時的なものである場合、使用後に解放する必要があります。

構文

MEMBER FUNCTION getClobVal()
RETURN clob deterministic;

296.1.8 GETNAMESPACE

GETNAMESPACEはメンバー・セット関数です。インスタンスで最上位要素のネームスペースを戻します。入力がフラグメントの場合、または非スキーマ・ベースのインスタンスの場合は、NULLが戻されます。

構文

MEMBER FUNCTION getNamespace
return varchar2 deterministic;

296.1.9 GETNUMBERVAL

これはメンバー・ファンクションです。XMLTypeインスタンスによりポイントされたテキスト値からフォーマットした数値を戻します。XMLTypeは、数値を含む有効なテキスト・ノードをポイントする必要があります。

指定できるオプションは、次の表のとおりです。

構文

MEMBER FUNCTION getNumberVal()
RETURN number deterministic;

296.1.10 GETROOTELEMENT

このメンバー・ファンクションは、XMLTypeインスタンスのルート要素を取得します。インスタンスがフラグメントの場合はNULLを戻します。

構文

MEMBER FUNCTION getRootElement
return varchar2 deterministic;

296.1.11 GETSCHEMAURL

このメンバー・ファンクションは、XMLTypeインスタンスがスキーマ・ベースの文書である場合、XMLTypeインスタンスに対応するXMLスキーマのURLを戻します。それ以外の場合はNULLを戻します。

構文

MEMBER FUNCTION getSchemaURL
return varchar2 deterministic;

296.1.12 GETSTRINGVAL

このメンバー・ファンクションは、文字列としてドキュメントを戻します。シリアル化されたXML表示を含む文字列を戻します。またはテキスト・ノードの場合、テキスト自体を戻します。

XMLドキュメントがVARCHAR2の最大サイズ(4000)を超える場合、ランタイム時にエラーが発生します。

構文

MEMBER FUNCTION getStringVal()
RETURN varchar2 deterministic;

296.1.13 ISFRAGMENT

ISFRAGMENTは、XMLTypeインスタンスが適切に構成された文書またはフラグメントに対応しているかどうかを判別します。XMLTypeインスタンスにフラグメントまたは適切に構成された文書が含まれているかどうかを1または0を戻して示します。

構文

MEMBER FUNCTION isFragment()
RETURN number deterministic;

296.1.14 ISSCHEMABASED

このメンバー・ファンクションは、XMLTypeインスタンスがスキーマ・ベースかどうかを判別します。XMLTypeインスタンスがスキーマ・ベースであるかどうかに基づいて、1または0を戻します。

構文

MEMBER FUNCTION isSchemaBased
return number deterministic;

296.1.15 ISSCHEMAVALID

このメンバー・ファンクションは、入力インスタンスが指定されたスキーマに準拠しているかどうかをチェックします。XMLインスタンスの検証ステータスは変更されません。

XMLスキーマのURLが指定されておらず、XML文書がスキーマ・ベースの場合、XMLTypeインスタンス自体のスキーマに準拠しているかどうかがチェックされます。

構文

member function isSchemaValid(
schurl IN VARCHAR2 := NULL,
elem IN VARCHAR2 := NULL)
return NUMBER deterministic;

表296-8 ISSCHEMAVALIDサブプログラムのパラメータ

パラメータ IN / OUT 説明

schurl

(IN)

準拠しているかどうかをチェックする元になるXMLスキーマのURL。

elem

(IN)

検証の基準となる、指定されたスキーマ間の要素。最上位要素を複数定義するXMLスキーマを持ち、これらの要素のいずれか1つに準拠しているかどうかをチェックする場合に便利です。

296.1.16 ISSCHEMAVALIDATED

このメンバー・ファンクションは、スキーマ・ベースのインスタンスがスキーマに対して実際に検証されているかどうかを示すためにXMLTypeインスタンスの検証ステータスを戻します。インスタンスがスキーマと照合して検証されていれば1を、されていなければ0を戻します。

構文

MEMBER FUNCTION isSchemaValidated
return NUMBER deterministic;

296.1.17 SCHEMAVALIDATE

このメンバー・プロシージャは、XMLインスタンスがスキーマと照合して検証されていない場合、検証します。

非スキーマ・ベースのドキュメントの場合は、エラーが発生します。検証に失敗すると、エラーが発生します。そうでない場合は、ドキュメントのステータスが検証済に変更されます。

構文

MEMBER PROCEDURE schemaValidate(
   self IF OUT NOCOPY XMLType);

表296-9 SCHEMAVALIDATEサブプログラムのパラメータ

パラメータ IN / OUT 説明

self

(OUT)

スキーマと照合して検証されているXMLインスタンス。

296.1.18 SETSCHEMAVALIDATED

このメンバー・ファンクションは、入力XMLインスタンスのVALIDATION状態を設定します。

構文

MEMBER PROCEDURE setSchemaValidated(
self IF OUT NOCOPY XMLType,
   flag IN BINARY_INTEGER := 1);

表296-10 SERTSSCHEMAVALIDATEDサブプログラムのパラメータ

パラメータ IN / OUT 説明

self

(OUT)

XMLインスタンス。

flag

(IN)

0 - 無効、1 - 有効(デフォルト)

296.1.19 TOOBJECT

ます。メンバー・プロシージャは、XMLSCHEMAマッピングを使用して(使用できる場合)、XML値をオブジェクト・タイプに変換します。SCHEMAが使用できない場合、または入力が非スキーマ・ベースのXMLの場合は、要素とオブジェクト・タイプ属性の変換に使用される標準的なマッピングがプロシージャで使用されます。

構文

MEMBER PROCEDURE toObject(
SELF in XMLType,
object OUT "<ADT_1>",
schema in varchar2 := NULL,
element in varchar2 := NULL);

表296-11 TOOBJECTサブプログラムのパラメータ

パラメータ IN / OUT 説明

SELF

(IN)

変換するインスタンス。メンバー・プロシージャとして使用する場合は暗黙的です。

object

(IN)

変換するオブジェクト。必要なタイプのオブジェクト・インスタンスは、このファンクションに渡されます。

schema

(IN)

スキーマURL。XMLTypeインスタンスから変換するオブジェクト・インスタンスへのマッピングは、スキーマを使用して指定できます。注意: オラクル社は、スキーマ登録によって生成されたタイプの使用をサポートしません(『Oracle XML DB開発者ガイド』を参照)。

element

(IN)

最上位要素の名前。XMLスキーマ文書は、このパラメータを使用せずにXMLインスタンス文書に準拠する場合、最上位要素を指定しません。注意: オラクル社は、スキーマ登録によって生成されたタイプの使用をサポートしません(『Oracle XML DB開発者ガイド』を参照)。

296.1.20 TRANSFORM

このメンバー・ファンクションは、XSLスタイルシート引数と名前/値ペアの文字列として渡された最上位パラメータを使用して、XMLデータを変換します

parammap以外の引数がすべてNULLである場合、NULLを戻します。

構文

MEMBER FUNCTION transform(
xsl IN XMLType,
parammap in varchar2 := NULL)
RETURN XMLType deterministic;

表296-12 TRANSFORMサブプログラムのパラメータ

パラメータ IN / OUT 説明

xsl

(IN)

変換を記述するXSLスタイルシート。

parammap

(IN)

XSLに対する最上位パラメータ - 名前/値ペアの文字列。

296.1.21 XMLTYPE

これはXMLTypeコンストラクタです。

指定できるオプションは、次の表のとおりです。

表296-13 XMLTYPEメンバー・サブプログラムのパラメータ

構文 説明

constructor function XMLType(

   xmlData IN clob,

   schema IN varchar2 := NULL,

   validated IN number := 0,

   wellformed IN Number := 0)

return self as result deterministic;

(オプション)このコンストラクタ・ファンクションは、指定されたスキーマとXMLデータ・パラメータを使用して、スキーマ・ベースのXMLTypeインスタンスを作成します。

constructor function XMLType(

   xmlData IN varchar2,

   schema IN varchar2 := NULL,

   validated IN number := 0,

   wellformed IN number := 0)

return self as result deterministic;

(オプション)このコンストラクタ・ファンクションは、指定されたスキーマとXMLデータ・パラメータを使用して、スキーマ・ベースのXMLTypeインスタンスを作成します。

constructor function XMLType (

   xmlData IN "w<ADT_1>",

   schema IN varchar2 := NULL,

   element IN varchar2 := NULL,

   validated IN number := 0)

return self as result deterministic;

(オプション)このコンストラクタ・ファンクションは、指定されたオブジェクト・タイプ・パラメータからスキーマ・ベースのXMLTypeインスタンスを作成します。

constructor function XMLType(

xmlData IN SYS_REFCURSOR,

schema in varchar2 := NULL,

element in varchar2 := NULL,

   validated in number := 0)

return self as result deterministic;

(オプション)このコンストラクタ・ファンクションは、指定されたREF CURSORパラメータからスキーマ・ベースのXMLTypeインスタンスを作成します。

constructor function XMLType(

   xmlData IN AnyData,

   schema IN varchar2 := NULL,

   element IN varchar2 := NULL,

   validated IN number := 0)

return self as result deterministic

   parallel_enable

(オプション)このコンストラクタ・ファンクションは、指定されたANYDATAパラメータからスキーマ・ベースのXMLTypeインスタンスを作成します。ANYDATAインスタンスにADTが含まれている場合は、ADTを直接コールした場合の結果と同じXMLTypeが戻されます。ANYDATAにスカラーが含まれている場合は、XMLTypeにはスカラー値が設定されたリーフ・ノードが含まれます。このノードの要素名は、オプションの要素文字列が存在する場合、そこから付けられます。存在しない場合は、ANYDATAとなります。

constructor function XMLType(

xmlData IN blob, csid IN number,

   schema IN varchar2 := NULL,

   validated IN number := 0,

   wellformed IN number := 0)

return self as result deterministic

(オプション)このコンストラクタ・ファンクションは、指定されたBLOBパラメータからスキーマ・ベースのXMLTypeインスタンスを作成します。

constructor function XMLType(

   xmlData IN bfile,

   csid IN number,

   schema IN varchar2 := NULL,

   validated IN number := 0,

   wellformed IN number := 0)

return self as result deterministic

(オプション)このコンストラクタ・ファンクションは、指定されたBFILEパラメータからスキーマ・ベースのXMLTypeインスタンスを作成します。

表296-14 XMLTYPEコンストラクタ・サブプログラムのパラメータ

パラメータ 説明

xmlData

BFILEBLOBCLOBREFVARCHAR2またはオブジェクト・タイプの形式に含まれるデータ。

schema

指定されたスキーマに応じた入力を行うための、オプションのスキーマURL。注意: オラクル社は、スキーマ登録によって生成されたタイプの使用をサポートしません(『Oracle XML DB開発者ガイド』を参照)。

validated

指定されたXMLスキーマに基づき、インスタンスが有効なスキーマであることを示します。

wellformed

入力が適切に構成されていることを示します。設定すると、入力インスタンスに対する構成チェックは行われません

element

ADT_1またはREF CURSORコンストラクタの場合のオプションの要素名。(デフォルトはNULLです)。注意: オラクル社は、スキーマ登録によって生成されたタイプの使用をサポートしません(『Oracle XML DB開発者ガイド』を参照)。

csid

入力XMLデータの文字セットID。