MINI MINI MANI MO

Path : /opt/oracle/product/18c/dbhomeXE/rdbms/admin/
File Upload :
Current File : //opt/oracle/product/18c/dbhomeXE/rdbms/admin/dbmsxmld.sql

Rem
Rem $Header: rdbms/admin/dbmsxmld.sql /main/32 2017/03/28 10:19:44 haiswang Exp $
Rem
Rem dbmsxmld.sql
Rem
Rem Copyright (c) 2001, 2017, Oracle and/or its affiliates. 
Rem All rights reserved.
Rem
Rem    NAME
Rem      dbmsxmld.sql - <one-line expansion of the name>
Rem
Rem    DESCRIPTION
Rem      <short description of component this file declares/defines>
Rem
Rem    NOTES
Rem      <other useful comments, qualifications, etc.>
Rem
Rem
Rem BEGIN SQL_FILE_METADATA
Rem SQL_SOURCE_FILE: rdbms/admin/dbmsxmld.sql
Rem SQL_SHIPPED_FILE: rdbms/admin/dbmsxmld.sql
Rem SQL_PHASE: DBMSXMLD
Rem SQL_STARTUP_MODE: NORMAL
Rem SQL_IGNORABLE_ERRORS: NONE
Rem SQL_CALLING_FILE: rdbms/admin/catqm_int.sql
Rem END SQL_FILE_METADATA
Rem
Rem    MODIFIED   (MM/DD/YY)
Rem    haiswang    03/10/17 - bug25640430: remove empty interfaces
Rem    mjaeger     03/13/14 - bug 18049313: back out bug 17334246
Rem    surman      01/22/14 - 13922626: Update SQL metadata
Rem    sohkumar    08/28/13 - bug 17334246
Rem    qyu         03/18/13 - Common start and end scripts
Rem    mkandarp    01/13/09 - 6852013: Add FreeNodeList
Rem    mkandarp    12/11/08 - 7435201 : Add free element
Rem    mkandarp    11/30/06 - 5655708 : Increase handle size
Rem    ataracha    12/18/06 - add StreamIsNull
Rem    nkandalu    09/25/06 - 5477912: add freeDocType method
Rem    nkhandel    10/20/05 - large node streaming API
Rem    rxpeters    05/11/04 - remove WriteDTD
Rem    rxpeters    11/17/03 - add support for all DOM Exceptions
Rem    bkhaladk    10/29/03 - add schema synonyms
Rem    rxpeters    10/28/03 - add getNodeFromFragment
Rem    ataracha    10/21/03 - add function resolveNamespacePrefix
Rem    ataracha    09/17/03 - added adoptnode
Rem    bkhaladk    08/19/03 - add synonym for xmldom
Rem    rxpeters    07/30/03 - increase size of domtype to 12 bytes
Rem    ataracha    01/17/03 - add domdoc paramater to getxmltype
Rem    nmontoya    01/16/03 - ADD importnode method
Rem    njalali     08/13/02 - removing SET statements
Rem    thoang      04/17/02 - grabtrans 'thoang_bug-2265790'
Rem    thoang      04/08/02 - Added new methods
Rem    thoang      03/21/02 - Added CreateDocument method.
Rem    gviswana    01/29/02 - CREATE OR REPLACE SYNONYM
Rem    spannala    12/27/01 - setup should be run as SYS
Rem    nmontoya    12/12/01 - remove set echo on
Rem    sichandr    11/06/01 - add freeNode
Rem    rbooredd    10/05/01 - fix show errors
Rem    sichandr    09/20/01 - add getSchemaNode
Rem    nmontoya    09/05/01 - Merged nmontoya_plsdom2
Rem    nmontoya    08/09/01 - Created
Rem

@@?/rdbms/admin/sqlsessstart.sql


CREATE OR REPLACE PACKAGE xdb.dbms_xmldom AUTHID CURRENT_USER IS

----------------------------------------------------------------------
-- DOM API
----------------------------------------------------------------------

----------------------------------------------------------------------
-- Constants and Type Declarations
----------------------------------------------------------------------

--
-- DOM Node types (as returned by getNodeType)
--
ELEMENT_NODE CONSTANT PLS_INTEGER                := 1;
ATTRIBUTE_NODE CONSTANT PLS_INTEGER              := 2;
TEXT_NODE CONSTANT PLS_INTEGER                   := 3;
CDATA_SECTION_NODE CONSTANT PLS_INTEGER          := 4;
ENTITY_REFERENCE_NODE CONSTANT PLS_INTEGER       := 5;
ENTITY_NODE CONSTANT PLS_INTEGER                 := 6;
PROCESSING_INSTRUCTION_NODE CONSTANT PLS_INTEGER := 7;
COMMENT_NODE CONSTANT PLS_INTEGER                := 8;
DOCUMENT_NODE CONSTANT PLS_INTEGER               := 9;
DOCUMENT_TYPE_NODE CONSTANT PLS_INTEGER          := 10;
DOCUMENT_FRAGMENT_NODE CONSTANT PLS_INTEGER      := 11;
NOTATION_NODE CONSTANT PLS_INTEGER               := 12;

--
-- DOMException types
--
INDEX_SIZE_ERR              EXCEPTION;
DOMSTRING_SIZE_ERR          EXCEPTION;
HIERARCHY_REQUEST_ERR       EXCEPTION;
WRONG_DOCUMENT_ERR          EXCEPTION;
INVALID_CHARACTER_ERR       EXCEPTION;
NO_DATA_ALLOWED_ERR         EXCEPTION;
NO_MODIFICATION_ALLOWED_ERR EXCEPTION;
NOT_FOUND_ERR               EXCEPTION;
NOT_SUPPORTED_ERR           EXCEPTION;
INUSE_ATTRIBUTE_ERR         EXCEPTION;
INVALID_STATE_ERR           EXCEPTION;
SYNTAX_ERR                  EXCEPTION;
INVALID_MODIFICATION_ERR    EXCEPTION;
NAMESPACE_ERR               EXCEPTION;
INVALID_ACCESS_ERR          EXCEPTION;

