2012-10-08 1 views
4

기존 GeoRSS 피드를 설명하기 위해 XSD 스키마를 조합하고 있지만 외부 georss.xsd를 사용하여 georss:point 유형의 요소의 유효성을 검사하는 데 걸림돌이되고 있습니다.georss : xsd를 올바르게 가리 키려면 어떻게해야합니까?

XML :

<?xml version="1.0" encoding="utf-8"?> 
<this> 
    <apoint>45.256 -71.92</apoint> 
</this> 

XSD :

나는의 aPoint 유형 "XS : 문자열"한 경우
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" 
      xmlns:georss="http://www.georss.org/georss"> 
<xs:import namespace="http://www.georss.org/georss" 
      schemaLocation="http://georss.org/xml/1.1/georss.xsd"/> 
    <xs:element name="this"> 
     <xs:complexType>  
      <xs:sequence>  
       <xs:element name="apoint" type="georss:point"/> 
      </xs:sequence> 
     </xs:complexType> 
    </xs:element> 
</xs:schema> 

대신 GeoRSS를 "의를 : 점 나는 thusly 히 작은 구성 요소에 문제를 감소했습니다 "XML은 XSD에 대해 행복하게 유효성을 검사하지만 가져온 유형 (georss : point)을 참조하자 마자 XML 유효성 검사기 (Notepad ++ | XML Tools)가"스키마를 구문 분석 할 수 없습니다. " 내가 도대체 ​​뭘 잘못하고있는 겁니까? 다음과 같이

+0

멋지게 질문 된 Chris. 다른 유효성 검사기로 XML의 유효성을 검사 해 보셨습니까? 이 방법으로 도구가 아니라 마크 업에 문제가 있는지 확인할 수 있습니다. –

+0

감사합니다. Ben, 나를 위해 자동으로 XSD를 생성 한 Oxygen을 다운로드 한 다음 다시 메모장 ++에 다시로드했습니다. 예, 확인되었습니다. 작성한 XSD는 필자가 작성한 것과는 먼 거리이며, 차이점과 누락 된 부분을 이해하려면 디코딩하는 데 시간이 걸릴 것입니다. 그러나, 그때까지, 그것은 내가 필요로하는 것을 주었다 - XSD! 그래서, 나는 그것을 승리로 가져갈 것입니다! 당신의 도움을 주셔서 감사합니다. –

답변

1

질문의 문맥에서, 존재하지 않는 유형을 언급했습니다. 다음은 작업중인 것입니다 : 당신이 포인트 요소를 원하는 경우 (당신이 나중에처럼)

enter image description here

는, 당신은 그것을 참조합니다. 자신의 태그로 유형 (컨텐츠 모델)을 다시 사용하려면 apoint 유형이 doubleList이어야합니다.

유형 XML은 원하지 않는 XML 네임 스페이스를 인스턴스 XML ("Venetian blind authoring style")에서 "셧다운"을 최대화하는 방법이므로 유형을 재사용하는 것은 드문 일은 아닙니다. 귀하의 경우 네임 스페이스가없는 XML을 얻었을 것입니다.

0

내가 달성하기 위해 노력하고 있었는지에 대한 해결책의 마지막 작업 예였다

XML :

<rss xmlns:georss="http://www.georss.org/georss"> 
    <georss:point>-41.295781753436 173.229502017379</georss:point> 
</rss> 

XSD : 키는 사용이

<?xml version="1.0" encoding="UTF-8"?> 
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" xmlns:georss="http://www.georss.org/georss"> 
    <xs:import namespace="http://www.georss.org/georss" schemaLocation="georss.xsd"/> 
    <xs:element name="rss"> 
    <xs:complexType> 
     <xs:sequence> 
     <xs:element ref="georss:point"/> 
     </xs:sequence> 
    </xs:complexType> 
    </xs:element> 
</xs:schema> 

입니다 가져온 유형을 참조하는 'ref'속성

<xs:element ref="georss:point"/>