2013-08-07 307 views
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> 

回答

0

也許UML For W3C XML Schema Design將幫助回答你的問題。這是古老的,但它顯示的基礎仍然適用於今天,並且非常清晰地呈現出來。