2013-06-18 2 views
0

Я хочу создать новую XML-схему из ER-модели. У меня есть следующая модель.Связь с XML Schema

[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> 

ответ

0

Ваша модель сущности является отношением «многие ко многим», но XML-документ по существу является иерархией. Вы можете смоделировать одно из отношений «один ко многим» с использованием иерархии XML, а другое - с использованием первичных ключей/внешних ключей, или вы можете моделировать оба отношения с использованием первичных и внешних ключей - это то, что вы, по-видимому, пытаетесь сделать.

Произошло неправильное определение ключей и ключей на неправильном уровне: все они должны находиться на уровне контейнера (XMLModel). Если вы хотите сказать, что каждый R в T имеет уникальное значение для F, тогда ключ должен быть определен на уровне R, селектор должен выбрать R из T, и поле должно выбрать F из R.