--
-- DOM interface types
--
SUBTYPE domtype IS RAW(13);

TYPE DOMNode IS RECORD (id RAW(13));
TYPE DOMNamedNodeMap IS RECORD (id RAW(13));
TYPE DOMNodeList IS RECORD (id RAW(13));
TYPE DOMAttr IS RECORD (id RAW(13));
TYPE DOMCDataSection IS RECORD (id RAW(13));
TYPE DOMCharacterData IS RECORD (id RAW(13));
TYPE DOMComment IS RECORD (id RAW(13));
TYPE DOMDocumentFragment IS RECORD (id RAW(13));
TYPE DOMElement IS RECORD (id RAW(13));
TYPE DOMEntity IS RECORD (id RAW(13));
TYPE DOMEntityReference IS RECORD (id RAW(13));
TYPE DOMNotation IS RECORD (id RAW(13));
TYPE DOMProcessingInstruction IS RECORD (id RAW(13));
TYPE DOMText IS RECORD (id RAW(13));
TYPE DOMImplementation IS RECORD (id RAW(13));
TYPE DOMDocumentType IS RECORD (id RAW(13));
TYPE DOMDocument IS RECORD (id RAW(13));
TYPE DOMStreamHandle IS RECORD (id RAW(12));
/*
SUBTYPE DOMNode IS domtype;
SUBTYPE DOMNamedNodeMap IS domtype;
SUBTYPE DOMNodeList IS domtype;
SUBTYPE DOMAttr IS domtype;
SUBTYPE DOMCDataSection IS domtype;
SUBTYPE DOMCharacterData IS domtype;
SUBTYPE DOMComment IS domtype;
SUBTYPE DOMDocumentFragment IS domtype;
SUBTYPE DOMElement IS domtype;
SUBTYPE DOMEntity IS domtype;
SUBTYPE DOMEntityReference IS domtype;
SUBTYPE DOMNotation IS domtype;
SUBTYPE DOMProcessingInstruction IS domtype;
SUBTYPE DOMText IS domtype;
SUBTYPE DOMImplementation IS domtype;
SUBTYPE DOMDocumentType IS domtype;
SUBTYPE DOMDocument IS domtype;
*/

-----------------------------------------------------------------------------
-- Public Interface
----------------------------------------------------------------------------

---------------------------------------------------------------------------
-- Interface DOMImplementation:
--
--    hasFeature
--    createDocument
--
--    implementation_isNull (Extension)
--
---------------------------------------------------------------------------


/**
 * DOM DOMImplementation interface methods
 * These methods implement the DOM DOMImplementation interface as specified in:
 * http://www.w3.org/TR/REC-DOM-Level-1/level-one-core.html#ID-102161490
 */
FUNCTION hasFeature(di DOMImplementation, feature IN VARCHAR2,
                    version IN VARCHAR2) RETURN BOOLEAN;

FUNCTION createDocument(namespaceURI IN VARCHAR2, qualifiedName IN VARCHAR2,
                        doctype IN DOMType := NULL) RETURN DOMDocument;

/**
 * DOM Node XDK interface methods
 */

-- Check validity of object
FUNCTION isNull(di DOMImplementation) RETURN BOOLEAN;


---------------------------------------------------------------------------
-- DOM Node interface:
--
--    getNodeName
--    getNodeValue
--    setNodeValue
--    getNodeType
--    getParentNode
--    getChildNodes
--    getFirstChild
--    getLastChild
--    getPreviousSibling
--    getNextSibling
--    getAttributes
--    getOwnerDocument
--    getPrefix
--    setPrefix
--    insertBefore
--    replaceChild
--    removeChild
--    appendChild
--    hasChildNodes
--    cloneNode

--    node_isNull (Extension)
--    writeToFile (Extension)
--    node_writeToBuffer (Extension)
--    node_writeToClob (Extension)
--    getNodeFromFragment (Extension)
--    writeToFile (given charset, Extension)
--    writeToBuffer (given charset, Extension)
--    writeToClob (given charset, Extension)
--    makeAttr (Extension)
--    makeCDataSection (Extension)
--    makeCharacterData (Extension)
--    makeComment (Extension)
--    makeDocumentFragment (Extension)
--    makeDocumentType (Extension)
--    makeElement (Extension)
--    makeEntity (Extension)
--    makeEntityReference (Extension)
--    makeNotation (Extension)
--    makeProcessingInstruction (Extension)
--    makeText (Extension)
--    makeDocument (Extension)
--    getSchemaNode (Extension)
--    freeNode (Extension)

--    numChildNodes (available for C wrapper)
--    getQualifiedName (available for C wrapper)
--    getNodeNameSpace (available for C wrapper)
--    getNodePrefix (available for C wrapper)
--    getNodeLocal (available for C wrapper)
---------------------------------------------------------------------------
--

/**
 * DOM Node interface methods
 * These methods implement the DOM Node interface as specified in:
 * http://www.w3.org/TR/REC-DOM-Level-1/level-one-core.html#ID-1950641247
 */
