Élément ou attribut ne correspondent pas à la production QName
-
27-10-2019 - |
Question
J'ai un schéma que j'ai « aplati » en utilisant XML Editor. Après i aplatissez-je obtenir une erreur de validation. Que puis-je faire pour y remédier?
Message d'erreur:
F [Xerces] Élément ou attribut ne le font pas adapter la production QName: QName :: = (NCName ':')?. NCName
code:
<xs:import namespace="http://www.opengis.net/gml"
schemaLocation="http://schemas.opengis.net/gml/3.1.1/base/gml.xsd"
xmlns:="http://www.opengis.net/gml/3.1.1" />
<xs:annotation xmlns:="http://www.opengis.net/sps/1.0">
<xs:documentation>
<copyright> SPS is an OGC Standard. Copyright (c)
2007,2010 Open Geospatial Consortium, Inc. All Rights Reserved. To
obtain additional rights of use, visit http://www.opengeospatial.org/legal/ .
</copyright>
</xs:documentation>
</xs:annotation>
Voici une capture d'écran qui pourrait mieux illustrer mon erreur:
EDIT:
Supprimer le côlon en quelque sorte. Quoi exactement que cela « aplanissant » censé faire?
L'aplatissement de la XSD prend une XSD avec beaucoup de comprend et met tout en un seul fichier (sans Includes).
La solution
xmlns:=
est une syntaxe incorrecte. Le côlon est supplémentaire ou le préfixe d'espace de noms après les deux points est manquant. La syntaxe correcte serait xmlns="http://some.uri"
ou xmlns:something="http://some.uri"
Notez que vous avez 2 côlons non nécessaires: première ligne 1002 (où la flèche rouge pointe) et le second est sur la ligne 1003. Cela donne une indication qu'il pourrait y avoir être encore plus d'entre eux.
« QName » fait référence à « nom qualifié » et « NCName » fait référence à « nom non colonisée ». Nom non colonisé est un nom XML qui ne contient pas de caractère deux-points (:). nom qualifié est soit un nom non colonisé ou une combinaison de deux noms de non colonisé séparés par deux points. Par exemple, "abc: DEFGH". La partie avant que le colon est appelé le préfixe d'espace de noms et la partie après le côlon est appelé le nom local. Si un nom qualifié a un préfixe d'espace de noms, puis ce préfixe doit être lié à un espace de noms URI avec une déclaration d'espace de noms préfixée, par exemple xmlns:abc="http://some.uri"
.
Autres conseils
Dans le cas où il est utile à quelqu'un d'autre, je suis le même message d'erreur et rendu compte que ce qui était à l'origine était le côlon dans l'URI espace de noms, par exemple « http: // tout". J'avais concaténer l'espace de noms URI aux ressources et aux propriétés directement plutôt que d'enregistrer l'espace de noms comme un symbole, donc une ressource ou une propriété pourrait ressembler à « http://hl7.org/fhir/:Observation "qui a bien sûr deux et donc ne côlons suit pas la" QName :: = (NCName ':')? NCName "format de production.
Je l'ai fixé d'abord l'enregistrement de l'espace de noms avec le modèle:
model.setNsPrefix("fhir","http://hl7.org/fhir/");
et puis préfixer l'espace de noms dans mes ressources et propriétés:
Resource root = model.getResource("fhir:Patient");
root.addProperty(model.createProperty("fhir:Patient.identifier"), patient.identifier);