2012-11-15 13 views
2

새로운 gml 지형지 물 스키마를 설정하려고하지만 네임 스페이스에 대해 오해하고있는 것 같습니다. Heres는 내 스키마XSD 스키마 타겟 네임 스페이스

<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> 

그리고 heres는 내 테스트의 XML 문서 : 내가하는 XML 문서의 유효성을 검사하려고 그러나 때

<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> 

이제 스키마는 이클립스에서 잘 확인합니다 이클립스는 스키마 파일의 대상 네임 스페이스가 "null"이라고 알려줍니까?

위에서 볼 수 있듯이 localhost에 스키마를 배포했습니다. 내가 엉망인 곳을 누구나 볼 수 있습니까?

+0

왜 스키마 루트에 xmlns = "http : // localhost/dar"가 있습니까? – Eric

+0

고마워요, 당신의 권리는 필요하지 않습니다. 그러나 문제가 아니 었습니다. 나는 그것을 제거했고, 여전히 동일한 검증 오류를 받았습니다. – user143278

+0

예제가 유효하지 않습니다. 닫는 것이 없습니다. '태그. – user27874

답변

0

짧은 버전 : xs:schema 요소에 elementFormDefault="qualified"을 추가해야합니다.

긴 버전 : 기본적으로 스키마의 최상위 요소 선언 만 대상 네임 스페이스에 들어가고 복합 유형 안에 중첩 된 요소는 네임 스페이스로 선언되지 않습니다. 따라서 작성된 스키마는 현재 regionNameregionId이 네임 스페이스에 없지만 XML 문서의 스키마가 http://localhost/dar 네임 스페이스에 있다고 가정합니다. elementFormDefault은 중첩 된 "local"요소가 대상 네임 스페이스에도 적용되도록합니다.

+0

그렇지만 elementFormDefault = "qualified"를 http : //localhost/dar/DariusFeatures.xsd에 추가하고 이클립스를 새로 고쳤으며 타겟 네임 스페이스가 null 인 다른 유효성 검사 오류가 여전히 유효합니까? – user143278

+0

@ user143278'http : // www.opengis.net/gml' 네임 스페이스가'xsi : schemaLocation'에 없다는 것을 알았습니다. 아마도 불평 할 것입니다. –

+0

http://schemas.opengis.net/wfs/1.1.0/wfs.xsd가 내부적으로 가져 오기 때문에 필요하지 않습니다. – user143278

1

시도하여 XML 스키마에 다음 줄을 추가 :

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

그 라인을 감안할 때 (그리고 XS에서의 elementFormDefault = "자격을 갖춘"이안이 말했듯이, 스키마), XML의 유효성을 검사해야한다.

+0

죄송합니다. 도움을받지 못했습니다. _Feature 요소가 있기 때문에 도움이되지 않습니다. gml 네임 스페이스는 wfs가 사용합니다. – user143278

0

음, 며칠이 지났지 만 검증 문제는 여전히 수수께끼로 남아 있습니다. 작은 변화 후 GML 3.1.1

대신 GML 3.2을 사용 http://schemas.opengis.net/wfs/2.0/wfs.xsd 이 새로운 형식 everythings 벌금을 사용 : 주위의 작품으로 , 나는에서 OGC의 웹 기능 서비스의 새로운 버전이 프로그래머 것을 발견했습니다!