XtextでDSLを作成する必要があります。これにより、既存のXML言語が単純化されます。言い換えれば、DSLを作成し、Xtextを使用してそれをXMLに変換する必要があります。これまで文法を書きましたが、問題はそれに基づいてXMLを生成する方法です。同様のことを行う方法についてのチュートリアルを知っていますか?特に、新しいXtextプロジェクトを作成すると、ほとんどのチュートリアルに示されているように、projectcame.generatorプロジェクトが生成されないという事実に問題があります。
2 に答える
Xtext2.2を使用していると思います。
専用のジェネレータープロジェクトは、言語インフラストラクチャの一部であるジェネレーターに直接置き換えられました。ランタイムプラグインのyourdsl.generatorパッケージを掘り下げたいと思うかもしれません。そこには、EMFリソースを取得し、そこからテキストを作成できるスタブ実装があります。ステートマシンの例では、そのアプローチを使用してJavaコードを生成しますが、XMLまたはそこから必要なものを生成することもできます。
XMLが特定のスキーマと一致する場合は、もちろん、モデルをターゲットモデルの有効なインスタンスに変換し、XMLResource.save()などのEMF標準機能を使用してシリアル化することができます。
理論的には、生成された EMF Java モデルを JiBX でバイト拡張し、必要な XML への JiBX マッピングを使用できます。ただし、これはモデルにとってはやり過ぎかもしれません (ターゲット ドキュメントがどれほど複雑かによって異なります)。
私は EMF クラスでこれを行っていないことを警告しなければなりません。私のプロジェクトは、最初に私の EMF モデルを、JiBX で拡張された既存の POJO モデルに変換しました。しかし、彼らが振る舞うと仮定すると、うまくいくはずです。