Jeśli potrzebujesz to zrobić tylko za pomocą "pudełka", możesz użyć:
SELECT REPLACE(XMLELEMENT( "Consignment", XMLATTRIBUTES('123' AS "id",sysdate AS "date" ),
XMLELEMENT( "Box", xmlattributes( '321' as "id" ))
).getstringval(),'></Box>',' />') as xxx FROM DUAL;
Jeśli masz inne tagi, które muszą zostać przetworzone w ten sposób, musisz użyć REGEXP_REPLACE przy użyciu tej samej logiki.
Jednak semantycznie obie formy reprezentują dokładnie te same dane, dlatego nie możesz zrobić tego, co chcesz "łatwo" z jakimś parametrem podanym do generatora XML (i dlaczego może nie powinieneś tego robić w pierwszej kolejności!) .