Laden...

[gelöst] Formatierung bei Codegenerierung mittels XSLT

Erstellt von mosspower vor 14 Jahren Letzter Beitrag vor 14 Jahren 725 Views
mosspower Themenstarter:in
456 Beiträge seit 2007
vor 14 Jahren
[gelöst] Formatierung bei Codegenerierung mittels XSLT

verwendetes Datenbanksystem: XSL(T)

Hallo "Kollegen",

gibt es eine Möglichkeit, Ausgaben im XSLT-File zu formatieren?
Hier mal ein ganz kleines Beispiel:


<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html"/>
<xsl:template match="/">
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml.XPath;
using System.Xml.Xsl;
using System.Xml;

namespace <xsl:value-of select="//class-info/namespace" /> {
  class <xsl:value-of select="//class-info/class-name" /> {
    static void Main(string[] args) {
      Console.Write("Hello World");
    }
  }
}
  </xsl:template>
</xsl:stylesheet>

Jetzt ist das ja noch übersichtlich. Was aber, wenn zig Schleifen und Abfragen dazukommen, dann habe ich doch ein "Kraut-und-Rüben-C#-File".

Kennt sich da jemand aus, wie man das machen kann oder vielleicht gibt es ja auch die Möglichkeit, nach dem Generieren mit einem Formatter (über das Programm wohlgemerkt und nicht über die IDE) den Code zu formatieren? Also, was man eigentlich im Hintergrund via IDE mit dem Befehl Edit.FormatDocument macht?

Danke schon einmal für etwaige Antworten im Voraus.

1.564 Beiträge seit 2007
vor 14 Jahren

Hallo mosspower

bei deinem Beispiel wundert mich die output-Method "html" ein bisschen. Da würde "text" doch irgendwie besser passen, oder? 😉

Ansonsten verstehe ich die Frage nicht ganz.

Wenn du meinst dass du die ganzen Methoden nicht zu tief verschachteln willst, dann kannst du ja mit match-templates select="xpath" oder mit call-template Funktionen auslagern.

Wenn du den ausgegebenen Source-Code meinst, den musst du schon während der Transformation korrekt rendern. Die Format-Document Funktion ist ein Feature vom VS und funktioniert nur weil es die aktuelle Sprache kennt.

Grüße
Flo

Blog: Things about Software Architecture, .NET development and SQL Server
Twitter
Google+

Je mehr ich weiß, desto mehr weiß ich was ich noch nicht weiß.

mosspower Themenstarter:in
456 Beiträge seit 2007
vor 14 Jahren

Hallo Florian Reischl,

klar, das war nur ein Beispiel, da gehört natürlich text rein.

Meine Fragen bezogen sich auf den generierten Quellcode (hier C#-Datei).
Gibt es wirklich keine Methode hinterher, nachdem das File soz. auf der Platte liegt, eine Codeformatter drüberlaufen zu lassen?

Wenn ich zig Bedingungen und Schleifen in XSL programmiere, dann sieht das ja nicht sehr schön aus, wenn ich da schon acht geben muss, wie ich die Ausgaben zu formatieren habe.

1.564 Beiträge seit 2007
vor 14 Jahren

Also mir wäre nicht bekannt, dass man irgendwie dieses Studio-Command ansprechen könnte. Man kann so was natürlich theoretisch über Regex machen, dürfte aber sehr umständlich sein.

Zum XSTL, wie schon gesagt, nicht alles verschachteln sondern in eigene Template-Methoden auslagern.

Grüße
Flo

Blog: Things about Software Architecture, .NET development and SQL Server
Twitter
Google+

Je mehr ich weiß, desto mehr weiß ich was ich noch nicht weiß.

mosspower Themenstarter:in
456 Beiträge seit 2007
vor 14 Jahren

OK, danke, werde mal sehen, wie ich das hinbekomme.

mosspower Themenstarter:in
456 Beiträge seit 2007
vor 14 Jahren

OK, es gibt den Text-Tag, hier werden Formatierungen, z.B. Blanks übernommen und generiert, z.B. ...


<xsl:text>    public void Init() {&#xA;</xsl:text>
<xsl:text>      try {&#xA;</xsl:text>
<xsl:text>      }&#xA;</xsl:text>
<xsl:text>      catch(Exception ex) {&#xA;</xsl:text>
<xsl:text>        trow;&#xA;</xsl:text>
<xsl:text>      }&#xA;</xsl:text>
<xsl:text>    }&#xA;</xsl:text>