Name

XMLType.getRootElement — Returns top-level element of the given instance (NULL for fragment)

Synopsis

XMLType.getRootElement ( );

Description

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 in spite 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.

Return Types

The function returns an XMLType instance.

Examples

Example24.552.A table with an XMLType column

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
xml:id="14a_04" water="0.413"/><oil-rig
xml:id="14b_04" 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
xml:id="14a_05" water="0.413" /><oil-rig
xml:id="14b_05" water="0.402" />

1 Rows. -- 00000 msec.