Элемент или атрибут не соответствуют продукции QName - PullRequest
3 голосов
/ 31 января 2011

У меня есть схема, которую я «сплющил» с помощью XML Editor.После того, как я сгладил это, я получаю ошибку проверки.Что я могу сделать, чтобы это исправить?

Сообщение об ошибке:

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>

Вот скриншот, который может лучше проиллюстрировать мою ошибку: enter image description here

РЕДАКТИРОВАТЬ:

Уберите двоеточие как-нибудь.Что именно должно делать это «выравнивание»?

Сглаживание xsd берет xsd с большим количеством включений и помещает все это в один файл (без каких-либо включений)).

Ответы [ 2 ]

12 голосов
/ 31 января 2011

xmlns:= неверный синтаксис.Двоеточие является дополнительным или префикс пространства имен после пропущенного двоеточия.Правильный синтаксис: xmlns="http://some.uri" или xmlns:something="http://some.uri"

Обратите внимание, что у вас есть 2 ненужных двоеточий: первый в строке 1002 (где указывает красная стрелка) и второйнаходится на линии 1003. Это дает подсказку, что их может быть даже больше.

«QName» относится к «квалифицированному имени», а «NCName» относится к «неколонизированному имени».Неколонизированное имя - это имя XML, которое не содержит двоеточия (:).Полное имя - это неколонизированное имя или комбинация двух неколонизированных имен, разделенных двоеточием.Например, "abc: defgh".Часть перед двоеточием называется префиксом пространства имен, а часть после двоеточия называется локальным именем.Если полное имя имеет префикс пространства имен, то этот префикс должен быть связан с URI пространства имен с префиксным объявлением пространства имен, например xmlns:abc="http://some.uri".

0 голосов
/ 25 мая 2019

В случае, если это кому-нибудь пригодится, я получил то же сообщение об ошибке и понял, что причиной этого является двоеточие в URI пространства имен, то есть "http://whatever". Я конкатенировал URI пространства имен к ресурсам и свойства напрямую, а не регистрация пространства имен как символа, поэтому ресурс или свойство может выглядеть как "http://hl7.org/fhir/:Observation",, который, конечно, имеет два двоеточия и поэтому не следует за" 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);
...