Eclipse 日食及;EMF-元素的子元素也作为属性可见

Eclipse 日食及;EMF-元素的子元素也作为属性可见,eclipse,xsd,schema,emf,ecore,Eclipse,Xsd,Schema,Emf,Ecore,我对EMF有点问题 <xs:complexType name="SomeElement"> <xs:sequence> <xs:element name="SomeContents" type="cfg:SomeContents" /> </xs:sequence> </xs:complexType> <xs:complexType name="SomeContents" abstract="tr

我对EMF有点问题

<xs:complexType name="SomeElement">
    <xs:sequence>
        <xs:element name="SomeContents" type="cfg:SomeContents" />
    </xs:sequence>
</xs:complexType>

<xs:complexType name="SomeContents" abstract="true">
</xs:complexType>

基本上,在上面给出的示例中,SomeElement应该只有子元素,但根本没有属性。不幸的是,这不起作用,所有可能的子项也显示为属性(没有编辑它们的能力)。代码基本上是由Eclipse生成的,所以我认为模式或ecore文件可能有问题

<eClassifiers xsi:type="ecore:EClass" name="SomeElement">
    <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
      <details key="name" value="SomeElement"/>
      <details key="kind" value="elementOnly"/>
    </eAnnotations>
    <eStructuralFeatures xsi:type="ecore:EReference" name="SomeContents" lowerBound="1"
        eType="#//SomeContents" containment="true" resolveProxies="false">
      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
        <details key="kind" value="element"/>
        <details key="name" value="SomeContents"/>
        <details key="namespace" value="##targetNamespace"/>
      </eAnnotations>
    </eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="SomeContents" abstract="true">
    <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
      <details key="name" value="SomeContents"/>
      <details key="kind" value="empty"/>
    </eAnnotations>
</eClassifiers>


提前感谢您的帮助。

我认为,您必须更改生成器模型中的某些内容,而不是更改源模式

打开genmodel,并查找错误显示为子元素的属性。然后,在“属性”视图中,查找“编辑”类别,并检查以下设置:

  • 孩子们
  • 创建子对象
  • 属性类型

我相信,在初始化生成器模型时,这些设置是以错误的方式生成的,它们控制着树编辑器的子项行为。

Ok,这并没有解决我在这种情况下的问题,因为子项是动态的(没有预定义的内容-可能的子项集可以在运行时更改)但后来它给了我一个在哪里寻找它的想法,并证实了我最初的想法,即模型本身是好的。谢谢你的帮助:)