0

パッケージと、相互に参照するいくつかのクラスを含むEcoreモデルがあるとします。「動的インスタンス」を作成すると、EclipseはXMIファイルを生成し、いくつかのクラスをインスタンス化できます。children包含関係は、XMIのXMLツリー(例の要素)に直接シリアル化されます。しかし、ツリーのどこかにすでに含まれている要素への参照をインスタンス化すると、エディターはcurrentChild属性に対して次のようにパス式を書き込みます。

<parent currentChild="//@parent/@children.1">
  <children/>
  <children/>
</parent>

私の知る限り、これはXPathではありません。理由は次のとおりです。

  1. childrens」は属性ではなく要素であり、「@」を介して参照する必要はありません。
  2. XPathはegを使用し、egを取得elem[1]しないでリストの2番目の要素を取得しますelem.1

それは何で、どこで情報を見つけることができますか?私はすでにEMFページ/仕様を閲覧しようとしましたが、見つかりませんでした。

4

1 に答える 1

1

これはEMFフラグメントパスです。Javadocはそれを次のように説明しています。

String org.eclipse.emf.ecore.InternalEObject.eURIFragmentSegment(EStructuralFeature eFeature、EObject eObject)eObjectForURIFragmentSegmentに渡されたときに、このオブジェクトの指定された機能内の指定されたオブジェクトに解決されるフラグメントセグメントを返します。

機能引数はnullである可能性があり、その場合、可能であれば推定されます。デフォルトの結果は次の形式になります。

「@feature-name[.index]」

インデックスは、多値機能にのみ使用されます。リスト内の位置を表します。

パラメータ:eFeature指定されたオブジェクトをこのオブジェクトに関連付ける機能、またはnull。eObject識別されるオブジェクト。戻り値:このオブジェクトの指定された機能で指定されたオブジェクトに解決されるフラグメントセグメント。

于 2009-09-30T13:36:57.580 に答える