Name

XMLELEMENT — Creates XML element

Synopsis

XMLELEMENT ( tag_name varchar ,
list_of_attributes sequence ,
child_or_attribute1 any ,
child_or_attribute2 any ,
... ,
child_or_attributeN any );

Description

XMLELEMENT takes an element name for identifier, an optional collection of attributes for the element, and arguments that make up the element's content. It returns a XML element. The second parameter may be omitted and at that time the rest parameters may be present. If one of the arguments is a call of the xpath_eval returning an attribute value, then this value would be added to element's content (not to element's attributes).

Parameters

tag_name

name of the element, it must be valid XML element name

list_of_attributes

a vector returned by XMLATTRIBUTES function. If the vector is NULL, then no attribute is created.

child_or_attributeI

a string, or name of a column, or concatenation of the names and/or strings, or a vector returned by XMLELEMENT , XMLFOREST , XMLCONCAT , or XMLAGG functions, or an entity object returned by corresponding functions (e.g. xtree_doc or xquery_eval ). If the entity object is an attribute entity, then it is joined to the list of the element's attributes. If a parameter is NULL, then no child element or attribute is created for that parameter.

Errors

Table24.128.Errors signalled by XMLELEMENT

SQLState Error Code Error Text Description
22003 SR354 Too few arguments for XMLELEMENT There must be at least one argument

Examples

Example24.500.XMLELEMENT() with a single argument

XMLELEMENT creates an 'Title' element without content.

              select XMLELEMENT ('Title') from "Demo"."demo"."Employees";
callret
VARCHAR
_______________________________________________________________________________

<Title />
<Title />
. . .
9 Rows. -- 2 msec.


Example24.501.XMLELEMENT() with content

The following example produces an 'Emp' element with three attributes (the 'region' attribute is calculated by xquery_eval ) and five nested subelements

select XMLELEMENT ('Emp',
                    XMLATTRIBUTES ( "EmployeeID" AS "EmpID", "Title"),
                    XMLELEMENT ('Name', "FirstName" || ' ' || "LastName" ),
                    xquery_eval('//@region', xtree_doc ('<a region="WA"></a>')),
                    XMLFOREST ("PostalCode", "City" as "city"),
                    XMLCONCAT (XMLELEMENT ('HomePhone', "HomePhone"),
                               XMLELEMENT ('BirthDate', "BirthDate")))
  from "Demo"."demo"."Employees"
  where "EmployeeID"=1;

callret
VARCHAR
_______________________________________________________________________________

<Emp EmpID="1" Title="Sales Representative" region="WA">
  <Name>Nancy Davolio</Name>
  <city>Seattle</city>
  <PostalCode>98122</PostalCode>
  <HomePhone>(206) 555-9857</HomePhone>
  <BirthDate>1948-12-08</BirthDate>
</Emp>


Example24.502.XMLELEMENT() with the aggregate function XMLAGG()

This example produces 'Emp' elements, with the list of the 'Name' of all employees.

select XMLELEMENT ('Emp',
                    XMLAGG (XMLELEMENT('Name', "FirstName", ' ', "LastName")))
  from "Demo"."demo"."Employees";
callret
VARCHAR
_______________________________________________________________________________

<Emp>
   <Name>Nancy Davolio</Name>
   <Name>Andrew Fuller</Name>
   <Name>Janet Leverling</Name>
   <Name>Margaret Peacock</Name>
   <Name>Steven Buchanan</Name>
   <Name>Michael Suyama</Name>
   <Name>Robert King</Name>
   <Name>Laura Callahan</Name>
   <Name>Anne Dodsworth</Name>
</Emp>