Bonjour,
Cette question est commune à JAVA et XML :
Comment faire pour valider un document XML avec un schéma (.xsd) en java sans que le document XML ne contienne de lien vers le fichier .xsd ?
J'espère avoir été claire !
Merci pour vos réponses.
Bonjour,
Cette question est commune à JAVA et XML :
Comment faire pour valider un document XML avec un schéma (.xsd) en java sans que le document XML ne contienne de lien vers le fichier .xsd ?
J'espère avoir été claire !
Merci pour vos réponses.
Très claireJ'espère avoir été claire !. Ta question est un peu recurrente sur ce forum.
1) Si tu ne précises pas avec quel parser tu travailles (xerces, libxml, msxml), il est difficile de répondre à ta question. En effet certains disposent d'une methode setSchema() (ou qqch d'equivalent), d'autres pas (c'est le cas de la plupart, car ce genre de methode n'est pas prevue dans les specs du W3C).
2) Sinon pour les parsers validants qui implementent SAX, une solution consiste à utiliser la classe EntityResolver. Cf. http://www.developpez.net/forums/viewtopic.php?t=143384
Tcho
Phil
Donc, je parse avec SAX (JAXP) et donc apparemment, on ne peut pas valider...
Je vais regarder,
Merci
Petit rappel (faut bien sortir sa science de temps en temps):Donc, je parse avec SAX (JAXP)
Contrairement à ce que la majorité des gens pense, JAXP n'est pas un parser. En effet, les classes de JAXP constituent une couche qui se situe au-dessus des parsers (SAX et DOM) et qui propose une même interface quelque soit l'interface propriétaire sous-jacente. Cela permet de changer dynamiquement de parser. Cela signifie donc que l'on peut utiliser JAXP pour interfacer Crimson (le parser de Sun) ou Xerces ou encore le parser d'Oracle.
Donc quand tu écris "je parse avec JAXP", cela ne veut pas dire grand chose si tu ne précises pas le parser sous-jacent (Crimson, Xerces, OracleXMLParser). La confusion vient du fait que Crimson est fournit par defaut dans la distribution JAXP de Sun.
A part ça la solution utilisant EntityResolver doit fonctionner avec JAXP (quelque soit le parser), mais il est vrai qu'elle oblige le XML source à contenir une "fausse" reference de schema (genre "monFauxSchema.xsd").
Phil
Partager