1
長篇故事短片: 我想從UML基因生成XSD,因此我需要一種方法來表示USD聚合/關聯在XSD中。我發現他們推薦的一個映射(用於聚合/關聯):「引用具有IDREF屬性的元素,並引用類型saftey(鍵/ keyref引用)的關聯類和keyref」。但我不知道如何做到這一點,因爲我真的是XSD新手(< 1周)。UML聚合/關聯到XML Schema
所以這是我認爲它應該看起來像但我不知道^^有沒有人有一些建議,或者如果我的代碼有錯誤可以糾正?
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>