The restrictions you specified are hard to get around because dbms_xmlgen does not provide a way to set the date format. It uses nls_date_format. dbms_xmlquery does allows you to specify the date format, but not as shown.
You can try adding columns to tables to store formatted dates. Refresh the display column when inserting, updating, etc.
You can also try wrapping your inner selection inside another selection that runs the to_date function on a smaller set.
dbms_xmlgen.getxml(' select to_date(date_column_1, 'your/date/format') from ( your original query here )');
source share