Oracle DBMS_XMLSCHEMA
Version 11.2.0.2
 
General Information
Purpose Register XML schemas with XDB
Source {ORACLE_HOME}/rdbms/admin/dbmsxsch.sql
First Available Created 01-Dec-2000
Constants
Name Data Type Value
DELETE_RESTRICT NUMBER 1
DELETE_INVALIDATE NUMBER 2
DELETE_CASCADE NUMBER 3
DELETE_CASCADE_FORCE NUMBER 4
DELETE_MIGRATE NUMBER 8
ENABLE_HIERARCHY_NONE PLS_INTEGER 1
ENABLE_HIERARCHY_CONTENTS PLS_INTEGER 2
ENABLE_HIERARCHY_RESMETADATA PLS_INTEGER 3
ENABLE_HIERARCHY_VERSION PLS_INTEGER 4
ENABLE_HIERARCHY_LINKS PLS_INTEGER 8
REGISTER_NODOCID NUMBER 1
REGISTER_BINARYXML NUMBER 2
REGISTER_NT_AS_IOT NUMBER 4
REGISTER_CSID_NULL NUMBER -1
COPYEVOLVE_BINARY_XML NUMBER 1
INPLACE_EVOLVE NUMBER 1
INPLACE_TRACE NUMBER 2
Data Types TYPE URLARR IS VARRAY(1000) OF VARCHAR2(1000);
/

TYPE XMLARR IS VARRAY(1000) OF XMLType;
/

TYPE UNAME_ARR IS VARRAY(1000) OF VARCHAR2(100);
/
Dependencies
DBMS_LOB URITYPE
DBMS_METADATA_UTIL XDB$STRING_LIST_T
DBMS_XMLSCHEMA_INT XMLSCHEMA_LIB
NLS_DATABASE_PARAMETERS XMLSEQUENCETYPE
URIFACTORY XMLTYPE
Exceptions
Error Code Reason
ORA-31001 Invalid resource handle or path name
Security Model Execute is granted to PUBLIC
 
COMPILESCHEMA
Used to re-compile an already registered XML schema. This is useful for bringing a schema in an invalid state to a valid state dbms_xmlschema.compileschema(schemaURL IN VARCHAR2);
PRAGMA SUPPLEMENTAL_LOG_DATA(compileSchema, UNSUPPORTED_WITH_COMMIT);
TBD
 
CONVERTTODATE
Converts the string representation of the following specified XML Schema types into the Oracle DATE representation using a default reference date and format mask. dbms_xmlschema.converttodate(
strval      IN VARCHAR2,
xmltypename IN VARCHAR2)
RETURN DATE deterministic parallel_enable;
TBD
 
CONVERTTOTS
Converts the string representation of the following specified XML Schema types into the Oracle TIMESTAMP representation using a default reference date and format mask. dbms_xmlschema.converttots(strval VARCHAR2, xmltypename VARCHAR2)
RETURN TIMESTAMP deterministic parallel_enable;
TBD
 
CONVERTTOTSWITHTZ
Converts the string representation of the following specified XML Schema types into the Oracle TIMESTAMP WITH TIMEZONE representation using a default reference date and format mask. dbms_xmlschema.converttotswithtz(strval VARCHAR2, xmltypename VARCHAR2)
RETURN TIMESTAMP WITH TIME ZONE deterministic parallel_enable;
TBD
 
COPYEVOLVE
Undocumented? dbms_xmlschema.copyevolve(
schemaURLs      IN XDB$STRING_LIST_T,
newSchemas      IN XMLSequenceType,
transforms      IN XMLSequenceType := NULL,
preserveOldDocs IN BOOLEAN  := FALSE,
mapTabName      IN VARCHAR2 := NULL,
generateTables  IN BOOLEAN  := TRUE,
force           IN BOOLEAN  := FALSE,
schemaOwners    IN XDB$STRING_LIST_T := NULL,
parallelDegree  IN PLS_INTEGER := 0,
options         IN PLS_INTEGER := 0);
PRAGMA SUPPLEMENTAL_LOG_DATA(CopyEvolve, UNSUPPORTED_WITH_COMMIT);
TBD
 
