2011-01-31 26 views
2

XML 편집기를 사용하여 "병합"한 스키마가 있습니다. 내가 그것을 평평하게 한 후에 나는 검증 에러를 얻는다. 문제를 해결하려면 어떻게해야합니까?요소 또는 특성이 QName 프로덕션과 일치하지 않습니다.

오류 메시지 :

F [Xerces] Element or attribute do not match QName production: QName::=(NCName':')?NCName.

코드 : enter image description here

편집 :

Remove the colon somehow. What exactly does this "flattening" supposed to do?

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

더 나은 내 오류를 설명 할 수 스크린 샷입니다3210

xsd의 병합 (flattening)은 많은 include를 가지고 xsd을 취하고 모든 것을 포함하지 않고 하나의 파일에 모두 담습니다.

+0

어떻게 든 콜론을 제거하십시오. 이 "평평하게하는"것이 정확히 무엇입니까? – biziclop

+0

콜론을 제거해도 나에게 효과가 없지만 병합에 대한 편집 내용을 확인하십시오. – capdragon

답변

11

xmlns:= 구문이 잘못되었습니다. 콜론은 여분이거나 콜론 뒤에없는 네임 스페이스 접두사입니다. 이 힌트를 제공합니다 (빨간색 화살표가 가리키는) 라인 1002에 첫 번째와 두 번째 라인 (1003)에 : 올바른 구문은 2 해제 필요한 콜론이 xmlns="http://some.uri" 또는 xmlns:something="http://some.uri"

참고가 될 것입니다 거기에는 더 많은 것이있을 것입니다.

"QName"은 "qualified name"을 나타내고 "NCName"은 "non colonized name"을 나타냅니다. 집계되지 않은 이름은 콜론 문자 (:)를 포함하지 않는 XML 이름입니다. 정규화 된 이름은 콜론이 아닌 이름이거나 콜론으로 구분 된 두 개의 콜론이 아닌 이름의 조합입니다. 예 : "abc : defgh". 콜론 앞에있는 부분을 네임 스페이스 접두어라고하고 콜론 뒤에 오는 부분을 로컬 이름이라고합니다. 정규화 된 이름에 네임 스페이스 접두사가있는 경우 접두사 이 접두사가있는 네임 스페이스 선언과 함께 namespace-URI에 바인딩되어야합니다 (예 : xmlns:abc="http://some.uri").

+0

내가 포함 된 파일의 유효성을 검사하면 유효성을 검사 할 수 있기 때문에 스키마 병합이 모든 것을 망칠 것이라고 추측합니다. 그러나 병합 후에는 이러한 오류가 발생합니다. 줄 1002에서 콜론을 제거하려고 시도한 다음 줄 1003에서 오류가 발생했습니다. 1003에있는 줄을 제거하면 더 많은 정보를 얻을 수 있습니다. 최종 콜론을 제거한 후에 많은 유효성 검사 오류가 나타납니다. – capdragon