簡體   English   中英

將XSD轉換為ECore

[英]Converting XSD to ECore

我目前正在嘗試使用Eclipse Modeling Framework將XML Schema轉換為ECore。 EMF提供attributre ecore:引用以指示屬性應轉換為EReference。 但是,這僅在屬性類型為IDREF或anyURI時有效。 我的問題是,通過IDREF引用的任何ID必須在整個XML文檔中是唯一的。 但是,我的XML具有以下結構:

<A id="a1">
<B id="b1">
<ref idref="b2" />
</B>
<B id="b2">
<ref idref="b1" />
</B>
</A>

<A id="a2">
<B id="b1">
<ref idref="b2" />
</B>    
<B id="b2">
<ref idref="b1" />
</B>
</A>

B-elelemts的ids只在環繞的A元素內部是唯一的。 因此,如果我將B元素的id聲明為類型ID,則解析器將拋出錯誤。

如何告訴EMF idref是對屬於同一A元素的B元素的屬性id的引用?

如果XML Schema確實使用了ID和IDREF,那么您顯示的實例對於該架構無效。 這不是問題嗎? 它更像是一個key / keyref,Ecore也不支持它。

如果它只是想要一個可以讀寫這些實例的Ecore模型,我會定義一個屬性idref ,它只是一個字符串,並定義一個類型為A的瞬態引用resolvedRef ,我會修改getter和setter,以便每個都得到合理的從另一個。 即,當你調用getResolvedRef ,它將檢查該字段是否為null,如果idref的字段有值,它將走模型以解析(在適當的范圍內查找該名稱)並將其存儲在場。

對於getter和兩個setter來說,以合理的方式定義相互推導是有點棘手的,但它應該是可能的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM