If the given instance is well-formed then this function will return the top-level element of the document that is stored within the instance. If the given instance is a fragment then NULL will be returned because there may be no top-level elements or too many of them.
Note that inspite of this functions name this function actually returns the a top-level node rather than not a root node. According to the W3C XPATH standards, the root element is an implicit node whose children are top-level elements, comments, processing instructions and maybe text nodes. E.g. if a correct HTML document is started by tag <HTML> and ended by corresponding </HTML> tag then the only top-level node is the "HTML" element node and this node is a single child of the root node.
If the given instance is well-formed then the function returns a top-level element of the document that is stored in the instance. If the given instance is fragment then NULL is returned, because there may be no top-level elements or too many of them.
If the given instance is schema-based then the returned instance is based on the same schema.
The function returns an XMLType instance.
First select statement lists well-formed documents; second one lists the only fragment in the table.
create table TEST_XMLS (I integer primary key, XMLVAL XMLType); insert into TEST_XMLS values (1, XMLType('<emp><empno>221</empno><ename>John</ename></emp>')); insert into TEST_XMLS values (2, XMLType('<po><pono>331</pono><poname>PO_1</poname></po>')); insert into TEST_XMLS values (3, XMLType('<oil-rig id="14a" water="0.413"/><oil-rig id="14b" water="0.402"/>')); select e.I, e.XMLVAL.getRootElement().getClobVal() from TEST_XMLS as e where e.XMLVAL.getRootElement() is not null I callret INTEGER NOT NULL NVARCHAR _______________________________________________________________________________ 1 <emp><empno>221</empno><ename>John</ename></emp> 2 <po><pono>331</pono><poname>PO_1</poname></po> 2 Rows. -- 00000 msec. select e.I, e.XMLVAL.getClobVal() from TEST_XMLS as e where e.XMLVAL.getRootElement() is null I callret INTEGER NOT NULL NVARCHAR _______________________________________________________________________________ 3 <oil-rig id="14a" water="0.413" /><oil-rig id="14b" water="0.402" /> 1 Rows. -- 00000 msec.