neo85: Scriptsprache zur Generierung von XSL-Stylesheets

Hallo,

ich arbeite derzeit an einem XSL-Stylesheet welches ich brauche, um aus einer XML-Datei einen compilierbaren Programmcode zu erzeugen (vorerst für C). Da die XML-Datei Zielsprachenunabhängig ist, sollen weitere Stylesheets für andere Sprachen folgen.

Jetzt ist meine Frage: Gibt es eine Art Scriptsprache oder Wrappersprache, um XSL-Stylesheets schneller und kompakter zu formulieren?

Weil mir geht es, wenn ich das mal sagen darf, irgendwie ganz schön auf den Senkel, wenn ich ein "," ausgeben will, immer "xsl:text,</xsl:text>" zu formulieren - das ist, vor allem wenn man Programmcode zusammenbaut, auf Dauer sehr umständlich zu lesen.

Ich habe mal auf einer Website was von solch einer Sprache gelesen, nur finde ich die Seite nicht mehr im Netz, weil Google wohl mal wieder alles umsortiert hat.

Was ich meine wäre ein Sprache, in der ich beispielsweise folgendes Formulieren:

!"//adressbuch"
 {
  @"adressen" #"@name"
  {
   <"position()"
   $"\nName: "
   <"@name"
   $"\nVorname: "
   <"@vorname"
   $"\n\n"
  }
 }

und nach einem Compilerlauf das Stylesheet

<xsl:template match="//adressbuch">
  <xsl:for-each select="adressen">
   <xsl:sort select="@name" />
   <xsl:value-of select="position()" />
   xsl:text&#x0A;Name: </xsl:text>
   <xsl:value-of select="@name" />
   xsl:text&#x0A;Vorname: </xsl:text>
   <xsl:value-of select="@vorname" />
   xsl:text&#x0A;&#x0A;</xsl:text>
  </xsl:for-each>
 </xsl:template>

erhalte.

So einen Compiler selber zu schreiben wäre für mich kein Problem, nur will ich mir ehrlich gesagt nicht den Aufwand machen bzw. habe in XSLT auch noch zu wenig Erfahrung, um so etwas in Angriff zu nehmen, und würde daher gerne auf evtl. bestehendes zurückgreifen.

Kennt jemand solch ein Tool oder kann mir anderweitig Tipps geben?

Lieben Gruß

neo85

  1. Hallo,

    ich arbeite derzeit an einem XSL-Stylesheet welches ich brauche, um aus einer XML-Datei einen compilierbaren Programmcode zu erzeugen (vorerst für C). Da die XML-Datei Zielsprachenunabhängig ist, sollen weitere Stylesheets für andere Sprachen folgen.

    Jetzt ist meine Frage: Gibt es eine Art Scriptsprache oder Wrappersprache, um XSL-Stylesheets schneller und kompakter zu formulieren?

    Es gab divese Ansätze, wie z.B. XTL: http://www.mulberrytech.com/Extreme/Proceedings/html/2001/Onizuka01/EML2001Onizuka01.html aber nur XML bezogen.
    Sonst ist mir nichts bekannt (was überhaupt nicht heisst, dass so etwas nicht gibt), aber ich verstehe auch warum das an sich eher ein unsinniger Unterfangen ist. *)

    Was ich meine wäre ein Sprache, in der ich beispielsweise folgendes Formulieren:

    !"//adressbuch"
    {
      @"adressen" #"@name"
      {
       <"position()"
       $"\nName: "
       <"@name"
       $"\nVorname: "
       <"@vorname"
       $"\n\n"
      }
    }

    So einen Compiler selber zu schreiben wäre für mich kein Problem,

    *) Nun ja, das ist ja sehr einfach was du als Beispiel bringst. Aber was ist mit den komplexen XSLT/XPath-Ausdrücken.
    Wir (d.h. in der Firma) haben wir schon C# und .NET kode mittels XSLT generiert. Ich kann dir nur empfehlen auf XSLT 2.0 umzusteigen. Damit hast du sehr effektive Möglichkeiten solche Sachen wie du oben schreibst in eigenen Funktionen, die du auch parametisieren kannst, unterzubringen.

    Grüße
    Thomas

    1. Hallo Thomas,

      Erstmal vielen Dank für deine schnelle Antwort!

      *) Nun ja, das ist ja sehr einfach was du als Beispiel bringst. Aber was ist mit den komplexen XSLT/XPath-Ausdrücken.

      Wie gesagt es ist ja ein Wrapper, d.h. man schreibt weniger (aber letztendlich dasselbe!). XPath-Ausdrücke bleiben unverändert.

      Wir (d.h. in der Firma) haben wir schon C# und .NET kode mittels XSLT generiert. Ich kann dir nur empfehlen auf XSLT 2.0 umzusteigen. Damit hast du sehr effektive Möglichkeiten solche Sachen wie du oben schreibst in eigenen Funktionen, die du auch parametisieren kannst, unterzubringen.

      Hmm ja ich würde gerne auf XSLT 2.0 umsteigen, jedoch bräuchte ich dafür einen XSLT 2.0 Prozessor der unter einer Lizenz steht, die es mir ermöglicht, den Prozessor zusammen mit meinem zwar kostenlosen, aber nicht quelloffenem Produkt (welches eben die XML-Dateien erzeugt welche dann mit den XSLT-Stylesheets zu Quellcode generiert werden) zusammen zu verbreiten.

      Für meine Zwecke ideal ist der Prozessor xmlstarlet [http://xmlstar.sourceforge.net/], der unter der MIT-Lizenz steht. Den wollte ich auch dafür eigentlich einsetzen, nur unterstützt dieser AFAIK nur XSLT 1.0, weil er die libxslt verwendet, die wiederum auch nur XSLT 1.0 offiziell unterstützt.

      Klar, es wäre natürlich kein Problem einen anderen XSLT-Prozessor zu verwenden, nur würde ich gerne direkt einen mitliefern, bei dem es auch unter garantie so funktioniert wie es sein soll.

      1. Hallo,

        Hmm ja ich würde gerne auf XSLT 2.0 umsteigen, jedoch bräuchte ich dafür einen XSLT 2.0 Prozessor der unter einer Lizenz steht, die es mir ermöglicht, den Prozessor zusammen mit meinem zwar kostenlosen, aber nicht quelloffenem Produkt (welches eben die XML-Dateien erzeugt welche dann mit den XSLT-Stylesheets zu Quellcode generiert werden) zusammen zu verbreiten.

        Klar, es wäre natürlich kein Problem einen anderen XSLT-Prozessor zu verwenden, nur würde ich gerne direkt einen mitliefern, bei dem es auch unter garantie so funktioniert wie es sein soll.

        <http://saxonica.com/documentation/conditions/intro.html@titleSaxon-B (Open source)> unter MPL

        Oder AltovaXML http://www.altova.com/altovaxml.html
        "[...], and you may use it in your applications royalty-free"

        Mittlerweile sind beide für Java und .NET verfügbar.

        Grüße
        Thomas