2017-12-26 18 views
0

私はJMustacheを使用していますが、この質問はすべての実装で同じであると思います。XMLで口ひげテンプレートを使用

私はMustacheを使用してXMLファイルを生成しています。リストが空の場合、私は親タグを表示したくありません。リストが空でないときは、親タグを一度表示します。私は、口ひげテンプレートがどのように見えるのだろうかと思っています。

例えば、私が入力されたデータに基づいて生成する必要がある2つのXMLファイルのいずれかを持っているかもしれません。私がいる問題があればある

<class> 
    <name>Basketweaving at a bad time</name> 
</class> 

<class> 
    <name>Basketweaving</name> 
    <students> 
     <student>Joe Smith</student> 
     <student>Sally Smithers</student> 
    </students> 
</class> 

かを私はテンプレートを次のように定義します:

<class> 
    <name>{{className}}</name> 
    <students> 
    {{#students}} 
     <student>{{studentName}}</student> 
    {{/students}} 
    </students> 
<class> 

次に、空のクラスにはまだstudentsブロックがあります。

<class> 
     <name>Basketweaving at a bad time</name> 
     <students> 
</students> 
    </class> 

そして、私はループに移動した場合:

<class> 
    <name>{{className}}</name> 
    {{#students}} 
    <students> 
     <student>{{studentName}}</student> 
    </students> 
    {{/students}} 
<class> 

を私が最初の例で繰り返し生徒になってしまいます:

例えば

<class> 
    <name>Basketweaving</name> 
    <students> 
     <student>Joe Smith</student> 
    </students> 
    <students> 
     <student>Sally Smithers</student> 
    </students> 
</class> 

したがって、希望の動作を得るためにテンプレートを行う適切な方法は何ですか?

答えて

0

私は自分自身の質問に対する答えを見つけました。 JMustacheでテンプレートには、次のようなものでなければなりません:

<class> 
    <name>{{className}}</name> 
    {{#students}} 
    {{#-first}}<students>{{/-first}} 
     <student>{{studentName}}</student> 
    {{#-last}}</students>{{/-last}} 
    {{/students}} 
<class> 

-firstと-lastは、ループの敬意、最初または最後の反復のみ該当する特別なフラグ、です。

結果として、上記のコードはstudentsループの最初のエントリをループしながら<students>を出力するだけです。同様に</students>は、studentsループのエントリ中にのみ出力されます。

これは、学生が空リストの場合、<students> </students>は出力されませんが、1つ以上のエントリがある場合、エントリは<students> </students>で囲まれることを意味します。

関連する問題