Bonjour,
Je souhaite créer une procédure PL/SQL pour contôler la validité d'un fichier xml par rapport à un schma xml.
Comme solution, j'ai trouvé comme (seul?) moyen, l'enregistrement d'un schéma xml dans la base, la création d'une table basé sur ce schéma puis l'insertion des données de mon fichier dans la table.
Si l'insertion se passe bien, je considère que le fichier est valide dans le cas inverse je rejete le fichier.
Mais voilà, je suis en train de faire des tests pour voir comment se passe cette insertion et je rencontre quelques problèmes.
Je fais pourtant un schéma tout simple ( récuperer sur le tutoriel de xmlfr.org)
et j'essai d'inserer du xml dans la base ...
voici le code :
ce qui me permet d'enregistrer le schéma.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 declare document varchar2(5000):= ' <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <xsd:element name="book"> <xsd:complexType> <xsd:sequence> <xsd:element name="title" type="xsd:string"/> <xsd:element name="author" type="xsd:string"/> </xsd:sequence> <xsd:attribute name="isbn" type="xsd:string"/> </xsd:complexType> </xsd:element> </xsd:schema>'; begin dbms_xmlschema.registerSchema('test_book',document); end; /
puis
pour la création de la table.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 CREATE TABLE GVA_TABLE( id number, contenu XMLTYPE) xmltype COLUMN contenu XMLSCHEMA "test_book" element "book";
et enfin,
pour enregistrer le xml.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 insert into GVA_TABLE values (1,xmltype( '<book isbn="0836217462"> <title> Being a Dog Is a Full-Time Job </title> <author>Charles M. Schulz</author> </book>'));
et voila la réponse que j'obtiens
et la je ne comprend pas d'où vient l'erreur !!!insert into GVA_TABLE values (1,xmltype(
*
ERREUR à la ligne 1 :
ORA-19007: Schéma et élément discordants
A noter que je passe par sqlplus pour faire ceci.
j'ai vu que des vieilles version de sqlplus avaient du mal avec xmltype, mais apparament pas car si je creer la table sans l'associer au schema, je peux insérer les données sans problème.
De plus, j'ai essayé de nombreux exemples que j'ai trouvé sur le net (dont un que j'ai pris sur un forum ici) et j'obtiens toujours cette même erreur ....
j'espère que certains pourront m'éclairer car la je suis à bout !!!
merci.
Partager