From: jlefeuvre@tele2.fr
Date: 06/04/2004 - 08:21
Bonjour,
Je travaille sur la validation de document xml à partir de grammaires issues de schema xsd.
Afin d'apprehender les differents mecanismes mis en jeu je me suis inspiré de l'exemple fourni dans xerces2 (version 2.6.2) sur la construction de grammaire et la validation de document xml : XMLGrammarBuilder.
A partir d'un fichier xsd le programme construit bien une grammaire qui est disponible par la suite dans un objet GrammarPool.
Par contre, et c'est ma question, je ne comprend pas pourquoi lorsque l'on passe plusieurs schemas de type xsd en argument l'objet GrammarPool lui ne contient systematiquement que la grammaire correspondant au premier schema xsd fourni en parametre.
exemple:
On passe en argument du programme les elements suivants
-a ..\fichier1.xsd ..\fichier2.xsd ..\fichier3.xsd -i ..\exemple1.xml
Nous avons bien 3 schemas xsd.
La construction des grammaires ainsi que leur mise en place dans un objet GrammarPool se fait, d'apres ce que j'ai compris, au travers du code suivant
try {
if(isDTD) {
for (i = 0; i < externalDTDs.size(); i++) {
Grammar g = preparser.preparseGrammar(XMLGrammarDescription.XML_DTD, stringToXIS((String)externalDTDs.elementAt(i)));
// we don't really care about g; grammarPool will take care of everything.
}
} else { // must be schemas!
for (i = 0; i < schemas.size(); i++) {
Grammar g = preparser.preparseGrammar(XMLGrammarDescription.XML_SCHEMA, stringToXIS((String)schemas.elementAt(i)));
// we don't really care about g; grammarPool will take care of everything.
}
}
} catch (Exception e) {
e.printStackTrace();
System.exit(1);
}
Dans mon exemple la variable schemas contient 3 éléments mais a l'issue de ce traitement l'objet GrammarPool (déclaré precedement) ne contient lui qu'une grammaire construite à partir du 1er fichier (fichier1.xsd).
Du coup la validation du fichier source exemple1.xml ne se fait pas correctement car le programme ne dispose pas de l'ensemble des grammaires "passées en parametre".
Pourquoi ?
Cordialement.
-------------------------------------------------
Internet simplement moins cher avec Tele2 : http://www.tele2.fr
-------------------------------------------------
--
Devenez redacteur <XML>fr et contribuez au developpement du
xml francophone (http://xmlfr.org/infos/redacteurs/) !
Liste de diffusion "xml-tech@xmlfr.org" (http://xmlfr.org).
Cette liste est a votre disposition pour discuter en francais de
tout sujet technique lie a XML.
Pour resilier votre abonnement, envoyez un message contenant
la commande "unsubscribe" a xml-tech-request@xmlfr.org
(mailto:xml-tech-request@xmlfr.org?Subject=unsubscribe)
Archive générée par hypermail 2.1.3 le 28/06/2004 - 11:06 UTC
webmaster@xmlfr.org
|