Funktionen unter XSLT 2.0

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Funktionen unter XSLT 2.0

    hallo zusammen,

    ich habe ein XML Dokument und ein XSLT Stylesheet erstellt.
    Nun wollte ich selbstdefinierte Funktionen einbauen und habe daher
    mein XSLT Dokument auf die Version 2.0 umgestellt

    aber wie rufe ich meine selbstdefinierten Funktionen auf?
    Ich weiß nicht welchen Befehl man da benutzen muss.

    Hoffe mir kann jemand weiterhelfen.

    Hier mein Code:

    Quellcode

    1. <xsl:function name="gibaus" as="xs:integer">
    2. <xsl:variable name="seq" select="(153)"/>
    3. <xsl:sequence select="$seq"/>
    4. </xsl:function>


    Wie rufe ich diese Funtion auf?

    Gruß Chris
  • Hallo,

    danke für die Antwort, aber leider funktioniert es nicht, wenn ich dann die XML Datei mit dem IE öffnte bekomme ich die Meldung:
    'gibaus' ist keine gültige XSLT- oder XPath-Funktion. -->gibaus()<--

    ich
    habs jetzt folgendermaßen eingebunden:

    Quellcode

    1. <xsl:function name="gibaus" as="xs:integer">
    2. <xsl:variable name="seq" select="(15345353455)"/>
    3. <xsl:sequence select="$seq"/>
    4. </xsl:function>
    5. <xsl:template match="nvidia">
    6. <p style="border: 3px solid #0066ee; font-size: 18px; font-family: Helvetica; color: #000000; padding:10px; background-color:silver;"><i>Nvidia Grafikkarten</i></p>
    7. <xsl:value-of select="gibaus()" />
    8. <xsl:apply-templates/>
    9. </xsl:template>
    Alles anzeigen


    hab ich das falsch eingebunden?

    EDIT: Ich benutze den Altova XML Spy

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von fireblade ()

  • Richtig, der IE kann XSLT 2.0 nicht, der FireFox ebenso wenig. Habe es getestet mit (<xsl:value-of select="element-available('xsl:function')"/> )
    Also brauch ich doch sowas wie ein Plug-in oder? bzw. einen XSLT 2.0 Prozessor für den IE.

    Kann man sich sowas irgendwo runterladen?

    XML SPY hat bereits einen XSLT 2.0 Prozessor integriert, aber wenn ich in die Browser-Vorschau wechsele kommt der XSLT Prozessor vom IE zum Einsatz
    und der hat bei mir die Version 1.0. AltovaXMl 2008 habe ich auch installiert, ja habe deinen link mal ausprobiert, da ist ja auch vonAltovaXML die rede,
    fnde nur komisch das ich die transformation auf Kommandozeilen ebene machen muss. habe ich noch nicht ausprobiert, aber das wäre ach keine zufriedenstellende
    Lösung für mich. Oder gibt es keine andere Möglichkeit?

    Verstehen tu ich das auch nicht, denn wenn ich die befehle auf der Kommandozeilen-Ebene ausführe und das ergebnis Dokument im Browser anzeige
    kommt doch wieder der Browser-eigene XSLT Prozessor zum Einsatz und der hat nunmal die Version 1.0 !?
  • Ich habe auch nichts gefunden, wie man XSLT 2 nachinstallieren kann. Aber warum ist das so wichtig - warum willst du es unbedingt im Browser haben?
    Andere - ohne XSLT 2 Prozessor - können das auch nicht nutzen.

    Es sei denn du nutzt den XSLT Prozessor dazu um aus XML und XSLT ein neues XML Dokument zu erstellen.
    Auf Objektebene wirst du nicht runter müssen, aber ums kompilieren (oder wie man es bei Stylesheets nennt) kommst du nicht herum.
  • Es sei denn du nutzt den XSLT Prozessor dazu um aus XML und XSLT ein neues XML Dokument zu erstellen.
    Genau das hatte ich ja vor. Ich habe aber jetzt herausgefunden wie es geht. Fakt ist, es gibt derzeit keine XSLT 2.0 Browser. Man kann sich aber AltovaXML 2008 kostenlos downloaden, dieses Programm besitzt einen integrierten XSLT 2.0 Prozessor. Das Programm arbeitet auf Kommandozeilen Ebene. Dort kann man dann angeben welches XML Dokument man mittels XSLT 2.0 gerne umwandeln möchte. Dann nur noch die richtigen Parameter angegeben und schon hat man sein Ausgabedokument z.B. HTML. Wenn ich dieses Ausgabedokument mit einem Browser öffne gibt mir die Funktion (<xsl:value-of select="element-available('xsl:function')"/> ) "true" zurück, d.h. das man nun XSLT 2.0 spezifische Funktionen verwenden darf. Hört sich kompliziert an aber man muss es einmal gemacht haben dann ist es ganz einfach.

    Vielen Dank übrigens für deine Mühe.

    Gruß Chris