Announcement

Collapse
No announcement yet.

XSL Stylesheet mit Parametern

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

  • XSL Stylesheet mit Parametern

    Hi, ich hab folgendes Problem:

    Ich habe ein Stylesheet welches mir eine Liste nach 1 bestimmten Merkmal sortiert.
    Nun moechte ich je nach auswahl nach einem anderen Element sortieren

    Um nicht 10 identische Stylesheets erstellen zu muessen, hab ich mir gedacht, das mit einer Parameteruebergabe es auch funktionieren muesste
    Vielleicht koennte mir ja irgendwer weiterhelfen.
    Das Script welches die XML.XSL File laedt sieht folgendermassen aus:

    (script type="text/javascript")

    var xml = new ActiveXObject("Microsoft.XMLDOM")
    xml.async = false
    xml.load("col.xml")
    var xsl = new ActiveXObject("Microsoft.XMLDOM")
    xsl.async = false
    xsl.load("number.xsl")
    document.write(xml.transformNode(xsl))
    (/script)

    Wie kann ich hier Parameter uebergeben ?
    (bzw. gibt es eine alternative Loesung)
    danke fuer eure Hilfe
    mfg Michael Vierhauser

  • #2
    Hallo!

    Ich kenne mich zwar mit MSXML überhaupt nicht aus, aber ein schneller Blick in die MSDN-Bibliothek hat mir eventuell eine Lösung gezeigt:

    Anstatt die transformNode-Methode aufzurufen, mit der createProcessor-Methode ein IXSLProcessor-Objekt erzeugen:

    http://msdn.microsoft.com/library/default.asp?url=/library/en-us/xmlsdk/html/8baca023-9d4f-4328-9327-b99feb7b851b.asp

    Das Objekt bietet eine addParameter-Methode an:

    http://msdn.microsoft.com/library/default.asp?url=/library/en-us/xmlsdk/html/af1fe9e0-b3f4-4ea1-8b6c-ab25a619be59.asp

    Hoffe so klappt's!

    Noch viel Erfolg und viele Grüße

    Martin
    www.aboutxml.d
    Martin Szugat
    www.aboutxml.de

    Comment


    • #3
      danke fuer den Tipp.. hab was mit dem Prozessor gefunden und das Script adaptiert

      var template = new ActiveXObject("MSXML2.XSLTemplate")
      template.stylesheet = xsl
      var processor = template.createProcessor()
      processor.input = xml
      processor.addParameter("language", "English")
      processor.addParameter("Genre", "Drama")
      processor.transform()
      document.write(xml.transformNode(xsl))
      parent.main.document.write(xml.transformNode(xsl))

      aber ich bekomm beim ausfuehren folgende Fehler :
      ---
      msxml3.dll: The XSL Stylesheet Document must be free threaded in order to be used with the xslt temlate object
      ---

      Kann mir vielleicht erklaeren was das bedeuten soll ?
      thx 4 help
      Mike

      --
      btw. wenns ne alternative zu dem MS XML Parser gibt waer ich auch dankbar, weil der is mal mit wider nichts ausser dem IE Kompatibel)
      --

      Comment


      • #4
        vielen dank fuer den Tipp hab nach laegerem suchen auf bei deinen links folgedens script gebastelt

        function load () {

        var xslt = new ActiveXObject("Msxml2.XSLTemplate.3.0");
        var xsldoc = new ActiveXObject("Msxml2.FreeThreadedDOMDocument.3.0" );
        var xslproc;
        xsldoc.async = false;
        xsldoc.load("title.xsl");

        xslt.stylesheet = xsldoc;
        var xmldoc = new ActiveXObject("Msxml2.DOMDocument.3.0");
        xmldoc.async = false;
        xmldoc.load("col.xml");
        xslproc = xslt.createProcessor();
        xslproc.input = xmldoc;
        xslproc.addParameter("genre", "Thriller");
        parent.main.document.write(xslproc.transform());
        }

        das script schreibt allerdings nicht richtig - sondern die einzige Ausgabe ins main frame ist true
        Was koennte hier falsch sein ?
        thx 4 help
        mfg Mike

        --btw. gibt es eine alternative zum MS DOM parser - (xslt 2.0 unterstuezung waere super) - weil das java script funktioniert nur mit IE (mit opera und firefox geht da gar nix

        Comment


        • #5
          Hallo Mike,

          Da bin ich auch überfragt bzw. mit meinem Pocket PC erstmal überfordert. Vielleicht schaffe ich es die Tage einen Blick darauf zu werfen.

          Aber zu den Alternativen zum MSXML: Kannst Du die Verarbeitung auch serverseitig machen? dann würde ich, speziell Saxon.NET für XSLT 2.0 empfehlen. Vielleicht reicht auch schon EXSLT. Da ist dann das eXml-Steuerelement ganz interessant.

          Gruss, Marti
          Martin Szugat
          www.aboutxml.de

          Comment

          Working...
          X