2012-08-09 2 views
4

XML 가져 오기 파일의 유효성을 검사하는 XSD 문서를 개발 중입니다. 거의 모든 가져 오기 파일의 요소에는 ID 속성 (UPDATE)이있을 수 있습니다.특성 및 제한이있는 XSD 사용자 지정 유형

속성 제한 이외에
<xs:simpleType name="MyUpDir"> 
    <xs:restriction base="xs:string"> 
    <xs:enumeration value="OVERWRITE"/> 
    <xs:enumeration value="ADDONLY" /> 
    <xs:enumeration value="NOERASE" /> 
    <xs:enumeration value="IGNORE" /> 
    </xs:restriction> 
</xs:simpleType> 

, 각 요소의 값은 다양한 의해 제한 ... 업데이트 속성은 4 개 개의 가능한 값으로 제한되어야하며, 그래서 속성 제한 사용이 미리 설정된 타입을 가질 사용자 정의 유형 예 미리 세트 :

<xs:simpleType name="MyChar50"> 
    <xs:restriction base="xs:string"> 
    <xs:maxLength value="50" /> 
    </xs:restriction> 
</xs:simpleType> 

두 결합하려면, 나는 다음과 같이 나는 각 요소에 대한 인라인 그것을 할 수 있습니다 알고

<xs:element name="FullName"> 
    <xs:complexType> 
    <xs:simpleContent> 
     <xs:extension base="MyChar50"> 
     <xs:attribute name="UPDATE" type="MyUpDir" /> 
     </xs:extension> 
    </xs:simpleContent> 
    </xs:complexType> 
</xs:element> 

문제는 가져 오기 파일에 길이가/regEx/precision 제한 (약 20 개의 사용자 정의 유형)이 있고 UPDATE 속성의 가능성이있는 요소가 1000 개 이상 있다는 점입니다. UPDATE 특성이 없으면 사용자 지정 형식을 사용하여 각 요소를 자체 줄에서 처리하여 XSD의 '내용'부분을 크게 줄일 수있었습니다. 그러나 내가 읽은 바로는 커스텀 타입과 언급 된 속성의 잠재력을 수용하기 위해 각 요소에 대해 단일 라인을 유지할 수있는 대신 확장 된 샘플 (마지막 예제)을 사용해야합니다. . 이 두 가지를 결합한 사용자 정의 유형을 작성하여이를 최소화하는 방법이 있습니까?

답변

0

20 개의 사용자 정의 유형을 더 (총 40 개) 수행 한 다음 적절한 유형 (예 : w/o 속성)을 사용할 수 있다고 생각합니다. 귀하의 경우 :

<xs:complexType name="MyChar50Attr"><!-- This one has attributes --> 
    <xs:simpleContent> 
     <xs:extension base="MyChar50"> 
      <xs:attribute name="UPDATE" type="MyUpDir"/> 
     </xs:extension> 
    </xs:simpleContent> 
</xs:complexType> 
<xs:element name="FullName" type="MyChar50Attr"/> 
+0

충분히 간단 ... 나는 그것을 시도했지만 어떤 유형의 오류가있어 너무 일찍 그것을 맹세 할 수 있었다. 나는 그 오류가 확장베이스에서 사용되었거나 다른 것으로, 그리고 방법론과 함께있을 수 없었을 것으로 생각한다. 다음 번엔 좀 더주의를 기울일거야. :)감사. 이것은 완벽하게 작동하며 향후 업데이트가 필요할 경우 XSD를 더 쉽게 해독 할 수 있습니다. –