Announcement

Collapse
No announcement yet.

Eine XML-Datei wahlweise mit zwei XSL's belegen ?

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

  • Eine XML-Datei wahlweise mit zwei XSL's belegen ?

    Mein Problem ist, daß ich das Layout derselben XML-Daten durch irgendeine Interaktion (Buttonklick, Link, o.ä.)vom Betrachter ändern lassen will.
    (Beispiel: Vergrößerung der Schrift für Leute mit Augenproblemen usw.)
    Als Alternative wäre ich auch für eine Lösung innerhalb einer XSL-Datei dankbar!
    Kann mir jemand helfen?
    Danke im voraus!

    ANDI

  • #2
    Nun, ich schätze mal, da bleibt dir nix anderes übrig, als eine erneute Transformation der XML-Datei innerhalb deines Prorgamms anzustossen.
    Das ist zwar nicht gerade sehr performant, aber es wäre die Lösung, die mir auf Anhieb einfällt.

    welches API benutzt du? mit jaxp kannst du dies nämlich mit einem XSLT-Prozessor wie Xalan tun (java.sun.com, xml.apache.org/xalan-j)

    du führst dann einfach innerhalb deiner event-listener behandlungsroutine die Transformation durch

    Comment


    • #3
      Die Lösung ist einfach (wenn mans weiss -g-)
      Hier für eine XML mit zwei XSL:

      <PRE>
      &lt;html&gt;
      &lt;head&gt;
      <script language="JavaScript">
      source = new ActiveXObject('Microsoft.XMLDOM');
      source.async = false;
      source.load("hallo.xml");

      function goto_XSL_1()
      {
      sichern_status = window.status;
      window.status = "Bitte Warten... (Daten werden übertragen)";

      style = new ActiveXObject('Microsoft.XMLDOM');
      style.async = false;
      style.load('monats_statistik_1.xsl')
      document.write(source.transformNode(style));

      window.status = sichern_status;
      }

      function goto_XSL_2()
      {
      sichern_status = window.status;
      window.status = "Bitte Warten... (Daten werden übertragen)";

      style = new ActiveXObject('Microsoft.XMLDOM');
      style.async = false;
      style.load('monats_statistik_2.xsl')
      document.write(source.transformNode(style));

      window.status = sichern_status;
      }

      &lt;/script&gt;
      &lt;/head&gt;

      &lt;body&gt;
      &lt;p style="cursor:hand; color:#FF9966; text-decoration:underline" onClick="goto_XSL_1();"&gt;Wer hat das grösste Spitzenvolumen?&lt;/p&gt;
      &lt;p style="cursor:hand; color:#FF9966; text-decoration:underline" onClick="goto_XSL_2();"&gt;Wer hat das grösste Gesamtvolumen?&lt;/p&gt;

      &lt;/body&gt;
      &lt;/html&gt;
      </PRE&gt

      Comment


      • #4
        Das ist ja eine tolle Lösung. Kann mir jemand sagen, wo ich mehr Informationen zu diesem Active-X-Control finde (... ja, ja, irgendwo in den tiefen der MS-Websites, aber vielleicht weiss es ja jemand genauer)?
        Inbesondere suche ich eine Möglichkeit dem XSL-Stylesheet von "aussen" noch Parameter zu übergeben.
        Dank

        Comment


        • #5
          ja, ganz tolle lösung!

          und läuft natürlich nur im IE unter Windows. Das widerspricht irgendwie dem Plattformunabh#ngigkeitscharakter von XML...
          sorry, das musste ich loswerden ;o)

          gruß,
          patric

          Comment

          Working...
          X