9

これまでのところ、次のものだけで構成される単純な XML テンプレートを作成しようとしています。

<?xml version="1.0"?>

私は次のようにファイルを読みました:

    STGroup group = new STGroupDir("templates");
    ST st = group.getInstanceOf("report");
    st.add("analysis", ana);
    String result = st.render();
    System.out.println(result);

その結果、いくつかのエラー メッセージが表示されます。

report.st 1:1: invalid character '<'
report.st 1:1: invalid character '?'
report.st 1:19: invalid character '?'
report.st 1:20: invalid character '>'
report.st 1:2: no viable alternative at input 'xml'

タグも使用している HTML テンプレートを読んでいる人を見たことがあります。それで、私は何を間違っていますか?

4

3 に答える 3

6

別の snytax でテンプレートを指定する必要があることを見落としていたようです。これは私が使用した例からは明らかではありませんでしたが:

私の作業テンプレートは今では異なって見えます:

report (analysis) ::= <<
<?xml version="1.0"?>
>>

さらに、区切り記号も変更しました。

STGroup group = new STGroupDir("templates",'$','$');
于 2012-05-02T16:08:45.373 に答える
2

山かっこもエスケープできることがわかりました:

report(analysis) ::= <<
\<?xml version="1.0"?>
>>

\-- の直前に注意してください。さらに、閉じ括弧<?xmlで別のエスケープを必要としないほどスマートです。?>

モデルとビューの分離について Terrence Parr が示唆していることは、テンプレートに渡された基礎となるデータ構造 (またはモデル) をビューが実際に操作する機会が決してないということです。これは、データに対してテンプレートをループするのではなく、テンプレートをデータまたはコレクションに「適用」することによって実現されます。おそらくそれは微妙であり、実際には(デザイナーの場合)少し純粋すぎるかもしれません.

于 2013-02-21T05:16:39.240 に答える
2

または、グループ ファイル構文を使用したくない場合は、STRawGroupDir を使用できます。このクラスは STGroupDir に似ていますが、特に XML や HTML などのファイルをロードするためのものです。

http://www.stringtemplate.org/api/org/stringtemplate/v4/STRawGroupDir.html

于 2013-07-09T02:42:07.550 に答える