239 DBMS_XMLSCHEMA_UTIL
DBMS_XMLSCHEMA_UTIL
パッケージは、XMLスキーマを検証するためのインタフェースを提供します。
この章のトピックは、次のとおりです:
DBMS_XMLSCHEMA_UTILサブプログラムの要約
このトピックは、DBMS_XMLSCHEMA_UTIL
サブプログラムをアルファベット順に示し、簡単に説明しています。
表239-1 DBMS_XMLSCHEMA_UTILパッケージ・サブプログラム
サブプログラム | 説明 |
---|---|
XML文書を単一のスキーマまたはスキーマの配列に対して検証します。 このファンクションはオーバーロードされています。 |
|
XML文書を単一のスキーマまたはスキーマの配列に対して検証します。 このprocudereはオーバーロードされています。 |
CONFORMINGファンクション
このファンクションはオーバーロードされています。 複数の機能を構文形式ごとに、定義とともに示します
構文
このファンクションは、スキーマに対してXML文書を検証するために使用します:
DBMS_XMLSCHEMA_UTIL.CONFORMING ( doc IN XMLTYPE, sch IN XMLTYPE) RETURN NUMBER;
ノート:
このファンクションは、xmlデータ・インスタンスとxmlスキーマ・インスタンスを指定します。 ユーザーはスキーマを登録する必要はありません。
構文
このファンクションは、複数のXMLスキーマ・ドキュメントに対してXMLドキュメントを検証するために使用します。XMLスキーマの配列として、それぞれが配列URIの一致するスキーマURIで識別されます :
DBMS_XMLSCHEMA_UTIL.CONFORMING ( doc IN XMLTYPE, uris IN XDB.XDB$STRING_LIST_T, schemas IN sys.XMLSequenceType) RETURN NUMBER;
パラメータ
表239-2 CONFORMINGファンクションのパラメータ
パラメータ | 説明 |
---|---|
|
XMLインスタンス |
|
XMLスキーマ |
|
XMLスキーマ配列 |
|
スキーマURI |
ファンクションの例外
DBMS_XMLSCHEMA_UTIL.CONFORMING
ファンクションの例外は次のとおりです。
-
このファンクションは、スキーマが有効で、文書がスキーマに準拠している場合はゼロを返します。それ以外の場合は、スキーマ検証からLSXエラー・コードを返します。
-
doc
がNULL
の場合、URIまたはスキーマがnullまたは空の場合、またはURIとスキーマのサイズが異なる場合、このファンクションはORA-31093を発生させます。
例: 文書がスキーマに準拠している
SELECT DBMS_XMLSCHEMA_UTIL.CONFORMING( XMLType('<A/>'), XMLType( '<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="A" type="xs:string"/> </xs:schema>')) "LSX CODE" FROM DUAL;
例: ドキュメントはスキーマに準拠し、適合ファンクションはゼロを返します
SQL> select 2 dbms_xmlschema_util.conforming( 3 xmltype( 4 '<Company xmlns="http://www.oracle.com/company.xsd" 5 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 6 xsi:schemaLocation="http://www.oracle.com/company.xsd company"> 7 <Name>Oracle</Name> 8 <Employee> 9 <EmployeeId>1001</EmployeeId> 10 <Name>John Doe</Name> 11 </Employee> 12 </Company>'), 13 XDB$STRING_LIST_T( 14 'employee', 15 'company'), 16 XMLSequenceType( 17 xmltype( 18 '<schema xmlns="http://www.w3.org/2001/XMLSchema" 19 xmlns:my="http://www.oracle.com/company.xsd" 20 targetNamespace="http://www.oracle.com/company.xsd" 21 elementFormDefault="qualified"> 22 <complexType name = "EmployeeType"> 23 <sequence> 24 <element name = "EmployeeId" type = "positiveInteger"/> 25 <element name = "Name" type = "string"/> 26 </sequence> 27 </complexType> 28 </schema>'), 29 xmltype( 30 '<schema xmlns="http://www.w3.org/2001/XMLSchema" 31 xmlns:my="http://www.oracle.com/company.xsd" 32 targetNamespace="http://www.oracle.com/company.xsd" 33 elementFormDefault="qualified"> 34 <include schemaLocation="employee"/> 35 <element name = "Company"> 36 <complexType> 37 <sequence> 38 <element name = "Name" type = "string"/> 39 <element name = "Employee" type = "my:EmployeeType" 40 maxOccurs = "unbounded"/> 41 </sequence> 42 </complexType> 43 </element> 44 </schema>'))) "LSX CODE" 45 from dual; LSX CODE ---------- 0 1 row selected.
VALIDATEプロシージャ
このプロシージャはオーバーロードされています。 複数の機能を構文形式ごとに、定義とともに示します。
構文
このプロシージャは、スキーマに対してXML文書を検証するために使用します:
DBMS_XMLSCHEMA_UTIL.VALIDATE ( doc IN XMLTYPE, sch IN XMLTYPE);
ノート:
このプロシージャは、xmlデータ・インスタンスとxmlスキーマ・インスタンスを指定します。 ユーザーはスキーマを登録する必要はありません。
構文
このプロシージャは、XMLドキュメントを複数のXMLスキーマ・ドキュメントに対して検証するために使用します。XMLスキーマの配列として、それぞれが配列URIの一致するスキーマURIで識別されます:
DBMS_XMLSCHEMA_UTIL.VALIDATE ( doc IN XMLTYPE, uris IN XDB.XDB$STRING_LIST_T, schemas IN sys.XMLSequenceType);
パラメータ
表239-3 VALIDATEプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
XMLインスタンス |
|
XMLスキーマ |
|
XMLスキーマ配列 |
|
スキーマURI |
プロシージャの例外
DBMS_XMLSCHEMA_UTIL.VALIDATE
プロシージャの例外は次のとおりです。
- このプロシージャは、スキーマが有効でないか、文書がスキーマに準拠していない場合にORA-31154を生成します。
例: 文書がスキーマに準拠している
BEGIN DBMS_XMLSCHEMA_UTIL.VALIDATE( XMLType('<A/>'), XMLType( '<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="A" type="xs:string"/> </xs:schema>')); END; /
例: ドキュメントはスキーマに準拠しています
SQL> begin 2 dbms_xmlschema_util.validate( 3 xmltype( 4 '<Company xmlns="http://www.oracle.com/company.xsd" 5 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 6 xsi:schemaLocation="http://www.oracle.com/company.xsd company"> 7 <Name>Oracle</Name> 8 <Employee> 9 <EmployeeId>1001</EmployeeId> 10 <Name>John Doe</Name> 11 </Employee> 12 </Company>'), 13 XDB$STRING_LIST_T( 14 'employee', 15 'company'), 16 XMLSequenceType( 17 xmltype( 18 '<schema xmlns="http://www.w3.org/2001/XMLSchema" 19 xmlns:my="http://www.oracle.com/company.xsd" 20 targetNamespace="http://www.oracle.com/company.xsd" 21 elementFormDefault="qualified"> 22 <complexType name = "EmployeeType"> 23 <sequence> 24 <element name = "EmployeeId" type = "positiveInteger"/> 25 <element name = "Name" type = "string"/> 26 </sequence> 27 </complexType> 28 </schema>'), 29 xmltype( 30 '<schema xmlns="http://www.w3.org/2001/XMLSchema" 31 xmlns:my="http://www.oracle.com/company.xsd" 32 targetNamespace="http://www.oracle.com/company.xsd" 33 elementFormDefault="qualified"> 34 <include schemaLocation="employee"/> 35 <element name = "Company"> 36 <complexType> 37 <sequence> 38 <element name = "Name" type = "string"/> 39 <element name = "Employee" type = "my:EmployeeType" 40 maxOccurs = "unbounded"/> 41 </sequence> 42 </complexType> 43 </element> 44 </schema>'))); 45 end; 46 / PL/SQL procedure successfully completed.