FUNCTION getNodeName(n DOMNode) RETURN VARCHAR2;
FUNCTION getNodeValue(n domnode) RETURN VARCHAR2;
PROCEDURE setNodeValue(n DOMNode, nodeValue IN VARCHAR2);
FUNCTION getNodeType(n DOMNode) RETURN pls_INTEGER;
FUNCTION getParentNode(n DOMNode) RETURN DOMNode;

-- FUNCTION domnode_getChildNodes (n IN domnode) RETURN DOMNodeList;
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 getPrefix(n domnode) RETURN VARCHAR2;
FUNCTION getNodeFromFragment (fragment IN sys.xmltype) return DOMNode;
PROCEDURE setPrefix(n DOMNode, prefix IN VARCHAR2);
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 hasAttributes(n DOMNode) RETURN BOOLEAN;
FUNCTION cloneNode(n DOMNode, deep boolean) RETURN DOMNode;

/**
 * DOM Node XDK interface methods
 */

-- Check validity of object
FUNCTION isNull(n DOMNode) RETURN BOOLEAN;

-- Write DOMNode object using the database character set
PROCEDURE writeToFile(n DOMNode, fileName VARCHAR2);
PROCEDURE writeToBuffer(n DOMNode, buffer IN OUT VARCHAR2);
PROCEDURE writeToClob(n DOMNode, cl IN OUT CLOB);

-- Write DOMNode object using database character set and Print Options
PROCEDURE writeToFile(n DOMNode, fileName VARCHAR2,
                      pflag IN NUMBER, indent IN NUMBER);
PROCEDURE writeToBuffer(n DOMNode, buffer IN OUT VARCHAR2,
                       pflag IN NUMBER, indent IN NUMBER);
PROCEDURE writeToClob(n DOMNode, cl IN OUT CLOB,
                      pflag IN NUMBER, indent IN NUMBER);

-- Write DOMNode object using the specified character set
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);

-- Write DOMNode object using the specified character set and print options
PROCEDURE writeToFile(n DOMNode, fileName VARCHAR2, charset VARCHAR2,
                      pflag IN NUMBER, indent IN NUMBER);
PROCEDURE writeToBuffer(n DOMNode, buffer IN OUT VARCHAR2, charset VARCHAR2,
                       pflag IN NUMBER, indent IN NUMBER);
PROCEDURE writeToClob(n DOMNode, cl IN OUT CLOB, charset VARCHAR2,
                      pflag IN NUMBER, indent IN NUMBER);

-- Cast DOMNode objects
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;

FUNCTION  getSchemaNode(n DOMnode) RETURN DOMnode;
PROCEDURE getNamespace(n DOMnode, data IN OUT VARCHAR2);
PROCEDURE getLocalName(n DOMnode, data OUT VARCHAR2);
PROCEDURE getExpandedName(n DOMnode, data OUT VARCHAR2);
PROCEDURE freeNode(n DOMnode);



-------------------------------------------------------------------------------
-- The following functions and procedures are added to support the 4 Streaming
-- models defined for Large Node access
-------------------------------------------------------------------------------
-- Get-Pull methods
-------------------------------------------------------------------------------
FUNCTION getNodeValueAsBinaryStream (n in domnode)
                                        return sys.utl_BinaryInputStream;
FUNCTION getNodeValueAsCharacterStream (n      in domnode)
                                        return sys.utl_CharacterInputStream;
----------------------------------------------------------------------------
-- Get-Push methods
----------------------------------------------------------------------------
PROCEDURE getNodeValueAsBinaryStream (n         in domnode,
                                      pushValue in out sys.utl_BinaryOutputStream);
PROCEDURE getNodeValueAsCharacterStream (n         in domnode,
                                         pushValue in out sys.utl_CharacterOutputStream);
----------------------------------------------------------------------------
-- Set-Pull methods
----------------------------------------------------------------------------
PROCEDURE setNodeValueAsBinaryStream (n         in domnode,
                                      nodeValue in out sys.utl_BinaryInputStream);
PROCEDURE setNodeValueAsCharacterStream (n         in domnode,
                                      nodeValue in out sys.utl_CharacterInputStream);
----------------------------------------------------------------------------
-- "Deferred" Set-Pull
----------------------------------------------------------------------------
PROCEDURE setNodeValueAsDeferredBfile (n     in domnode,
                                       value in bfile);
PROCEDURE setNodeValueAsDeferredBlob (n     in domnode,
                                      value in blob);
PROCEDURE setNodeValueAsDeferredClob (n     in domnode,
                                      value in clob);
----------------------------------------------------------------------------
-- Set-Push methods
----------------------------------------------------------------------------
FUNCTION setNodeValueAsBinaryStream (n in domnode) return                                     sys.utl_BinaryOutputStream;
FUNCTION setNodeValueAsCharacterStream (n in domnode) return
                                     sys.utl_CharacterOutputStream;
----------------------------------------------------------------------------
-- Determining if use of Binary Stream is valid
----------------------------------------------------------------------------
FUNCTION useBinaryStream (n in domnode) return boolean;
FUNCTION xmld_useBinStream (n in raw) return boolean;
----------------------------------------------------------------------------
-- XMLBinaryInputStream methods
----------------------------------------------------------------------------
FUNCTION createXMLBinaryInputStream (n in raw) return raw;
FUNCTION BinaryInputStreamAvailable (handle in raw) return integer;
PROCEDURE readBytesFromBIS1 (   handle in RAW,
                                bytes in out raw
--                                offset in pls_integer,
--                                numBytes in pls_integer
);

FUNCTION readBinaryInputStream (handle   in raw,
                                numBytes in integer) return raw;
PROCEDURE readBinaryInputStream (handle   in            raw,
                                 bytes    in out nocopy raw,
                                 numBytes in out        integer);
