我想从 ER 模型创建一个新的 XML 模式。我有以下模型。
[Type1]--(1:M)--->(doSomething)<---(0:N)--[Type2]
属性:
[类型1]:ID1,文本
[类型2]: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>