2017-07-13 14 views
0

は、I(0、1、2、3)、すなわち、すべての組み合わせのいずれかの値を可能にする属性タイプがあるとします。XSD型制限継承?

<xs:simpleType name="fourValues"> 
    <xs:restriction base="xs:string"> 
     <xs:enumeration value="0" /> 
     <xs:enumeration value="1" /> 
     <xs:enumeration value="2" /> 
     <xs:enumeration value="3" /> 
     <xs:enumeration value="0,1" /> 
     <xs:enumeration value="0,2" /> 
     <xs:enumeration value="0,3" /> 
     <xs:enumeration value="0,4" /> 
     <xs:enumeration value="1,2" /> 
     <xs:enumeration value="1,3" /> 
     <xs:enumeration value="2,3" /> 
     <xs:enumeration value="0,1,2" /> 
     <xs:enumeration value="0,1,3" /> 
     <xs:enumeration value="0,2,3" /> 
     <xs:enumeration value="1,2,3" /> 
     <xs:enumeration value="0,1,2,3" /> 
    </xs:restriction> 
    </xs:simpleType> 

今は上記と同じであるタイプを定義したい場合はどのようなが、また、同様に、空白(ヌル)の値を許可する:

<xs:simpleType name="fourValues-null"> 
    <xs:restriction base="xs:string"> 
     <xs:enumeration value="" /> 
     <xs:enumeration value="0" /> 
     <xs:enumeration value="1" /> 
     <xs:enumeration value="2" /> 
     <xs:enumeration value="3" /> 
     <xs:enumeration value="0,1" /> 
     <xs:enumeration value="0,2" /> 
     <xs:enumeration value="0,3" /> 
     <xs:enumeration value="0,4" /> 
     <xs:enumeration value="1,2" /> 
     <xs:enumeration value="1,3" /> 
     <xs:enumeration value="2,3" /> 
     <xs:enumeration value="0,1,2" /> 
     <xs:enumeration value="0,1,3" /> 
     <xs:enumeration value="0,2,3" /> 
     <xs:enumeration value="1,2,3" /> 
     <xs:enumeration value="0,1,2,3" /> 
    </xs:restriction> 
    </xs:simpleType> 

は、両方のタイプのために私に列挙の重複を避け、継承のいくつかの種類がありますか?

私はそれらがそれらを使用する2つの属性があります。

<xs:attribute name="readingSources" type="fourValues" use="required" /> 
<xs:attribute name="targetFlip" type="fourValues-null" use="required"> 

を私はtargetFlip属性type="fourValues"use="optional"を作ってみましたが、それは制限が失敗したことを述べています。

答えて

1

余分な値をトップレベルの型として使用できる新しい型を定義し、既存の型を制限として再定義し、余分なファセット(<minLength value="1"/>など)を再定義します。

第2の方法は、新しい型を既存の型の共用体型とゼロ長の文字列のみを許可する型として定義することです。

第3の方法(私が一般的に好むスキーマですが、スキーマのみを検証用に使用するのかデータバインディング用に使用するのかは、新しいタイプをリストタイプとして定義することです) type、maxLengthを1に設定します。