2009-08-26 2 views
23

내가 XML이 조각의 유효성을 검사하는 XML 스키마 작성하려고 해요 :속성 및 XML 스키마의 요소에 대한 제한을 모두 갖는

<date isodate="2007-03-14">14 march 2007</date> 

속성 isodate 그것이 XS로 설정 유형 있어요해야을 : 날짜 및 내용은 최대 50 자이어야합니다. 그것은이 어쩌면처럼, 하나 개의 블록에 뭔가를 XML 스키마 정의를 쓰고 자 할 경우

이 궁금 :

<xs:element name="date" minOccurs="0" maxOccurs="1"> 
    <xs:complexType> 
    <xs:simpleContent> 
     <xs:restriction base="xs:string"> 
     <xs:minLength value="0"/> 
     <xs:maxLength value="50"/> 
     </xs:restriction> 
     <xs:attribute name="isodate" type="xs:date" use="required"/> 
    </xs:simpleContent> 
    </xs:complexType> 
</xs:element> 

위의 코드는 작동하지 않으며, 난 정말 이유를 알아낼 수 없습니다. 단지 내가 찾은 해결 방법은 다음과 같은 것을 별도의 유형으로 제한 부분을 파괴하고, 연결하는 것입니다 : 내가 가진 문제는 하나 개의 블록 정의를 작성하는 방법입니다

<xs:simpleType name="reviewDate"> 
    <xs:restriction base="xs:string"> 
     <xs:minLength value="0"/> 
     <xs:maxLength value="50"/> 
    </xs:restriction> 
</xs:simpleType> 

<xs:element name="date" minOccurs="0" maxOccurs="1"> 
    <xs:complexType> 
     <xs:simpleContent> 
      <xs:extension base="reviewDate"> 
       <xs:attribute name="isodate" type="xs:date" use="required"/> 
      </xs:extension> 
     </xs:simpleContent> 
    </xs:complexType> 
</xs:element> 

스키마가 약간되도록 더 읽기 쉽고 스키마의 다른 부분에서 유형을 참조하지 않습니다.

+0

@Alexander : XML 섹션의 형식을 올바르게 지정하려면 XML을 강조 표시하고 도구 모음에서 "코드"버튼 (101 010)을 클릭하십시오. 이렇게하면 좋은 결과를 얻을 수 있습니다. 백틱을 사용하면 단 한 단어 또는 짧은 문구 만 사용할 수 있습니다. 여러 줄에 걸쳐있는 것은 아닙니다. –

답변

15

XSD의 한 블록에 제한 사항과 확장자를 병합 할 수 없습니다. "ReviewDate"단순 유형을 사용하는 솔루션이 내가 아는 최상의 솔루션입니다.

마크

관련 문제