DELETESCHEMA
Identifies the schema to be deleted dbms_xmlschema.deleteschema(
schemaURL     IN VARCHAR2,
delete_option IN PLS_INTEGER := DELETE_RESTRICT);
PRAGMA SUPPLEMENTAL_LOG_DATA(deleteSchema, UNSUPPORTED_WITH_COMMIT);
-- from $ORACLE_HOME/rdbms/admin/catnorul.sql
exec dbms_xmlschema.deleteschema('http://xmlns.oracle.com/rlmgr/rulecond.xsd');
 
GENERATEBEAN
Used to generate the Java bean code corresponding to a registered XML schema dbms_xmlschema.generatebean(schemaURL IN VARCHAR2);
TBD
 
GENERATESCHEMA
Generates an XML schema from an Oracle type name. generateSchemas returns a collection of XMLTypes. generateSchema inlines them all in one schema (XMLType). dbms_xmlschema.generateschema(
schemaName  IN VARCHAR2,
typeName    IN VARCHAR2,
elementName IN VARCHAR2 := NULL,
recurse     IN BOOLEAN  := TRUE,
annotate    IN BOOLEAN  := TRUE,
embedColl   IN BOOLEAN  := TRUE)
RETURN sys.XMLType;
TBD
 
GENERATESCHEMAS
Generates XML schemas from an Oracle type name. One XMLSchema document for each database schema. dbms_xmlschema.generateschemas(
schemaName  IN VARCHAR2,
typeName    IN VARCHAR2,
elementName IN VARCHAR2 := NULL,
schemaURL   IN VARCHAR2 := NULL,
annotate    IN BOOLEAN  := TRUE,
embedColl   IN BOOLEAN  := TRUE)
RETURN sys.XMLSequenceType;
TBD
 
INPLACEEVOLVE
Undocumented? dbms_xmlschema.inplaceevolve(
schemaURL IN VARCHAR2,
diffXML   IN SYS.XMLTYPE,
flags     IN NUMBER := 1);
PRAGMA SUPPLEMENTAL_LOG_DATA(InPlaceEvolve, UNSUPPORTED_WITH_COMMIT);
TBD
 
