La validation des fichiers XML à l'encontre de schéma Oracle PL/SQL

J'ai une obligation de valider un fichier entrant à l'encontre d'un XSD. Les deux seront sur le système de fichiers du serveur.

J'ai regardé dbms_xmlschema, mais ont eu des problèmes à la faire fonctionner.

Pourrait-il être plus facile à faire avec un peu de Java?
Quelle est la classe la plus simple que je pourrais mettre dans la base de données?

Voici un exemple simple:

DECLARE
  v_schema_url       VARCHAR2(200) := 'http://www.example.com/schema.xsd';
  v_blob             bLOB;
  v_clob             CLOB;
  v_xml XMLTYPE;
BEGIN
  begin
    dbms_xmlschema.deleteschema(v_schema_url);
  exception
    when others then
     null;
  end;

  dbms_xmlschema.registerSchema(schemaURL => v_schema_url,
                                schemaDoc => '
<xs:schema targetNamespace="http://www.example.com" 
xmlns:ns="http://www.example.com" 
xmlns:xs="http://www.w3.org/2001/XMLSchema" 
elementFormDefault="qualified" attributeFormDefault="unqualified" version="3.0">
<xs:element name="something"  type="xs:string"/>
</xs:schema>',
                                local => TRUE);

  v_xml := XMLTYPE.createxml('<something xmlns="http://www.xx.com" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://www.example.com/schema.xsd">
data
</something>');

  IF v_xml.isschemavalid(v_schema_url) = 1 THEN
    dbms_output.put_line('valid');
  ELSE
    dbms_output.put_line('not valid');
  END IF;
END;

Cela génère l'erreur suivante:

ORA-01031: insufficient privileges
ORA-06512: at "XDB.DBMS_XDBZ0", line 275
ORA-06512: at "XDB.DBMS_XDBZ", line 7
ORA-06512: at line 1
ORA-06512: at "XDB.DBMS_XMLSCHEMA_INT", line 3
ORA-06512: at "XDB.DBMS_XMLSCHEMA", line 14
ORA-06512: at line 12

OriginalL'auteur steevc | 2008-09-17