solkar: ..es viele Dinge gibt die man nicht wirklich braucht...

Beitrag lesen

Hi,

danke, hilft schon mal sehr. Aber wie ist das mit der URL? Muss das schema auch online stehen oder geht auch lokal?

Lass uns das Problem mal zergliedern:

Wenn Du

A) mit Werkzeug X/Sprache VALIEDIREN willst, musu das Schema "irgendwo" liegen. Sei es lokal, auf einem Webserver, z.H. internen des Orakels.

B) Tabellen erzeugen und Daten einfügen willst ;-)
muss der INHALT des Schemas einmal in dieser Form

DBMS_XMLSCHEMA.registerSchema(  
    'http://localhost:8080/public/baz.xsd',  
--  
--    Choose ONE!  
--  
--    1) Anderer Webserver:  
--    HTTPURIType('http://localhost:101010/baz.xsd').getClob(),  
--  
--    2) z.B. CREATE DIRECTORY TMPDIR AS 'C:\Temp'  
--    bfilename('TMPDIR','baz.xsd'),  
--  
--    3) CREATE DIRECTORY UND DBMS_XDB.CREATERESOURCE(...)  
--    XDBURIType('/public/baz.xsd').getClob(),  
--    ,  
    TRUE,  
    TRUE,  
    FALSE,  
    TRUE  
);  

vom Orakel vernascht worden sein.

Ob's den XSD-CLOB per HTTP, Resource_Handle, oder schnöder BFILE kriegt ist hierzu erstmal egal; Oracle kann nun mit sowas wie   'http://localhost:424242/public/baz.xsd' etwas anfangen um Namespaces und Schemata zu lokalisieren.

Diese - ggf. url - URL sollte dann in XML-Daten beim INSERT in die XMLTYPE TABLE stehen:

<irgednwas xmlns:xdb="http://xmlns.oracle.com/xdb"  
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
      xsi:noNamespaceSchemaLocation="http://foo.bar:424242/baz.xsd">  
<!--  
    GANZ GANZ viele Daten...  
-->  
</irgendwas>  

Wenn lokal, muss dann ein Webserver laufen oder wie kann ich das einfach mit einer lokalen Angabe machen? Warum gib es eigentlich noch die URL-Angabe, wenn es XDBURIType gibt?

Mir drängt sich eher die Frage auf, was die ganze "XML-Tabellen-Magie" eigentlich bewirken soll.

XML aus relationalen Daten zu ERZEUGEN geht mit einer Query oder Client-seitig.

XML in relationale Strukturen zu IMPORTIEREN geht mittels spezieller VIEWS ggf im Verbund mit Triggern und /oder SP.
Oder manuell per SP.
Oder Client-seitig.
...

Grüsse

Solkar