Registering xsd makes the DB know how the xml look like.Exactly, but that doesn't make the database know what your requirement is, i.e. how do you want to present query results etc.
And after you can access "tables" build in the object ds -> ds.Tables.You still have to know what to query, don't you?
Can you think of an approach with PL/SQL?What you describe is similar to the Object-Relational storage I mentioned above.
You still have to know what to query, don't you?No, you don't. But you don't have to program element 1 in column 1, element 2 in column 2 etc. It handles it automatically. You just say insert into <your table 1> ds.Tables["table1 from xml"].
Does that manage any kind of complexity?
insert into <table_name> select * from <some table or view>
will be return more columns than in <table_name>
select * from <some table or view>
then create view on the above script
select <columns> from <table> , xmltable ( .... <columns> ... )