Announcement

Collapse
No announcement yet.

Javascript und XSLT

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

  • Javascript und XSLT

    Hallo Leute

    Ich bin neu hier im Forum und habe mit Javascript und XSLT etwas probieren wollen. Ich weis nicht genau ob ich diesen Beitrag im XSLT Bereich posten soll oder hier richtig bin.

    Und zwar möchte ich über einen XSLT For-Each gewisse Elemente vom source XML anzeigen. Die unteren Codes sind für den FireFox (IE hätte ich auch, zeigt aber die gleichen Symthome).

    XML
    Code:
    <AJAXStuff>
      <AJAX>
        <lang>en</lang>
        <Title></Title>
        <Description>Description>
        <History>History>
        <Url></Url>
      </AJAX>
      ...
    </AJAXStuff>
    XSLT
    Code:
    <xsl:template match="/">
        <xsl:param name="language" />
            <table id="tab">
              <tbody>
                <xsl:for-each select="AJAXStuff/AJAX[lang = $language]">
                  <tr>
                  ...
      </xsl:template>
    JavaScript
    Code:
    var process = new XSLTProcessor();
                    
    XMLHTTP.open("GET", "ajax.xsl", false);
    XMLHTTP.send(null);                
    var xslt = XMLHTTP.responseXML;                
                    
    process.importStylesheet(xslt);
    process.setParameter(null, "language", language); // language = "'en'"
    
    var result = process.transformToFragment(xml, document);
    document.body.appendChild(result);
    Die Javascript-Methoden wird von einer HTML Datei aus aufgerufen. Die Methode läde die XML und XSLT Datei über den XMLHttpRequest Objekt und übergibt es dem XSLTProcessor. Nur das mit dem setParameter scheint nicht zu funktionieren, da ich keine Resultate sehe.
    Wenn im XSLT dem Parameter "language" einen Wert setze
    Code:
    <xsl:param name="language" select="'de'" />
    funktioniert es bzw. ich sehe die "gefilterte" Tabelle.

    Muss ich den Parameter über POST setzen?
    Ich habe auch einen xsl:call-template versucht und habe genau das gleiche Problem.

    Könnt ihr mir bitte helfen?
    Danke

    Guss
    JJ.
    Wie muss ich den Parameter sonst übergeben?

  • #2
    Deklariere den Parameter direkt unterhalb von xsl:stylesheet.

    Comment


    • #3
      Hallo Thomas

      Leider funkt das auch nicht. Trotzdem Danke

      Comment


      • #4
        Doch das funktioniert (gerade in Opera und Firefox gestestet), wenn der String in der JS-Variable ohne '...' übergeben wird:
        var language = "en";

        Hinweis: Bei Parameterzuweisung im Stylesheet müsste 'en' gesetzt werden, da en als en-Element betrachtet würde, bei der Parameterübergabe von außen bleibt en der eigentliche String.
        Zuletzt editiert von Thomas Meinike; 09.09.2008, 14:16.

        Comment


        • #5
          Danke Thomas es funktioniert
          War so drin im Code das ich das mit dem 'en' gar nicht beachtet habe.

          Vielen Dank

          Comment

          Working...
          X