Elemento o di un attributo non corrispondono QName produzione
-
27-10-2019 - |
Domanda
Ho uno schema che mi sono "appiattiti" utilizzo di XML Editor.Dopo appiattire lo ricevo un errore di convalida.Cosa posso fare per risolvere il problema?
Messaggio Di Errore:
F [Xerces] Elemento o di un attributo non partita QName di produzione:QName::=(NCName':')?NCName.
codice:
<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>
Ecco uno screenshot che potrebbe illustrare meglio il mio errore:
EDIT:
Rimuovere il colon in qualche modo.Che cosa esattamente questo "appiattimento" che deve fare?
L'appiattimento delle xsd prende un xsd con un sacco di comprende e mette tutto in un unico file (senza alcun include).
Soluzione
xmlns:=
è una sintassi non valida.I due punti extra o il prefisso dello spazio dei nomi dopo i due punti mancanti.La sintassi corretta sarebbe xmlns="http://some.uri"
o xmlns:something="http://some.uri"
Nota che hai 2 onu necessari due punti:primo sulla linea 1002 (dove la freccia rossa che punta) e la seconda è sulla linea 1003.Questo dà un suggerimento che ci potrebbe essere anche più di loro.
"QName" si riferisce alla "nome completo" e "NCName" si riferisce a "non colonizzato nome".Non colonizzato nome è un nome XML che non contiene un carattere due punti (:).Nome completo è un non-colonizzato il nome o la combinazione di due non colonizzato nomi separati da due punti.Per esempio "abc:defgh".La parte prima del colon è chiamato il prefisso dello spazio dei nomi e la parte dopo i due punti è chiamato con il nome locale.Se un nome completo, ha un prefisso dello spazio dei nomi, poi il prefisso deve essere associato a un namespace URI con un prefisso dichiarazione dello spazio dei nomi, per esempio xmlns:abc="http://some.uri"
.
Altri suggerimenti
Nel caso In cui è utile a nessuno, ho avuto lo stesso messaggio di errore e si rese conto che cosa stava causando era il colon in URI dello spazio dei nomi, cioè"http://whatever".Mi era stato concatenando l'URI dello spazio dei nomi per le risorse e le proprietà direttamente, piuttosto che la registrazione dei nomi come un simbolo, quindi, una risorsa o una proprietà potrebbe apparire come "http://hl7.org/fhir/:Observation", che ovviamente ha i due punti e, pertanto, non seguire le "QName::=(NCName':')?NCName" produzione formato.
Ho risolto con una prima registrazione dei nomi con il modello:
model.setNsPrefix("fhir","http://hl7.org/fhir/");
e poi aggiungendo lo spazio dei nomi in le mie risorse e le proprietà:
Resource root = model.getResource("fhir:Patient");
root.addProperty(model.createProperty("fhir:Patient.identifier"), patient.identifier);