Recent experience suggests not. At least not if you want to mix XML and relational data.
Lately we’ve tried to generate XML records from about 10 relational tables using Oracle’s XQuery with the ora:view() function. That attempt failed with an indefinite hang when processing more than a few hundred records (Oracle bug 8944761). Using an explicit cursor in PL/SQL got us around that one, albeit slowly: 20 records/second is not my idea of fast when you have 400,000 records to process. Next we tried to use XQuery and ora:view() to merge about 60 code table lookups into XML records (kinda nice to let users see both codes and descriptions, right?). The performance of roughly three lookups per second was very disappointing.
While the performance of pure relational/SQL and pure XML/XQuery operations appears good, mixing relational data into an XQuery with ora:view() appears to be a recipe for performance problems.