Bonjour a tous,
Je developpe sous visual studio 2005 (.net 2.0) en c#.
J'aimerai valider une document xml en fonction d'une xsd.
Le problème c'est que mon schéma est composé de plusieurs fichiers xsd, et fait des références vers ceux ci (via include ou import).
J'utilise un XMLSchemaSet (je ne veux pas de XmlValidatingReader).
Voici un bout de mon code :
Code classique.Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 XmlSchemSet schemaSet = new XmlSchemaSet(); schemaSet.Add(null, xsd_path); schemaSet.Compile(); XmlReaderSettings settings = new XmlReaderSettings(); settings.Schemas = schemaSet; settings.ValidationEventHandler += new ValidationEventHandler(ValidationCallBack); settings.ValidationType = ValidationType.Schema; XmlReader reader = XmlReader.Create(xml_path, settings) try { while (reader.Read()) { } reader.Close(); } catch (XmlException e) { reader.Close(); MessageBox.Show(e.Message); }
Le problème c'est que l'handler d'erreur n'est jamais appelé.
Le code marche bien si le xsd ne fait pas de référence vers d'autre fichier (et il m'est impossible de modifier les schemas)
J'ai essayer beaucoup de chose sur les validationflags du XmlReaderSettings, les XmlUrlResolver rien n'y fait, il ne se passe rien.
J'ai aussi tenté d'ajouter tous les xsd dans le xmlschemaset, le resultat est le même. Chaque fois le schéma est compilé, mais la validation ne marche pas.
J'ai affiché tous les type contenu dans le schéma et tous les types sont présents. Je ne sais plus trop quoi faire.
Merci pour votre aide