2

私は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>

助けてくれてありがとう。

4

1 に答える 1

1

ソーススキーマを変更するのではなく、ジェネレーターモデルで何かを変更する必要があると思います。

genmodel を開き、子要素として誤って表示されているプロパティを探します。次に、[プロパティ] ビューで [編集] カテゴリを探し、次の設定を確認します。

  • 子供
  • 子を作成
  • プロパティタイプ

これらの設定は、ジェネレーター モデルを初期化したときに間違った方法で生成され、ツリー エディターの子の動作を制御していると思います。

于 2013-01-10T11:17:58.973 に答える