Целевое пространство имен схемы XSD

Я пытаюсь настроить новую схему функций gml, но думаю, что что-то неправильно понимаю в пространстве имен. Вот моя схема:

<xs:schema targetNamespace="http://localhost/dar" xmlns:gml="http://www.opengis.net/gml" xmlns:xs="http://www.w3.org/2001/XMLSchema"
 xmlns="http://localhost/dar">
<xs:import namespace="http://www.opengis.net/gml" schemaLocation="http://schemas.opengis.net/gml/3.1.1/base/gml.xsd" />
<xs:element name="Region" substitutionGroup="gml:_Feature">
    <xs:complexType>
        <xs:complexContent>
            <xs:extension base="gml:AbstractFeatureType">
                <xs:sequence>
                    <xs:element name="regionId" type="xs:string" />
                    <xs:element name="regionName" type="xs:string" />
                    <xs:element ref="gml:Polygon" />
                </xs:sequence>
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>
</xs:element>

And heres my test xml doc:

<wfs:FeatureCollection xmlns="http://localhost/dar" xmlns:wfs="http://www.opengis.net/wfs"
xmlns:gml="http://www.opengis.net/gml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://localhost/dar http://localhost/dar/DariusFeatures.xsd
http://www.opengis.net/wfs http://schemas.opengis.net/wfs/1.1.0/wfs.xsd">
<gml:boundedBy>
    <gml:Envelope srsName="http://www.opengis.net/gml/srs/epsg.xml#63266405">
        <gml:lowerCorner>10 10</gml:lowerCorner>
        <gml:upperCorner>20 20</gml:upperCorner>
    </gml:Envelope>
</gml:boundedBy>
<gml:featureMember>
    <Region>
        <regionId>region432762</regionId>
        <regionName>Southern Block</regionName>
        <gml:Polygon>
            <gml:exterior>
                <gml:LinearRing>
                    <gml:coordinates>38.324,21.754 38.424,21.754 38.424,21.854 38.324,21.854 38.324,21.754 </gml:coordinates>
                </gml:LinearRing>
            </gml:exterior>
        </gml:Polygon>
    </Region>
</gml:featureMember>

Now the schema validates fine in eclipse however when I try to validate the xml doc, eclipse tells me that the schema file's target Namespace is "null" ?

Как видно, я развернул схему на localhost. Кто-нибудь может увидеть, где я накосячил?


person user143278    schedule 15.11.2012    source источник
comment
Почему у вас есть xmlns=localhost/dar в корне вашей схемы?   -  person Eric    schedule 15.11.2012
comment
Спасибо, ваше право не нужно, однако проблема была не в этом, я удалил его, и я все еще получаю те же ошибки проверки   -  person user143278    schedule 15.11.2012
comment
Ваш пример недействителен, вам не хватает закрывающего тега </wfs:FeatureCollection>.   -  person user27874    schedule 12.03.2017


Ответы (3)


Попробуйте добавить следующую строку в вашу XML-схему:

<xs:import namespace="http://www.opengis.net/wfs" schemaLocation="http://schemas.opengis.net/wfs/1.1.0/wfs.xsd" />

Учитывая эту строку (и elementFormDefault="qualified" в xs:schema, как сказал Ян), xml должен пройти проверку.

person tsufiev    schedule 15.11.2012
comment
Извините, не помогло, также я не понимаю, как это могло бы помочь, поскольку элемент _Feature находится в пространстве имен gml, wfs просто использует его - person user143278; 15.11.2012

Краткая версия: вам нужно добавить elementFormDefault="qualified" к элементу xs:schema.

Более длинная версия: по умолчанию только объявления элементов верхнего уровня в схеме входят в целевое пространство имен, элементы, вложенные в сложные типы, не объявляются в пространстве имен. Поэтому схема в том виде, в котором она написана, в настоящее время предполагает, что regionName и regionId не находятся в пространстве имен, но в вашем XML-документе они находятся в пространстве имен http://localhost/dar. elementFormDefault заставляет вложенные «локальные» элементы также принимать целевое пространство имен.

person Ian Roberts    schedule 15.11.2012
comment
Это имеет смысл, однако я добавил elementFormDefault=qualified в localhost/dar/DariusFeatures.xsd, обновил eclipse и Я все еще получаю ту же ошибку проверки, что целевое пространство имен равно null, какие-либо другие предложения? - person user143278; 15.11.2012
comment
@ user143278 Я заметил, что у вас нет пространства имен http://www.opengis.net/gml, указанного в xsi:schemaLocation, возможно, это то, на что он жалуется. - person Ian Roberts; 15.11.2012
comment
это не требуется, так как schemas.opengis.net/wfs/1.1.0/wfs. xsd импортирует его внутри - person user143278; 15.11.2012

Что ж, прошло несколько дней, а проблема с валидацией до сих пор остается загадкой. В качестве обходного пути я обнаружил, что есть более новая версия службы веб-функций OGC по адресу: http://schemas.opengis.net/wfs/2.0/wfs.xsd, который использует gml 3.2 вместо gml 3.1.1.

После небольших изменений, чтобы использовать этот новый формат, все в порядке!

person user143278    schedule 20.11.2012