probleme d'insertion de xml dans une table
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 :
Code:
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;
/ |
ce qui me permet d'enregistrer le schéma.
puis
Code:
1 2 3 4 5 6
|
CREATE TABLE GVA_TABLE(
id number,
contenu XMLTYPE)
xmltype COLUMN contenu
XMLSCHEMA "test_book" element "book"; |
pour la création de la table.
et enfin,
Code:
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>')); |
pour enregistrer le xml.
et voila la réponse que j'obtiens
Citation:
insert into GVA_TABLE values (1,xmltype(
*
ERREUR à la ligne 1 :
ORA-19007: Schéma et élément discordants
et la je ne comprend pas d'où vient l'erreur !!!
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.