SELECT DBMS_XMLGEN.getXML(
DBMS_XMLGEN.newcontextfromhierarchy(
'WITH hirarchy AS(' || chr(10) ||
' SELECT 1 ID, NULL parent_id, ''article_list'' NAME, NULL VALUE, 1 POS FROM dual UNION ALL' || chr(10) ||
' SELECT 2, 1, ''article'', ''shoe'', 2 FROM dual UNION ALL' || chr(10) ||
' SELECT 3, 1, ''article'', ''shirt'', 2 FROM dual' || chr(10) ||
'), attr AS(' || chr(10) ||
' SELECT 2 element_id, ''article_no'' NAME, ''123456789'' VALUE FROM dual UNION ALL' || chr(10) ||
' SELECT 3 element_id, ''article_no'' NAME, ''0815'' VALUE FROM dual UNION ALL' || chr(10) ||
' SELECT 3 element_id, ''name'' NAME, ''T-Shirt'' VALUE FROM dual' || chr(10) ||
')' || chr(10) ||
' SELECT LEVEL, XMLELEMENT(EVALNAME(h.name), h.value)' || chr(10) ||
' FROM hirarchy h' || chr(10) ||
'CONNECT BY PRIOR h.id = h.parent_id' || chr(10) ||
' START WITH h.parent_id IS NULL' || chr(10) ||
' ORDER SIBLINGS BY POS'
)
)
FROM dual