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

StackOverflow https://stackoverflow.com/questions/4852622

Вопрос

У меня есть схема, которую я «сгладил» с помощью редактора 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>

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

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

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

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

Это было полезно?

Решение

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

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

«Qname» относится к «квалифицированному имени», а «Ncname» относится к «неколонизированному имени». Неколонизированное имя-это имя XML, которое не содержит символа толстой кишки (:). Квалифицированное имя-это либо неколонизированное имя, либо комбинация двух ноколонизированных имен, разделенных толстой кишкой. Например "ABC: Defgh". Часть перед толстой кишкой называется префиксом пространства имен, а часть после толстой кишки называется местным названием. Если квалифицированное имя имеет префикс пространства имен, то этот префикс должен Связаться с пространством имен-ури с предварительным объявлением пространства имен, например, xmlns:abc="http://some.uri".

Другие советы

Если это кому-то будет полезно, я получил то же сообщение об ошибке и понял, что причиной этого было двоеточие в URI пространства имен, т.е."http://что угодно".Я объединял URI пространства имен с ресурсами и свойствами напрямую, а не регистрировал пространство имен как символ, поэтому ресурс или свойство могли выглядеть так:http://hl7.org/fhir/:Наблюдение", который, конечно, имеет два двоеточия и поэтому не соответствует рабочему формату "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);
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top