PROCEDURE readBinaryInputStream (handle   in            raw,
                                 bytes    in out nocopy raw,
                                 offset   in            integer,
                                 numBytes in out        integer);
PROCEDURE closeBinaryInputStream (handle in raw);
----------------------------------------------------------------------------
-- XMLBinaryOutputStream methods
----------------------------------------------------------------------------
FUNCTION createXMLBinaryOutputStream (n in raw) return raw;
FUNCTION writeBinaryOutputStream (handle   in            raw,
                                  bytes    in out nocopy raw,
                                  numBytes in            integer)
                            return integer;
PROCEDURE writeBinaryOutputStream (handle   in            raw,
                                   bytes    in out nocopy raw,
                                   numBytes in out        integer);
PROCEDURE writeBinaryOutputStream (handle   in            raw,
                                   bytes    in out nocopy raw,
                                   offset   in            integer,
                                   numBytes in out        integer);
PROCEDURE flushBinaryOutputStream (handle in raw);
PROCEDURE closeBinaryOutputStream (handle in raw);
----------------------------------------------------------------------------
-- XMLCharacterInputStream methods
----------------------------------------------------------------------------
FUNCTION createXMLCharacterInputStream (n in raw) return raw;
FUNCTION CharacterInputStreamAvailable (handle in raw) return integer;
FUNCTION readCharacterInputStream (handle   in raw,
                                   numChars in integer,
                                   lineFeed in boolean) return varchar2;
PROCEDURE readCharacterInputStream (handle   in            raw,
                                    chars    in out nocopy varchar2,
                                    numChars in out        integer,
                                    lineFeed in            boolean);
PROCEDURE readCharacterInputStream (handle   in            raw ,
                                    chars    in out nocopy varchar2,
                                    offset   in            integer ,
                                    numChars in out        integer,
                                    lineFeed in            boolean);
PROCEDURE closeCharacterInputStream (handle in raw);
----------------------------------------------------------------------------
-- XMLCharacterOutputStream methods
----------------------------------------------------------------------------
FUNCTION createXMLCharacterOutputStream (n in raw) return raw;
FUNCTION writeCharacterOutputStream (handle   in            raw,
                                     chars    in out nocopy varchar2,
                                     numChars in            integer,
                                     lineFeed in            boolean) return integer;

PROCEDURE writeCharacterOutputStream (handle   in            raw,
                                      chars    in out nocopy varchar2,
                                      numChars in out        integer,
                                      lineFeed in            boolean);

PROCEDURE writeCharacterOutputStream (handle   in            raw,
                                      chars    in out nocopy varchar2,
                                      offset   in            integer,
                                      numChars in out        integer,
                                      lineFeed in            boolean);

PROCEDURE flushCharacterOutputStream (handle in raw);
PROCEDURE closeCharacterOutputStream (handle in raw);

----------------------------------------------------------------------------
-- isNull methods
----------------------------------------------------------------------------

FUNCTION StreamIsNull(handle raw)  RETURN BOOLEAN;

---------------------------------------------------------------------------
-- DOM NodeList interface:
--
--    nodelist_item
--    nodelist_getLength

--    nodelist_isNull (Extension)

--   freeNodeList (Extension)
---------------------------------------------------------------------------

/**
 * DOM NodeList interface methods
 * These methods implement the DOM NodeList interface as specified in:
 * http://www.w3.org/TR/REC-DOM-Level-1/level-one-core.html#ID-536297177
*/

 -- item:
 --
 -- Get the indexth item in the collection.  If index is greater than or
 -- equal to the number of nodes in the list, this returns null.
 --
 -- PARAMETERS
 --      nl       - input DOM node list
 --      idx      - index into the list
 -- RETURN
 --      indexed child node
 -- EXCEPTIONS
 --   <exception name> - <description>
 -- NOTES
 --
 --
 -- FUNCTION domnodel_item (nl IN DOMNodeList,
 --                         idx IN PLS_INTEGER) RETURN DOMNode;
FUNCTION item(nl DOMNodeList, idx IN PLS_INTEGER) RETURN DOMNode;

FUNCTION getLength(nl DOMNodeList) RETURN pls_INTEGER;

/**
 * DOM Node XDK interface methods
 */

-- Check validity of object
FUNCTION isNull(nl DOMNodeList) RETURN BOOLEAN;


PROCEDURE freeNodeList(nl DOMNodeList);
---------------------------------------------------------------------------
-- DOM NamedNodeMap interface:
--
--    getNamedItem
--    setNamedItem
--    removeNamedItem
--    namednodemap_item
--    namednodemap_getLength

--    namednodemap_isNull (Extension)

---------------------------------------------------------------------------

/**
 * DOM Node interface methods
 * These methods implement the DOM Node interface as specified in:
 * http://www.w3.org/TR/REC-DOM-Level-1/level-one-core.html#ID-1950641247
 */

FUNCTION getNamedItem(nnm DOMNamedNodeMap, name IN VARCHAR2) RETURN DOMNode;
FUNCTION getNamedItem(nnm DOMNamedNodeMap, name IN VARCHAR2,
                      ns IN VARCHAR2) RETURN DOMNode;
FUNCTION setNamedItem(nnm DOMNamedNodeMap, arg IN DOMNode) RETURN DOMNode;
FUNCTION setNamedItem(nnm DOMNamedNodeMap, arg IN DOMNode,
                      ns IN VARCHAR2) RETURN DOMNode;
FUNCTION removeNamedItem(nnm DOMNamedNodeMap, name IN VARCHAR2) RETURN DOMNode;
FUNCTION removeNamedItem(nnm DOMNamedNodeMap, name IN VARCHAR2,
                         ns IN VARCHAR2) RETURN DOMNode;
