Элемент или атрибут не соответствуют продукции QName

У меня есть схема, которую я "сгладил" с помощью 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 с множеством включений и помещает все это в один файл (без включения).


person capdragon    schedule 31.01.2011    source источник
comment
Уберите двоеточие как-нибудь. Что именно должно делать это сглаживание?   -  person biziclop    schedule 31.01.2011
comment
Удаление двоеточия у меня не сработало, но посмотрите мое редактирование о сглаживании.   -  person capdragon    schedule 31.01.2011


Ответы (2)


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

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

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

person jasso    schedule 31.01.2011
comment
Я предполагаю, что выравнивание схемы все испортит, потому что, если я проверяю все включенные файлы, они проверяются нормально, но после выравнивания появляются эти ошибки. Я попытался удалить двоеточие в строке 1002, но это дало мне ошибку в строке 1003. Когда я удалил двоеточие в строке 1003, это дало мне больше (как вы и сказали). После удаления последнего двоеточия появляется много ошибок проверки. - person capdragon; 01.02.2011

В случае, если это полезно для кого-то еще, я получил такое же сообщение об ошибке и понял, что причиной этого было двоеточие в 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);
person Daniel Cotter    schedule 25.05.2019