我目前正在尝试使用 Eclipse 建模框架将 XML 模式转换为 ECore。EMF 提供了属性ecore:reference 来指示一个属性应该被翻译成一个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 元素的 id 仅在周围的 A 元素内是唯一的。因此,如果我将 B 元素的 ID 声明为类型 ID,解析器将抛出错误。
如何告诉 EMF idref 是对属于同一个 A 元素的 B 元素的属性 id 的引用?