FUNCTION item(nnm DOMNamedNodeMap, idx IN pls_integer)
                           RETURN domNode;
FUNCTION getLength(nnm DOMNamedNodeMap) RETURN pls_integer;

/**
 * DOM Node XDK interface methods
 */

-- Check validity of object
FUNCTION isNull(nnm DOMNamedNodeMap) RETURN BOOLEAN;


---------------------------------------------------------------------------
-- DOM Character Data interface:
--
--    cdata_getData
--    cdata_setData
--    cdata_getLength
--    substringData
--    appendData
--    insertData
--    deleteData
--    replaceData
--
--    cdata_isNull (extension)
--    cdata_makeNode (extension)

---------------------------------------------------------------------------

/**
 * DOM CharacterData interface methods
 * These methods implement the DOM CharacterData interface as specified in:
 * http://www.w3.org/TR/REC-DOM-Level-1/level-one-core.html#ID-FF21A306
 */

 -- getData:
 --
 -- Get data for character node
 --
 -- PARAMETERS
 --      cd       - input DOM Character node
 -- RETURN
 --      data for character node
 -- EXCEPTIONS
 --   <exception name> - <description>
 -- NOTES
 --      Returns data for character node, or NULL if node isn't
 --      character-type.
 --
 -- PROCEDURE domcdata_getCharData (cd IN DOMNode, data OUT VARCHAR2);
FUNCTION getData(cd domcharacterdata) return VARCHAR2;

PROCEDURE setData(cd DOMCharacterData, data IN VARCHAR2);
FUNCTION getLength(cd DOMCharacterData) RETURN pls_integer;
FUNCTION substringData(cd DOMCharacterData, offset IN PLS_INTEGER,
                        cnt IN PLS_integer) RETURN VARCHAR2;
PROCEDURE appendData(cd DOMCharacterData, arg IN VARCHAR2);
PROCEDURE insertData(cd DOMCharacterData, offset IN PLS_INTEGER, arg IN VARCHAR2);
PROCEDURE deleteData(cd DOMCharacterData, offset IN PLS_INTEGER, cnt IN PLS_INTEGER);
PROCEDURE replaceData(cd DOMCharacterData, offset IN PLS_INTEGER,
                      cnt IN PLS_INTEGER, arg IN VARCHAR2);

/**
 * DOM Node XDK interface methods
 */

-- Check validity of object
FUNCTION isNull(cd DOMCharacterData) RETURN BOOLEAN;

-- Cast
FUNCTION makeNode(cd DOMCharacterData) RETURN DOMNode;


---------------------------------------------------------------------------
-- DOM Attribute interface:
--
--    getName
--    getOwnerElement
--    getSpecified
--    getValue
--    setValue
--
--    attr_isNull (Extension)
--    attr_makeNode (Extension)
--    attr_getQualifiedName (Extension)
--    attr_getNamespace (Extension)
--    attr_getLocalName (Extension)
--    attr_getExpandedName (Extension)
--
---------------------------------------------------------------------------

/**
 * DOM interface methods
 * These methods implement the DOM Node interface as specified in:
 * http://www.w3.org/TR/REC-DOM-Level-1/level-one-core.html#ID-1950641247
 */

FUNCTION getName(a DOMAttr) return varchar2;
FUNCTION getOwnerElement(a DOMAttr) RETURN DOMElement;
FUNCTION getSpecified(a DOMAttr) RETURN BOOLEAN;
FUNCTION getValue (a IN DOMAttr) return varchar2;
PROCEDURE setValue(a DOMAttr, newvalue IN VARCHAR2);

/**
 * DOM XDK interface methods
 */

-- Check validity of object
FUNCTION isNull(a DOMAttr) RETURN BOOLEAN;

-- Cast
FUNCTION makeNode(a DOMAttr) RETURN DOMNode;

FUNCTION getQualifiedName(a DOMAttr) return varchar2;
FUNCTION getNamespace(a DOMAttr) return varchar2;
FUNCTION getLocalName(a DOMAttr) return varchar2;
FUNCTION getExpandedName(a DOMAttr) return varchar2;


---------------------------------------------------------------------------
-- DOM Element interface:
--
--    getTagName
--    getAttribute
--    hasAttribute
--    setAttribute
--    removeAttribute
--    getAttributeNode
--    setAttributeNode
--    removeAttributeNode
--    element_getElementsByTagName
--
--    element_isNull (Extension)
--    element_makeNode (Extension)
--    normalize (extension)
--    element_getQualifiedName (extension)
--    element_getNamespace (extension)
--    element_getLocalName (extension)
--    element_getExpandedName (extension)
--    getChildrenByTagName (extension)
--    getChildrenByTagName (extension)
--    resolveNamespacePrefix (extension)
--    freeElement (extension)
--
---------------------------------------------------------------------------

/**
 * DOM Element interface methods
 * These methods implement the DOM Element interface as specified in:
 * http://www.w3.org/TR/REC-DOM-Level-1/level-one-core.html#ID-745549614
 */

FUNCTION getTagName(elem DOMElement) return varchar2;
FUNCTION getAttribute(elem DOMElement, name IN VARCHAR2) return varchar2;
FUNCTION getAttribute(elem DOMElement, name IN VARCHAR2,
                      ns IN VARCHAR2) return varchar2;
FUNCTION hasAttribute(elem DOMElement, name IN VARCHAR2) return BOOLEAN;
FUNCTION hasAttribute(elem DOMElement, name IN VARCHAR2,
                      ns IN VARCHAR2) return BOOLEAN;