PURGESCHEMA
Purges a schema that was previously marked delete with hide mode dbms_xmlschema.purgeschema(procedure purgeSchema(schema_id IN RAW);
PRAGMA SUPPLEMENTAL_LOG_DATA(purgeSchema, UNSUPPORTED_WITH_COMMIT);
TBD
 
REGISTERSCHEMA
Register XML schemas with XDB

Overload 1
dbms_xmlschema.registerschema(
schemaURL       IN VARCHAR2,
schemaDoc       IN VARCHAR2,
local           IN BOOLEAN     := TRUE,
genTypes        IN BOOLEAN     := TRUE,
genbean         IN BOOLEAN     := FALSE,
genTables       IN BOOLEAN     := TRUE,
force           IN BOOLEAN     := FALSE,
owner           IN VARCHAR2    := '',
enableHierarchy IN PLS_INTEGER := ENABLE_HIERARCHY_CONTENTS,
options         IN PLS_INTEGER := 0);
PRAGMA SUPPLEMENTAL_LOG_DATA(registerSchema, UNSUPPORTED_WITH_COMMIT);
-- from $ORACLE_HOME/rdbms/admin/catxdav.sql

IF IsDowngrade THEN
  xdb.dbms_xmlschema.registerSchema(DAVURL, DAVXSD, FALSE, TRUE, FALSE, TRUE, FALSE, 'XDB');
ELSE
  xdb.dbms_xmlschema.registerSchema(DAVURL, DAVXSD, FALSE, FALSE, FALSE, TRUE, FALSE, 'XDB', options => DBMS_XMLSCHEMA.REGISTER_BINARYXML);
END IF;
Another Demo From Oracle (unedited) ************************************************************************
* Registering the account.xsd Schema using Oracle XML DB
************************************************************************

DECLARE
  doc varchar2(2000) := '<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xdb="http://xmlns.oracle.com/xdb">
       <xs:element name="ACCOUNT">
         <xs:complexType xdb:SQLType="XML_ACCOUNT">
           <xs:sequence>
             <xs:element name="ACC_NO" type="xs:float" nillable="false"/>
             <xs:element name="CST_ID" type="xs:float"/>
             <xs:element name="ACC_BALANCE" type="xs:float" default="0" nillable="false"/>
             <xs:element name="ACC_CREDITLIMIT" type="xs:float"/>
             <xs:element name="ACC_CREATEDATE" type="xs:date"/>
             <xs:element name="ACC_CARDTYPE" type="xs:string"/>
             <xs:element name="ACC_ENABLED" type="xs:boolean"/>
           </xs:sequence>
         </xs:complexType>
       </xs:element>
  </xs:schema>';
BEGIN
 -- use the pl/sql package to register the schema
 dbms_xmlschema.registerSchema('http://otn.oracle.com/account.xsd', doc);
END;

*************************************************************************
* Registering the customer.xsd Schema using Oracle XML DB
*************************************************************************

DECLARE
  doc varchar2(2000) := '<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xdb="http://xmlns.oracle.com/xdb">
    <xs:complexType name="CADDRType" xdb:SQLType="XML_CADDR" >
      <xs:sequence>
        <xs:element name="CST_ADDR_STREET" type="xs:string"/>
        <xs:element name="CST_ADDR_CITY" type="xs:string"/>
        <xs:element name="CST_ADDR_STATE" type="xs:string"/>
        <xs:element name="CST_ADDR_ZIP" type="xs:string"/>
        <xs:element name="CST_ADDR_COUNTRY" type="xs:string"/>
      </xs:sequence>
    </xs:complexType>
    <xs:element name="CUSTOMER">
      <xs:complexType xdb:SQLType="XML_CUSTOMER">
        <xs:sequence>
          <xs:element name="CST_ID" type="xs:float" nillable="false"/>
          <xs:element name="CST_NAME" type="xs:string"/>
          <xs:element name="CST_TYPE" type="xs:string"/>
          <xs:element name="CST_EMAIL" type="xs:string"/>
          <xs:element name="CST_ADDR" type="CADDRType"/>
          <xs:element name="CST_PHONE" type="xs:string"/>
          <xs:element name="CST_JOINDATE" type="xs:date"/>
          <xs:element name="CST_DESCRIPTION" type="xs:string"/>
        </xs:sequence>
      </xs:complexType>
    </xs:element>
  </xs:schema>';
BEGIN
 -- use the pl/sql package to register the schema
 dbms_xmlschema.registerSchema('http://otn.oracle.com/customer.xsd', doc);
END;

***************************************************************************
* Registering the transaction.xsd Schema using Oracle XML DB
***************************************************************************

DECLARE
  doc varchar2(2000) := '<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xdb="http://xmlns.oracle.com/xdb">
   <xs:element name="TRANSACTION">
     <xs:complexType xdb:SQLType="XML_TRANSACTION">
       <xs:sequence>
          <xs:element name="TR_ID" type="xs:float" nillable="false"/>
          <xs:element name="ACC_NO_DEBIT" type="xs:float"/>
          <xs:element name="ACC_NO_CREDIT" type="xs:float"/>
          <xs:element name="TR_AMOUNT" type="xs:float" default="0" nillable="false"/>
          <xs:element name="TR_DATE" type="xs:dateTime"/>
          <xs:element name="TR_DESCRIPTION" type="xs:string"/>
       </xs:sequence>
     </xs:complexType>
   </xs:element>
  </xs:schema>';
BEGIN
 -- use the pl/sql package to register the schema
 dbms_xmlschema.registerSchema('http://otn.oracle.com/transaction.xsd', doc);
END;
Overload 2 (new 11.2.0.2 parameters) dbms_xmlschema.registerschema(
schemaURL       IN VARCHAR2,
schemaDoc       IN CLOB,
local           IN BOOLEAN     := TRUE,
genTypes        IN BOOLEAN     := TRUE,
genbean         IN BOOLEAN     := FALSE,
genTables       IN BOOLEAN     := TRUE,
force           IN BOOLEAN     := FALSE,
owner           IN VARCHAR2    := '',
enableHierarchy IN PLS_INTEGER := ENABLE_HIERARCHY_CONTENTS,
options         IN PLS_INTEGER := 0,
schemaoid       IN RAW         := NULL,
import_options IN pls_integer  := 0);
PRAGMA SUPPLEMENTAL_LOG_DATA(registerSchema, UNSUPPORTED_WITH_COMMIT);
TBD
Overload 3 dbms_xmlschema.registerschema(
schemaURL       IN VARCHAR2,
schemaDoc       IN BLOB,
local           IN BOOLEAN  := TRUE,
genTypes        IN BOOLEAN  := TRUE,
genbean         IN BOOLEAN  := FALSE,
genTables       IN BOOLEAN  := TRUE,
force           IN BOOLEAN  := FALSE,
owner           IN VARCHAR2 := '',
csid            IN NUMBER   := REGISTER_CSID_NULL,
enableHierarchy IN PLS_INTEGER := ENABLE_HIERARCHY_CONTENTS,
options         IN PLS_INTEGER := 0);
PRAGMA SUPPLEMENTAL_LOG_DATA(registerSchema, UNSUPPORTED_WITH_COMMIT);
TBD
Overload 4 dbms_xmlschema.registerschema(
schemaURL       IN VARCHAR2,
schemaDoc       IN BFILE,
local           IN BOOLEAN  := TRUE,
genTypes        IN BOOLEAN  := TRUE,
genbean         IN BOOLEAN  := FALSE,
genTables       IN BOOLEAN  := TRUE,
force           IN BOOLEAN  := FALSE,
owner           IN VARCHAR2 := '',
csid            IN NUMBER   := REGISTER_CSID_NULL,
enableHierarchy IN PLS_INTEGER := ENABLE_HIERARCHY_CONTENTS,
options         IN PLS_INTEGER := 0);
PRAGMA SUPPLEMENTAL_LOG_DATA(registerSchema, UNSUPPORTED_WITH_COMMIT);
TBD
Overload 5 dbms_xmlschema.registerschema(
schemaURL       IN VARCHAR2,
schemaDoc       IN sys.XMLType,
local           IN BOOLEAN  := TRUE,
genTypes        IN BOOLEAN  := TRUE,
genbean         IN BOOLEAN  := FALSE,
genTables       IN BOOLEAN  := TRUE,
force           IN BOOLEAN  := FALSE,
owner           IN VARCHAR2 := '',
enableHierarchy IN PLS_INTEGER := ENABLE_HIERARCHY_CONTENTS,
options         IN PLS_INTEGER := 0);
PRAGMA SUPPLEMENTAL_LOG_DATA(registerSchema, UNSUPPORTED_WITH_COMMIT);
TBD
Overload 6 dbms_xmlschema.registerschema(
schemaURL       IN VARCHAR2,
schemaDoc       IN sys.UriType,
local           IN BOOLEAN  := TRUE,
genTypes        IN BOOLEAN  := TRUE,
genbean         IN BOOLEAN  := FALSE,
genTables       IN BOOLEAN  := TRUE,
force           IN BOOLEAN  := FALSE,
owner           IN VARCHAR2 := '',
enableHierarchy IN PLS_INTEGER := ENABLE_HIERARCHY_CONTENTS,
options         IN PLS_INTEGER := 0);
PRAGMA SUPPLEMENTAL_LOG_DATA(registerSchema, UNSUPPORTED_WITH_COMMIT);
TBD
 
REGISTERURI
This function constructs a URIType instance using the URIFactory and invokes the regiserSchema function dbms_xmlschema.registeruri(
schemaURL       IN VARCHAR2,
schemaDocURI    IN VARCHAR2,
local           IN BOOLEAN  := TRUE,
genTypes        IN BOOLEAN  := TRUE,
genbean         IN BOOLEAN  := FALSE,
genTables       IN BOOLEAN  := TRUE,
force           IN BOOLEAN  := FALSE,
owner           IN VARCHAR2 := '',
enableHierarchy IN PLS_INTEGER := ENABLE_HIERARCHY_CONTENTS,
options         IN PLS_INTEGER := 0);
PRAGMA SUPPLEMENTAL_LOG_DATA(registerURI, UNSUPPORTED_WITH_COMMIT);
TBD
 
Related Topics
DBMS_METADATA_UTIL
 
Morgan's Library Page Footer
This site is maintained by Dan Morgan. Last Updated: © 2012 Daniel A. Morgan All Rights Reserved