长话短说:我想从 UML 生成 XSD,为此我需要一种方法来表示 XSD 中的 UML 聚合/关联。我找到了一个他们推荐的映射(用于聚合/关联):“具有 IDREF 属性的引用元素并引用关联的类和 keyref 以获取安全类型(key/keyref 引用)”。但我不知道该怎么做,因为我真的是 XSD 的新手(< 1 周)。
所以这就是我认为它应该看起来的样子,但我不确定^^ 如果我的代码有错误,是否有人有一些建议或可以纠正?
uml:http: //i39.tinypic.com/15x8ufp.png
<xsd:schema elementFormDefault="qualified" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ns="namespace" targetNamespace="namespaceURI">
<xsd:import namespace="namespace" />
<xsd:element name="root">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="classA">
<xsd:complexType>
<xsd:all>
<xsd:element name="attributeElement" />
</xsd:all>
<xsd:attribute name="aId" type="xsd:ID" use="required" />
</xsd:complexType>
<xsd:key name="classAKey">
<xsd:selector xpath="ns:root/ns:classA" />
<xsd:field xpath="@aId" />
</xsd:key>
</xsd:element>
<xsd:element name="classB">
<xsd:complexType>
<xsd:all>
<xsd:element name="refClassA" minOccurs="0" maxOccurs="unbounded"/>
</xsd:all>
<xsd:attribute name="bId" type="xsd:ID" use="required" />
</xsd:complexType>
<xsd:key name="classBKey">
<xsd:selector xpath="ns:root/ns:classB" />
<xsd:field xpath="@bId" />
</xsd:key>
<xsd:keyref name="classARef" refer="ns:classAKey">
<xsd:selector xpath="ns:classB" />
<xsd:field xpath="./refClassA" />
</xsd:keyref>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>