PROCEDURE setAttribute(elem DOMElement, name IN VARCHAR2, newvalue IN VARCHAR2);
PROCEDURE setAttribute(elem DOMElement, name IN VARCHAR2, newvalue IN VARCHAR2,
                       ns IN VARCHAR2);
PROCEDURE removeAttribute(elem DOMElement, name IN VARCHAR2);
PROCEDURE removeAttribute(elem DOMElement, name IN VARCHAR2, ns IN VARCHAR2);
FUNCTION getAttributeNode(elem DOMElement, name IN VARCHAR2) RETURN DOMAttr;
FUNCTION getAttributeNode(elem DOMElement, name IN VARCHAR2,
                          ns IN VARCHAR2) RETURN DOMAttr;
FUNCTION setAttributeNode(elem DOMElement, newAttr IN DOMAttr) RETURN DOMAttr;
FUNCTION setAttributeNode(elem DOMElement, newAttr IN DOMAttr,
                          ns IN VARCHAR2) RETURN DOMAttr;
FUNCTION removeAttributeNode(elem DOMElement, oldAttr IN DOMAttr)
RETURN DOMAttr;
FUNCTION getElementsByTagName(elem DOMElement, name IN VARCHAR2)
                              RETURN DOMNodeList;
PROCEDURE freeElement(elem DOMElement);

/**
 * DOM XDK interface methods
 */

-- Check validity of object
FUNCTION isNull(elem DOMElement) RETURN BOOLEAN;

-- Cast
FUNCTION makeNode(elem DOMElement) RETURN domnode;

PROCEDURE normalize(elem DOMElement);
FUNCTION getQualifiedName(elem DOMElement) return varchar2;
FUNCTION getNamespace(elem DOMElement) return varchar2;
FUNCTION getLocalName(elem DOMElement) return varchar2;
FUNCTION getExpandedName(elem DOMElement) return varchar2;
FUNCTION getChildrenByTagName(elem DOMElement, name varchar2)
                              return DOMNodeList;
FUNCTION getChildrenByTagName(elem DOMElement, name varchar2, ns varchar2)
                              return DOMNodeList;
FUNCTION getElementsByTagName(elem DOMElement, name IN VARCHAR2,
                                        ns varchar2) RETURN DOMNodeList;
PROCEDURE resolveNamespacePrefix(elem DOMElement, prefix varchar2,
                                                  data OUT VARCHAR2);
FUNCTION resolveNamespacePrefix(elem DOMElement, prefix varchar2)
                                return VARCHAR2;


---------------------------------------------------------------------------
-- Interface DOMText:
--
--    splitText
--
--    text_isNull (extension)
--    text_makeNode (extension)
---------------------------------------------------------------------------

/**
 * DOM Text interface methods
 * These methods implement the DOM Text interface as specified in:
 * http://www.w3.org/TR/REC-DOM-Level-1/level-one-core.html#ID-1312295772
*/

FUNCTION splitText(t DOMText, offset IN PLS_INTEGER) RETURN DOMText;

/**
 * DOM XDK interface methods
 */

-- Check validity of object
FUNCTION isNull(t DOMText) RETURN BOOLEAN;

-- Cast
FUNCTION makeNode(t DOMText) RETURN DOMNode;


---------------------------------------------------------------------------
-- Interface DOMComment
--
--    comment_isNull (extension)
--    makeNode (extension)
--
---------------------------------------------------------------------------

/**
 * DOM XDK interface methods
 */

-- Check validity of object
FUNCTION isNull(com DOMComment) RETURN BOOLEAN;

-- Cast
FUNCTION makeNode(com DOMComment) RETURN DOMNode;


---------------------------------------------------------------------------
-- Interface DOMCDATASection
--
--    cdatasection_isNull (extension)
--    makeNode (extension)
--
---------------------------------------------------------------------------

/**
 * DOM XDK interface methods
 */

-- Check validity of object
FUNCTION isNull(cds DOMCDATASection) RETURN BOOLEAN;

-- Cast
FUNCTION makeNode(cds DOMCDATASection) RETURN DOMNode;


---------------------------------------------------------------------------
-- Interface Document Type:
--
--    getName
--    getEntities
--    getNotations
--    getpublicid (dom 2)
--    getsystemid (dom 2)
--
--    doctype_isNull (extension)
--    makeNode (extension)
--    findEntity (extension)
--    findNotation (extension)
--
---------------------------------------------------------------------------

/**
 * DOM DocumentType interface methods
 * These methods implement the DOM DocumentType interface as specified in:
 * http://www.w3.org/TR/REC-DOM-Level-1/level-one-core.html#ID-412266927
 */
FUNCTION getName(dt DOMDocumentType) return varchar2;
FUNCTION getEntities(dt DOMDocumentType) RETURN DOMNamedNodeMap;
FUNCTION getNotations(dt DOMDocumentType) RETURN DOMNamedNodeMap;

-- DOM 2
FUNCTION getPublicId(dt DOMDocumentType) return varchar2;
FUNCTION getSystemId(dt DOMDocumentType) return varchar2;

/**
 * DOM XDK interface methods
 */

-- Check validity of object
FUNCTION isNull(dt DOMDocumentType) RETURN BOOLEAN;

-- Cast
FUNCTION makeNode(dt DOMDocumentType) RETURN DOMNode;

-- Other
FUNCTION findEntity(dt DOMDocumentType, name varchar2, par boolean)
                    return DOMEntity;
FUNCTION findNotation(dt DOMDocumentType, name varchar2) return DOMNotation;

---------------------------------------------------------------------------
-- Interface DOMNotation
--
--    getPublicId
--    getSystemId
--
--    notation_isNull (extension)
--    makeNode (extension)
--
---------------------------------------------------------------------------

