Oracle DBMS_XMLSCHEMA
Version 26ai

General Information
Library Note Morgan's Library Page Header
The best Oracle News for FY2026

Oracle Database 26ai will be available on generic Linux platforms in January and soon on AIX and Windows
Purpose Used to register XML schemas with XDBf
AUTHID CURRENT_USER
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 SELECT name FROM dba_dependencies WHERE referenced_name = 'DBMS_XMLSCHEMA' UNION
SELECT referenced_name FROM dba_dependencies WHERE name = 'DBMS_XMLSCHEMA' ORDER BY 1;


Returns 66 objects
Documented Yes
Exceptions
Error Code Reason
ORA-31001 Invalid resource handle or path name
First Available Created 01-Dec-2000
Security Model Owned by XDB with EXECUTE granted to PUBLIC
Source {ORACLE_HOME}/rdbms/admin/dbmsxsch.sql
Subprograms
 
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);
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      IN VARCHAR2,
xmltypename IN 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      IN VARCHAR2,
xmltypename IN 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);
TBD
 
DELETESCHEMA
Identifies the schema to be deleted dbms_xmlschema.deleteSchema(
schemaURL     IN VARCHAR2,
delete_option IN PLS_INTEGER := DELETE_RESTRICT);
-- from $ORACLE_HOME/rdbms/admin/catnorul.sql
exec dbms_xmlschema.deleteschema('https://xmlns.oracle.com/rlmgr/rulecond.xsd');

-- from $ORACLE_HOME/ord/im/admin/imu019.sql
BEGIN
  xdb.dbms_xmlschema.deleteSchema(schema_url, xdb.dbms_xmlschema.delete_cascade);
EXCEPTION
  --ignore ORA-31000: Resource '..' not an XDB schema document
  WHEN ex THEN
    NULL;
END;
/
 
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;
conn uwclass/uwclass@pdbdev

CREATE TYPE server_t AUTHID DEFINER AS OBJECT (
srvr_id    NUMBER(10),
network_id NUMBER(10),
status     VARCHAR2(1),
latitude   FLOAT(20),
longitude  FLOAT(20),
netaddress VARCHAR2(15));
/

CREATE TYPE serv_inst_t AUTHID DEFINER AS OBJECT (
siid          NUMBER(10),
si_status     VARCHAR2(15),
srvr_type     VARCHAR2(5),
installstatus VARCHAR2(1),
location_code NUMBER(10),
custacct_id   VARCHAR2(10),
ws_id         NUMBER(10),
srvr_id       server_t);
/

SELECT dbms_xmlschema.generateSchema(USER, 'SERV_INST_T') AS result;
 
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
 
GETSCHEMAELEMENTNAME
Return the string of element name given a schemaoid and element number dbms_xmlschema.getSchemaElementName(
schemaoid IN RAW,
elemnum   IN NUMBER)
RETURN VARCHAR2;
TBD
 
INPLACEEVOLVE
Undocumented
dbms_xmlschema.inplaceEvolve(
schemaURL IN VARCHAR2,
diffXML   IN sys.xmltype,
flags     IN NUMBER := 1);
TBD
 
PURGESCHEMA
Purges a schema that was previously marked delete with hide mode dbms_xmlschema.purgeSchema(purgeSchema(schema_id IN RAW);
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);
-- 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="https://www.w3.org/2001/XMLSchema" xmlns:xdb="https://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('https://otn.oracle.com/account.xsd', doc);
END;

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

DECLARE
  doc varchar2(2000) := '<xs:schema xmlns:xs="https://www.w3.org/2001/XMLSchema" xmlns:xdb="https://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('https://otn.oracle.com/customer.xsd', doc);
END;

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

DECLARE
  doc varchar2(2000) := '<xs:schema xmlns:xs="https://www.w3.org/2001/XMLSchema" xmlns:xdb="https://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('https://otn.oracle.com/transaction.xsd', doc);
END;
Overload 2 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);
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);
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);
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);
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);
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);
TBD

Related Topics
Built-in Functions
Built-in Packages
DBMS_METADATA_UTIL
DBMS_XMLSCHEMA_INT
DBMS_XMLSCHEMA_LSB
DBMS_XMLSCHEMA_UTIL
What's New In 21c
What's New In 26ai

Morgan's Library Page Footer
This site is maintained by Daniel Morgan. Last Updated: This site is protected by copyright and trademark laws under U.S. and International law. © 1998-2026 Daniel A. Morgan All Rights Reserved