Announcement

Collapse
No announcement yet.

template vs function

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • template vs function

    hallo,
    ich habe vor vielen Jahren, als es noch kein xsl2.0 gab, mit xsl angefangen. da man damals noch keine eigenen functions definieren konnte, habe ich alles mit templates gemacht, um den Ablauf zu unterteilen oder dinge die ich an mehreren Stellen brauche einfach wiederverwenden zu können (also ich meine jetzt nicht "template match" sondern "template name" und dann "call-template").
    Ich hatte dann z.b. so templates, die mir x Zeichen ausgeben (Zeichen und Anzahl als Parameter) oder einen Zeilenumbruch einfügen oder eine dezimale Zahl in eine hexadezimale Darstellung umwandeln oder so sachen.
    Prinzipiell kann man das alles ja mit xsl2.0 über functions machen, habe ich bei neuen Files die ich schreibe auch oft so gemacht (meist reicht es ja statt template einfach function hinzuschreiben und dann den Aufruf anzupassen).
    Ich frage mich zur Zeit wo der Unterschied und der Vorteil ist. Funktionieren tut beides. Ist das eine halt nur veraltet, und bei xsl2.0 nutzt man functions? Falls ja, wozu nutzt man denn dann noch benamste templates (template name=xyz) anstelle von functions?

    gruß & thx
    sth_Weird
    Fluchen ist die einzige Sprache, die jeder Programmierer perfekt beherrscht

  • #2
    (Benannte) Templates sind ja bereits funktionale Einheiten. Der besondere Vorteil von my:function ist die Nutzbarkeit innerhalb von XPath-Ausdrücken. Wenn sich also ein wiederkehrendes Problem mit einer eigenen XSLT-Funktion eleganter lösen lässt und XSLT 1.0 außen vor bleibt, dann ist xsl:function sinnvoll.

    Ansonsten erscheint mir xsl:function eher bei algorithmischen Aufgaben (etwa bei der Umsetzung mathematischer Funktionen) geeignet, während xsl:template + xsl:call-template vor allem bei auf dem Dokumentenbaum ausgeführten Operationen nützlich bleibt.

    Comment


    • #3
      Dann hab ich's ja intuitiv sogar richtig eingesetzt
      Danke dir für deine Antwort!

      gruß
      sth_Weird
      Fluchen ist die einzige Sprache, die jeder Programmierer perfekt beherrscht

      Comment


      • #4
        Zur ergänzen ist noch, dass es innerhalb von Funktionen keinen Kontext und keine Modes gibt. Zwar können Kontext oder Mode als Parameter übergeben werden, aber von Fall zu Fall ist der Einsatz von Templates einfacher.

        Comment

        Working...
        X