/**
 * DOM Notation interface methods
 * These methods implement the DOM Notation interface as specified in:
 * http://www.w3.org/TR/REC-DOM-Level-1/level-one-core.html#ID-5431D1B9
 */

FUNCTION getPublicId(n DOMNotation) return varchar2;
FUNCTION getSystemId(n DOMNotation) return varchar2;

/**
 * DOM XDK interface methods
 */

-- Check validity of object
FUNCTION isNull(n DOMNotation) RETURN BOOLEAN;

-- Cast
FUNCTION makeNode(n DOMNotation) RETURN DOMNode;


---------------------------------------------------------------------------
-- Interface DOMEntity:
--
--    getPublicID
--    getSystemID
--    getNotationName
--
--    entity_isNull (extension)
--    makeNode (extension)
--
---------------------------------------------------------------------------

/**
 * DOM Entity interface methods
 * These methods implement the DOM Entity interface as specified in:
 * http://www.w3.org/TR/REC-DOM-Level-1/level-one-core.html#ID-527DCFF2
 */
FUNCTION getPublicId(ent DOMEntity) return varchar2;
FUNCTION getSystemId(ent DOMEntity) return varchar2;
FUNCTION getNotationName(ent DOMEntity) return varchar2;

/**
 * DOM XDK interface methods
 */

-- Check validity of object
FUNCTION isNull(ent DOMEntity) RETURN BOOLEAN;

-- Cast
FUNCTION makeNode(ent DOMEntity) RETURN DOMNode;


---------------------------------------------------------------------------
-- Interface DOMEntityReference
--
--    entityref_isNull (extension)
--    makeNode (extension)
--
---------------------------------------------------------------------------

/**
 * DOM XDK interface methods
 */

-- Check validity of object
FUNCTION isNull(eref DOMEntityReference) RETURN BOOLEAN;

-- Cast
FUNCTION makeNode(eref DOMEntityReference) RETURN DOMNode;


---------------------------------------------------------------------------
-- Interface Processing Instruction:
--
--    pi_getData
--    getTarget
--    pi_setData
--
--    pi_isNull (extension)
--    pi_makeNode (extension)
--
---------------------------------------------------------------------------

/**
 * DOM ProcessingInstruction interface methods
 * These methods implement the DOM ProcessingInstruction interface as
 * specified in:
 * http://www.w3.org/TR/REC-DOM-Level-1/level-one-core.html#ID-1004215813
 */

FUNCTION getData(pi DOMProcessingInstruction) return varchar2;
FUNCTION getTarget(pi DOMProcessingInstruction) return varchar2;
PROCEDURE setData(pi DOMProcessingInstruction, data IN VARCHAR2);

/**
 * DOM XDK interface methods
 */

-- Check validity of object
FUNCTION isNull(pi DOMProcessingInstruction) RETURN BOOLEAN;

-- Cast
FUNCTION makeNode(pi DOMProcessingInstruction) RETURN DOMNode;


---------------------------------------------------------------------------
-- Interface DocumentFragment:
--
--    docfrag_isNull (extension)
--    makeNode (extension)
--
----------------------------------------------------------------------------

/**
 * DOM XDK interface methods
 */

-- Check validity of object
FUNCTION isNull(df DOMDocumentFragment) RETURN BOOLEAN;

-- Cast
FUNCTION makeNode(df DOMDocumentFragment) RETURN DOMNode;

PROCEDURE writeToBuffer(df DOMDocumentFragment, buffer IN OUT VARCHAR2);

PROCEDURE writeToBuffer(df DOMDocumentFragment, buffer IN OUT VARCHAR2,
                        pflag IN NUMBER, indent IN NUMBER);

---------------------------------------------------------------------------
-- Interface DOMDocument:
--
--    getDoctype
--    setDoctype
--    getImplementation
--    getDocumentElement
--    createElement
--    createDocumentFragment
--    createComment
--    createTextNode
--    createCDATASection
--    createProcessingInstruction
--    createAttribute
--    createEntityReference
--    document_getElementsByTagName
--    importNode
--    adoptNode
--
--    document_isNull (extension)
--    document_makeNode (extension)
--    newDOMDocument (extension)
--    getVersion (extension)
--    setVersion (extension)
--    getCharset (extension)
--    setCharset (extension)
--    getStandalone (extension)
--    setStandalone (extension)
--    writeToFile (extension)
--    document_writeToBuffer (extension)
--    document_writeToClob (extension)
--    writeToFile (extension)
--    writeToBuffer (extension)
--    writeToClob (extension)
--    freeDocument (extension)
--
---------------------------------------------------------------------------

/**
 * DOM Document interface methods
 * These methods implement the DOM Document interface as specified in:
 * http://www.w3.org/TR/REC-DOM-Level-1/level-one-core.html#i-Document
 */

FUNCTION getDoctype(doc DOMDocument) RETURN DOMDocumentType;
PROCEDURE setDoctype(doc DOMDocument, name VARCHAR2,
                     sysid VARCHAR2, pubid VARCHAR2);
FUNCTION getImplementation(doc DOMDocument) RETURN DOMImplementation;
FUNCTION getDocumentElement(doc DOMDocument) RETURN DOMElement;
FUNCTION createElement(doc DOMDocument, tagName IN VARCHAR2) RETURN DOMElement;
FUNCTION createElement(doc DOMDocument, tagName IN VARCHAR2,
                       ns IN VARCHAR2) RETURN DOMElement;
