From: jlefeuvre@tele2.fr
Date: 06/04/2004 - 08:53
Si tu regardes le bout de code que je fournis il y a bien une boucle qui parcourt l'ensemble des fichiers xsd passés en paramètre.
En regardant le code de plus pres on voit que la construction et le chargement des grammaires se fait pas l'intermediaire de la classe XMLSchemaLoader (qui implemente l'interface XMLGrammarLoader) et qui semble reinitialiser la GrammarPool a chaque chargement de grammaire ...
Je ne comprends pas ...
>
> De: "Nordin Zaanan" <nzaanan@uchrony.be>
> Date: 2004/04/06 mar. AM 10:23:33 GMT+02:00
> À: <xml-tech@xmlfr.org>
> Objet: [xml-tech] Re: Exemple XMLGrammarBuilder
>
>
> regarde dans le code et vois si il ya une boucle qui parcours cette chaine
> de caractere "fichier1.xsd ..\fichier2.xsd ..\fichier3.xsd" et qui traite
> les fichiers
> ----- Original Message -----
> From: <jlefeuvre@tele2.fr>
> To: <xml-tech@xmlfr.org>
> Sent: Tuesday, April 06, 2004 10:21 AM
> Subject: [xml-tech] Exemple XMLGrammarBuilder
>
>
>
> 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 inspiri
> 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 iliments mais a l'issue de
> ce traitement l'objet GrammarPool (diclari 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
> "passies 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)
>
> --
> 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)
>
>
-------------------------------------------------
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
|