Bonjour,

je parse un fichier XML avec DOM en le validant par rapport à un Schéma. Je n'ai aucun problème pour la validation, mais j'aimerais accéder aux information de post-validation (PSVI).

J'ai copié depuis l'exemple de la documentation Xerces:
Use the http://apache.org/xml/properties/dom...ent-class-name property to set org.apache.xerces.dom.PSVIDocumentImpl as the implementation of the org.w3c.dom.Document interface. In the resulting DOM tree, you may cast org.w3c.dom.Element to the org.apache.xerces.xs.ElementPSVI and org.w3c.dom.Attr to the org.apache.xerces.xs.AttributePSVI.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
Document document = parser.getDocument();
Element root = document.getDocumentElement();
// obtenir le PSVI de l'élément racine
ElementPSVI rootPSVI = (ElementPSVI)root;
// obtenir le schéma utilisé pour valider ce document
XSModel schema = rootPSVI.getSchemaInformation();
Voici mon code:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
parser.setFeature("http://xml.org/sax/features/validation", true);
parser.setFeature("http://apache.org/xml/features/validation/schema", true);
parser.setFeature("http://xml.org/sax/features/namespaces",true) ;
parser.setProperty("http://apache.org/xml/properties/dom/document-class-name","org.apache.xerces.dom.PSVIDocumentImpl");
parser.parse(file.toURI().toString());
Document doc = parser.getDocument();
ElementPSVI rootPSVI = (ElementPSVI)doc.getDocumentElement();
XSModel schema = rootPSVI.getSchemaInformation();
Apres ce code, schema est toujours null. Dans le débugger, je vois que tous les champs concernant le PSVI sont null. Pourtant, la validation a bel et bien lieu, les erreurs en cas d'instance invalide le prouvent.

Quelqu'un a-t-il déjà utilisé le PSVI avec Xerces et DOM ?
Merci d'avance.