要素または属性は、QNameの生産と一致しません
-
27-10-2019 - |
質問
XMLエディターを使用して「フラット化」したスキーマがあります。平らになった後、検証エラーが発生します。それを修正するために私は何ができますか?
エラーメッセージ:
f [xerces]要素または属性はqnameの生成と一致しません:qname :: =(ncname ':')?ncname。
コード:
<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>
これが私のエラーをよりよく説明するかもしれないスクリーンショットです:
編集:
どういうわけかコロンを取り除きます。これは正確に何をするはずですか?
XSDの平坦化にはかかります XSD 多くの含まれて、すべてを1つのファイルに入れます(含まれることなく)。
解決
xmlns:=
無効な構文です。コロンはエクストラまたは名前空間のプレフィックスがありません。コロンがありません。正しい構文はそうです xmlns="http://some.uri"
また xmlns:something="http://some.uri"
あなたが持っていることに注意してください 2 必要に応じたコロン:最初の1002(赤い矢印が指している場所)と2番目のコロンは1003行にあります。これは、さらに多くのものがあるかもしれないというヒントを与えます。
「QName」とは「適格な名前」を指し、「NCNAME」は「非植民地化名」を指します。非植民地化名は、コロン文字(:)を含まないXML名です。資格のある名前は、コロンで区切られた2つの非植民地化された名前の組み合わせのいずれかです。たとえば、「ABC:DEFGH」。コロンの前の部分は名前空間プレフィックスと呼ばれ、コロンの後の部分はローカル名と呼ばれます。適格な名前に名前空間プレフィックスがある場合、そのプレフィックス しなければならない たとえば、接頭辞付きの名前空間宣言を備えた名前空間URIにバインドされています xmlns:abc="http://some.uri"
.
他のヒント
他の人に役立つ場合、私は同じエラーメッセージを受け取り、それが原因となっているのは名前空間URIのコロンであることに気付きました。http://何でも「。名前空間をシンボルとして登録するのではなく、リソースとプロパティに名前空間URIを直接連結していたので、リソースやプロパティは次のように見えるかもしれません。」http://hl7.org/fhir/:Observation「もちろん、2つのコロンがあり、したがって「qname :: =(ncname ':')?ncname」制作形式には従いません。
最初にモデルに名前空間を登録することで修正しました。
model.setNsPrefix("fhir","http://hl7.org/fhir/");
そして、私のリソースとプロパティの名前空間を準備します:
Resource root = model.getResource("fhir:Patient");
root.addProperty(model.createProperty("fhir:Patient.identifier"), patient.identifier);