j'utilise Xerces pour valider une instance xml contre le schéma:élément enfants avec préfixe d'espace de noms ont été considérés comme non valides par xerces
parser.setFeature("http://xml.org/sax/features/namespaces", true);
parser.setFeature("http://xml.org/sax/features/namespace-prefixes", true);
parser.setFeature("http://xml.org/sax/features/validation", true);
parser.setProperty("http://apache.org/xml/properties/schema/external-schemaLocation",
schemaLocation);
parser.setFeature("http://apache.org/xml/features/validation/schema", true);
parser.parse(new InputSource(xml));
Voici mon exemple xml:
<?xml version="1.0"?>
<eml:eml packageId="tao.12926.1" system="knb" xmlns:eml="eml://ecoinformatics.org/eml-2.1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="eml://ecoinformatics.org/eml-2.1.0 eml.xsd">
<dataset>
.......
</dataset>
</eml:eml>
Ce fichier XML est considéré comme valide.
Cependant, si j'ajouté le préfixe "EML" à l'élément "jeu de données":
<?xml version="1.0"?>
<eml:eml packageId="tao.12926.1" system="knb" xmlns:eml="eml://ecoinformatics.org/eml-2.1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="eml://ecoinformatics.org/eml-2.1.0 eml.xsd">
<eml:dataset>
.......
</eml:dataset>
</eml:eml>
Il me donne une erreur: cvc-type.2.4.a-complexe: contenu non valide en commençant par l'élément « EML : ensemble de données '. Le contenu doit correspondre à '((("": access) {0-1}, (((("": dataset) | ("": citation)) | ("": software)) | ("": protocole))), ("": additionalMetadata) {0-UNBOUNDED}) '.
Je ne pouvais pas comprendre cela. "dataset" a par défaut l'espace de noms au cours de notre définition de schéma. "dataset" juste une version abrégée de "eml: dataset". Pourquoi xerces n'aime pas?
Pourriez-vous me donner quelques indices?
Merci!
L'élément de dataset est dans l'espace de noms nul, ce qui vous fait penser autrement – Alohci