Cliquez ici.
Accueil
 chercher             Plan du site             Info (English version) 
L'histoire de XML s'écrit en ce moment même. XMLfr vous aide à la suivre et à en dégager les tendances.Les listes de discussions XMLfr sont à votre disposition pour réagir sur nos articles ou simplement poser une question.Si vous ètes passionnée(e) par XML, pourquoi ne pas en faire votre métier ?XMLfr n'est heureusement pas le seul site où l'on parle de XML. Découvrez les autres grâce à XMLfr et à l'ODP.Les partenaires grâce auxquels XMLfr peut se développer.Pour tout savoir sur XMLfr.XMLfr sans fil, c'est possible !Pour ceux qui veulent vraiment en savoir plus sur XML.L'index du site.
 Commentaires et questions non techniques.Commentaires et questions techniques.

 
Cliquez ici.

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

 

xml tech

Discussions techniques au sujet de XML.

Cette liste est à votre disposition pour discuter en français de tout sujet technique lié à XML.



Devenez rédacteur <XML>fr et contribuez au développement du xml francophone !
Les documents publiés sur ce site le sont sous licence "Open Content"
Conception graphique
  l.henriot@online.fr  

Conception, réalisation et hébergement