2012-05-02 4 views
8

Ich versuche, eine einfache XML-Vorlage zu erstellen, die bisher nur besteht aus:String ungültiges Zeichen ‚<‘, wenn XML-Vorlage zu lesen

<?xml version="1.0"?> 

ich so lesen Sie die Datei:

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

Und das Ergebnis ist mehrere Fehlermeldungen:

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' 

ich habe andere Leute HTML tempaltes lesen gesehen, auch Tags verwenden. Was mache ich falsch?

+0

Es ist leer: Sie gerade Dokumenttyp erklärt hatte. –

+0

Versuchen Sie, Inspektor zu verwenden [http://www.antlr.org/wiki/display/ST4/StringTemplate+Inspector+GUI](http://www.antlr.org/wiki/display/ST4/StringTemplate+Inspector+GUI) –

+0

Erwartet keine XML-Datei als Eingabe. Siehe Syntax unter [http://www.antlr.org/wiki/display/ST4/StringTemplate+cheat+sheet](http://www.antlr.org/wiki/display/ST4/StringTemplate+cheat+sheet). –

Antwort

4

Okay, es scheint, ich habe übersehen, dass Sie Vorlagen in einem anderen SNYtax angeben müssen. Allthough dies aus den Beispielen nicht offensichtlich war, benutzte ich:

Meine Arbeitsvorlage jetzt anders aussieht:

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

Zusätzlich auch geändert ich die Trennzeichen:

STGroup group = new STGroupDir("templates",'$','$'); 
+0

Das habe ich dir gesagt, als es gesagt hat, dass es überhaupt kein XML erwartet. –

+0

Wenn Sie etwas mit einer Vorlage, die eigentlich eine Vorlage ist, wollen, schauen Sie auf Freemarker. –

+2

Ja. Obwohl Terrence Parr immer wieder behauptet, StringTemplate sei eine gute Trennung zwischen Modell und Ansicht, kann ich mir keinen Designer vorstellen, der sich dafür einsetzen könnte, Templates zu schreiben. – er4z0r

2

ich, dass Sie gefunden haben entweichen kann auch die Winkel:

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

Beachten Sie die \ ri ght vor der <?xml - zusätzlich ist es schlau genug, keine weitere Flucht bei der ?> schließenden Klammer zu erfordern.

Und ich glaube, was Terrence Parr über die Trennung von Modellen/Ansichten vorschlägt, ist, dass die Ansicht niemals wirklich die Möglichkeit hat, die zugrunde liegende Datenstruktur (oder das Modell) zu manipulieren. Dies wird erreicht, indem eine Vorlage auf die Daten oder die Sammlung "angewendet" wird, anstatt die Vorlage über die Daten zu schleifen. Vielleicht ist das subtil und vielleicht praktisch (im Fall von Designern) ein bisschen zu rein.

+0

Diese Annäherung funktionierte wie ein Zauber für mich (ich benutze StringTemplate 4.0.8). Ich wähle, da es manchmal einfacher sein kann, einfach den Backslash als Ersatz für die Vorlage zu verwenden, als ein nicht verwendetes Zeichen zu finden. – cleberz