2009-06-10 5 views
3

列挙型のXSDファイルがあります。私はいくつかの追加の列挙を追加する "拡張" XSDファイルを作成したいと思いますが、そうでなければメインXSDのように動作します。例えば、メインのXSDファイルがこれを含まXSDファイルの拡張

<xsd:simpleType name="color"> 
    <xsd:restriction base="xsd:string"> 
     <xsd:enumeration value="red"></xsd:enumeration> 
     <xsd:enumeration value="orange"></xsd:enumeration> 
     <xsd:enumeration value="yellow"></xsd:enumeration> 
    </xsd:restriction> 
</xsd:simpleType> 
... 
<xsd:element name="myColor" type="color" /> 

私の想像拡張XSDファイルは、単に「色」タイプに「金」を追加します。既存の「myColor」要素は、メインの代わりにこのXSDを使用した場合、「金」を含むことができるようになりました。

これは可能ですか?

答えて

4

どうやってこのようになりますか?

<!-- Your base enumeration --> 
<xsd:simpleType name="color"> 
    <xsd:restriction base="xsd:string"> 
     <xsd:enumeration value="red"/> 
     <xsd:enumeration value="orange"/> 
     <xsd:enumeration value="yellow"/> 
    </xsd:restriction> 
</xsd:simpleType> 

<!-- You extended enumeration --> 
<xsd:simpleType name="colorEx"> 
    <xsd:restriction base="xsd:string"> 
     <xsd:enumeration value="gold"/> 
    </xsd:restriction> 
</xsd:simpleType> 


<xsd:simpleType name="color_union"> 
    <xsd:union memberTypes="colorEx color"/> 
</xsd:simpleType> 

<xsd:element name="myColor" type="color_union"/> 
+2

これらを別ファイルにするにはどうすればよいですか?拡張XSDでxsd:redefineを使用し、colorExを再定義すると、colorExですでに許可されている値に制限されます。だから私は新しい価値を加えることができない。 –

+0

colorExをデフォルトの文字列型にすることができます。これは、ベースXSDを直接使用すると、そのタイプに制限がないことを意味します。任意の文字列が許可されます。しかし、拡張XSDを使用すると、制限されます。 –

関連する問題