vanill: mehrere seiten erzeugen?

Hallo,

gibt es vielleicht mittlerweile eine Möglichkeit clienseitig aus einem XML dokument mit einer XSL Datei mehrere Ausgabedokumente zu erzeugen, die miteinander verlinkt sind?
Habe es mit JavaScript versucht, aber da bekomme ich nur ein Ausgabedokument, dass sich ändert.

Klassisches Beispiel, ich will zunächst alle Elemente meines XML dokuments nur mit Namen in einer LIste anzeigen lassen. Daneben soll ein Link sein, wenn ich denn klicke, dann soll sich eine neue Seite öffnen mit den näheren Angaben.

Wenn es nicht clientseitig geht, wie würdet ihr es serverseitig lösen?
(mit serverseitigen dingen habe ich noch nicht so viel gemacht? was müsste ich bei mir installieren, um einen server zu spielen um dann die daten, die ich erzeugt habe, an jemanden per Email zu schicken. Also nur ich brauche zunächst eine dynamische Erzeugung, wenn sich die Daten änderen müsste ich die eh (rein rechtlich) selbst verschicken, nicht über einen Server.

Bin für jede Hilfe dankbar!

  1. Hallo,

    gibt es vielleicht mittlerweile eine Möglichkeit clienseitig aus einem XML dokument mit einer XSL Datei mehrere Ausgabedokumente zu erzeugen, die miteinander verlinkt sind?
    Habe es mit JavaScript versucht, aber da bekomme ich nur ein Ausgabedokument, dass sich ändert.

    Wenn es nicht clientseitig geht,

    Was der Fall ist.

    wie würdet ihr es serverseitig lösen?

    Entweder mit XSLT 2.0 oder du verwendest auf dem Server z.B. PHP und damit kannst du dann auf die EXSLT-Erweiterungen zurückgreifen, die auch das Erzeugen von mehreren Ausgabedokumenten unterstüzen.

    Grüße
    Thomas

    1. Danke für deine schnelle Antwort!

      Aber es würde clienseitig funktionieren, dynamische neue seiten zu erzeugen (die dann nicht gespeichert werden) oder? Also ich meine für den IE bekomme ich es hin, aber für Mozilla nicht.
      Vielleicht kannst du mir da helfen?
      In dem FEnster vom Mozilla steht immer nur: [object HTMLDocument], aber nicht wirklich das erzeugte HTML (aus XML mit XSL) wie es im IE der Fall ist.

      Ich nehme an, ich mache bereits in der beschreibung der funktionen was falsch, aber ich habe keine Ahnung, werde für heute mein Gehirn damit mal nicht mehr belasten.
      Aber falls du lust hast ;)

      /* For IE  */
      var objXML;
      var objXSLT;
      var objCache;
      /* For MOZILLA */
      var xslStylesheet;
      var xsltProcessor = (window.ChromeWindow) ? new XSLTProcessor() : "";
      ovar myDOM;
      var xmlDoc;

      function init()
      {if (window.ActiveXObject) // For  IE
      {
      objXML= new ActiveXObject('MSXML2.DOMDocument.4.0');
      objXML.async = false;       objXML.load('XML_070627.xml');
      objXSLT=new ActiveXObject('MSXML2.FreeThreadedDOMDocument.4.0');
      objXSLT.async = false;
      objXSLT.load("XSLT_070627_v3.xslt");
      objCache   = new ActiveXObject("Msxml2.XSLTemplate.4.0");
             objCache.stylesheet = objXSLT;
      }
      else if (window.ChromeWindow) // For Mozilla
      {
      // load the xslt file
      var xmlRequest = new XMLHttpRequest();
      xmlRequest.open("GET", "XSLT_070627_v3.xslt", false);
      xmlRequest.send(null);

      xslStylesheet = xmlRequest.responseXML;
      xsltProcessor.importStylesheet(xslStylesheet);

      // load the xml file
      xmlRequest = new XMLHttpRequest();    xmlRequest.open("GET", "XML_070627.xml", false);
      xmlRequest.send(null);

      xmlDoc = xmlRequest.responseXML;
      }
      else
      alert("No XSLT allowed");
      }

      function showPattern(patternID)
      {

      if (window.ActiveXObject)
      {
      var objXSLTProc = objCache.createProcessor();
      objXSLTProc.input = objXML;
      objXSLTProc.addParameter("parPatternID", patternID, "");  objXSLTProc.transform();
      var patternHTMLIE = objXSLTProc.output;

      newWindow = window.open('', 'Pattern');
      newWindow.document.open();     newWindow.document.write(patternHTMLIE );
      newWindow.document.close();
      }

      else if (window.ChromeWindow)
      {
      var myParam = xsltProcessor.getParameter(null, "parPatternID");  xsltProcessor.setParameter(null, "parPatternID", patternID);

      var patternHTMLMo = xsltProcessor.transformToDocument(xmlDoc);

      newWindow = window.open('','Pattern');
      newWindow.document.open();     newWindow.document.write(patternHTMLMo);    newWindow.document.close();
      }

      1. Hallo,

        In dem FEnster vom Mozilla steht immer nur: [object HTMLDocument], aber nicht wirklich das erzeugte HTML (aus XML mit XSL) wie es im IE der Fall ist.

        Ich nehme an, ich mache bereits in der beschreibung der funktionen was falsch, aber ich habe keine Ahnung, werde für heute mein Gehirn damit mal nicht mehr belasten.
        Aber falls du lust hast ;)

        /* For IE  */
        var objXML;
        var objXSLT;
        var objCache;
        /* For MOZILLA */
        var xslStylesheet;
        var xsltProcessor = (window.ChromeWindow) ? new XSLTProcessor() : "";
        ovar myDOM;
        var xmlDoc;

        Sieht aus als wäre das aus meinem Kode ... "ovar myDOM;" gibts allerdings nicht.
        Woran es bei Mozilla liegen kann, kann ich dir nicht sagen.
        Mozilla seriealisert das HTMl nicht (im gegensatz zum IE) d.h. was erzeugt wurde, wird unmittlerbar an den Bowser gesendet.
        Du solltest ausprobieren ob dein Aufruf im Mozilla überhaupt z.B: mit einer HTML-Seite funktionieren würde.
        [object HTMLDocument] deutet darauf hin, dass das Fenster das Dokument als DOM-Knoten bekommt, aber damit nichts machen kann. D.h. es wäre hier ein vErsuch wärt statt "transformToDocument(xmlDoc)" "xsltProcessor.transformToFragment(xmlDoc, document);" verwenden und das inrgendo dann "einhängen": document.getElementById("wasauchimmer").appendChild(patternHTMLMo);

        Grüße
        Thomas

        1. Hallo,

          ja klar habe ich mich an deinem Code orientiert :) Woher soll ich es denn sonst können...

          (das mit dem o, war nur ein Versehen beim kopieren...)

          ich werde es mal mit toFragment ausprobieren. Bin gespannt...

          Grüße und Danke