FUNCTION createDocumentFragment(doc DOMDocument) RETURN DOMDocumentFragment;
FUNCTION createTextNode(doc DOMDocument, data IN VARCHAR2) RETURN DOMText;
FUNCTION createComment(doc DOMDocument, data IN VARCHAR2) RETURN DOMComment;
FUNCTION createCDATASection(doc DOMDocument, data IN VARCHAR2)
                            RETURN DOMCDATASection;
FUNCTION createProcessingInstruction(doc DOMDocument, target IN VARCHAR2,
                                     data IN VARCHAR2)
                                     RETURN DOMProcessingInstruction;
FUNCTION createAttribute(doc DOMDocument, name IN VARCHAR2) RETURN DOMAttr;
FUNCTION createAttribute(doc DOMDocument, name IN VARCHAR2,
                         ns IN VARCHAR2) RETURN DOMAttr;
FUNCTION createEntityReference(doc DOMDocument, name IN VARCHAR2)
                               RETURN DOMEntityReference;

FUNCTION getElementsByTagName(doc DOMDocument, tagname IN VARCHAR2)
                                       RETURN DOMNodeList;
 -------------------------getDocElementsByTagName--------------------------
 -- Get element by tag name
 --
 -- PARAMETERS
 --      doc          - input DOM Document
 --      tagname      - tagname of new element.
 -- RETURN
 --      Elements list.
 -- EXCEPTIONS
 --   <exception name> - <description>
 -- NOTES
 --
 --
 -- FUNCTION domdoc_getElementsByTagName(doc IN DOMDocument,
 --                                      tagname IN VARCHAR2)
 --                                      RETURN DOMNodeList;

/**
 * DOM XDK interface methods
 */

-- Check validity of object
FUNCTION isNull(doc DOMDocument) RETURN BOOLEAN;

-- Cast
FUNCTION makeNode(doc DOMDocument) RETURN DOMNode;

-- New document
FUNCTION newDOMDocument RETURN domdocument;
FUNCTION newDOMDocument(xmldoc IN sys.xmltype) RETURN DOMDocument;
----------------------------------create----------------------------------
 -- Create domdocument given xmltype
 --
 -- PARAMETERS
 --      xmldoc       - input xmltype
 -- RETURN
 --      DOM Document
 -- EXCEPTIONS
 --   <exception name> - <description>
 -- NOTES
 --
 --
 -- FUNCTION domdoc_create(xmldoc IN sys.xmltype) RETURN DOMDocument;

FUNCTION newDOMDocument(cl IN clob) RETURN domdocument;
FUNCTION getxmltype(doc in DOMDocument) RETURN sys.xmltype;

FUNCTION getVersion(doc DOMDocument) return varchar2;
PROCEDURE setVersion(doc DOMDocument, version VARCHAR2);
FUNCTION getCharset(doc DOMDocument) return varchar2;
PROCEDURE setCharset(doc DOMDocument, charset VARCHAR2);
FUNCTION getStandalone(doc DOMDocument) return varchar2;
PROCEDURE setStandalone(doc DOMDocument, newvalue VARCHAR2);
PROCEDURE writeToFile(doc DOMDocument, fileName VARCHAR2);
PROCEDURE writeToBuffer(doc DOMDocument, buffer IN OUT VARCHAR2);
PROCEDURE writeToClob(doc DOMDocument, cl IN OUT CLOB);
PROCEDURE writeToFile(doc DOMDocument, fileName VARCHAR2,
                      pflag IN NUMBER, indent IN NUMBER);
PROCEDURE writeToBuffer(doc DOMDocument, buffer IN OUT VARCHAR2,
                         pflag IN NUMBER, indent IN NUMBER);
PROCEDURE writeToClob(doc DOMDocument, cl IN OUT CLOB,
                      pflag IN NUMBER, indent IN NUMBER);
PROCEDURE writeToFile(doc DOMDocument, fileName VARCHAR2, charset VARCHAR2);
PROCEDURE writeToBuffer(doc DOMDocument, buffer IN OUT VARCHAR2,
                        charset VARCHAR2);
PROCEDURE writeToClob(doc DOMDocument, cl IN OUT CLOB, charset VARCHAR2);
PROCEDURE writeToFile(doc DOMDocument, fileName VARCHAR2, charset VARCHAR2,
                      pflag IN NUMBER, indent IN NUMBER);
PROCEDURE writeToBuffer(doc DOMDocument, buffer IN OUT VARCHAR2,
                        charset VARCHAR2, pflag IN NUMBER, indent IN NUMBER);
PROCEDURE writeToClob(doc DOMDocument, cl IN OUT CLOB, charset VARCHAR2,
                         pflag IN NUMBER, indent IN NUMBER);
PROCEDURE freeDocument(doc IN DOMDocument);
PROCEDURE freeDocFrag(df IN DOMDocumentFragment);
PROCEDURE freeDocType(dt IN DOMDocumentType);
-- PROCEDURE domdoc_remove(doc IN domdocument);

FUNCTION importnode(doc DOMDocument, importednode domnode, deep boolean)
                    RETURN DOMNode;
FUNCTION adoptnode(doc DOMDocument, adoptednode domnode)
                   RETURN DOMNode;

end dbms_xmldom;
/
show errors;

CREATE OR REPLACE PUBLIC SYNONYM DBMS_XMLDOM FOR xdb.dbms_xmldom
/
CREATE OR REPLACE PUBLIC SYNONYM xmldom FOR xdb.dbms_xmldom
/
CREATE OR REPLACE SYNONYM sys.xmldom FOR xdb.dbms_xmldom
/
GRANT EXECUTE ON xdb.dbms_xmldom TO PUBLIC
/
GRANT EXECUTE ON sys.xmldom TO PUBLIC
/
show errors;


@?/rdbms/admin/sqlsessend.sql


OHA YOOOO