ER モデルから新しい XML スキーマを作成したいと考えています。私は次のモデルを持っています。
[Type1]--(1:M)--->(doSomething)<---(0:N)--[Type2]
属性:
[Type1]: ID1 , テキスト
[Type2]: ID2 , テキスト
次に、そのモデルの XML スキーマを作成したいと思います。私はすでにスキーマを作成していますが、正しい関係 (1:M) と (0:N) を持っていないと思います。
正しい関係を実装する方法を誰かに説明してもらえますか?
これが現在の XML スキーマです。
<xs:element name="XMLModel">
<xs:complexType>
<xs:sequence>
<xs:element name="MyType1" type="type1" maxOccurs="unbounded">
<xs:key name="MyType1_ID">
<xs:selector xpath="MyType1"/>
<xs:field xpath="ID1"/>
</xs:key>
</xs:element>
<xs:element name="MyType2" type="type2" maxOccurs="unbounded">
<xs:key name="MyType2_ID">
<xs:selector xpath="MyType2"/>
<xs:field xpath="ID2"/>
</xs:key>
</xs:element>
<xs:element name="DoSomething" type="typeDo" maxOccurs="unbounded">
<xs:keyref name="Ref1" refer="MyType1_ID">
<xs:selector xpath="DoSomething"/>
<xs:field xpath="child::MyType1"/>
</xs:keyref>
<xs:keyref name="Ref2" refer="MyType2_ID">
<xs:selector xpath="DoSomething"/>
<xs:field xpath="child::MyType2"/>
</xs:keyref>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:complexType name="type1">
<xs:sequence>
<xs:element name="Text" type="xs:string"/>
<xs:element name="ID1" type="xs:integer"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="type2">
<xs:sequence>
<xs:element name="Text" type="xs:string"/>
<xs:element name="ID2" type="xs:integer"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="typeDo">
<xs:all>
<xs:element name="MyType1" type="xs:integer"/>
<xs:element name="MyType2" type="xs:integer"/>
</xs:all>
</xs:complexType>