Die gleiche Vereinfachung wie für die Transformation ist auch für die Validierung mit Hilfe von XML Schema möglich. Hier kann man mit Hilfe der Methode isSchemaValid() herausfinden, ob eine XML-Datei in Hinblick auf das angegebene Schema gültig ist. Zusätzlich lässt sich mit isSchemaBased() herausfinden, ob für das angegebene XML-Dokument ein Schema vorliegt bzw. eine Schema-Verknüpfung vorhanden ist. Dann lässt sich mit getSchemaURL() genau diese Verknüpfung aus einem XML-Dokument filtern.
Die allgemeinte Syntax XMLIsValid ( XMLType_inst [, schemaurl [, elem]]) zeigt, dass neben dem XML-Dokument die Schema-URL für die XML Schema-Datei und bei mehrdeutigen Wurzelelementen im Schema das Wurzelelement des Instanzdokuments angegeben werden können.
Auch hier lässt sich leicht eine PL/SQL-Variante vorstellen, in der nicht Spaltenwerte, sondern Variablenwerte auf Gültigkeit geprüft werden und die benötigten Variablen für XML Schema und XML selbst jeweils als XMLType-Daten vorliegen.
-- Werte einfügen
INSERT INTO termin_d VALUES(1015068, XMLType('<Termin Nr="498">
<Beginn>10.06.03</Beginn>
<Ende>13.06.03</Ende>
<Kurs>1015068</Kurs>
</Termin>'),
XMLType('<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
<xs:element name="Termin">
<xs:complexType>
<xs:sequence>
<xs:element name="Beginn" type="xs:string"/>
<xs:element name="Ende" type="xs:string"/>
<xs:element name="Kurs" type="xs:int"/>
</xs:sequence>
<xs:attribute name="Nr" type="xs:short" use="required"/>
</xs:complexType>
</xs:element>
</xs:schema>
'));
/
SELECT XMLIsValid(t_xml, t_schema), t_xml, t_schema
FROM termin_d;
comelio.com


