Ronny: Nocheinmal zur Referenz im gleichen XML-file

bisher geschreibener Text war:

(XSL) Referenzieren auf gleiches XML-Dokument
Die folgende Nachricht zum Thema stammt von: Ronny,  rws78@gmx.de, 22. März 2002, 12:22 Uhr

Hallo  Leute,
mein Problem ist folgendes:

Ich öffne eine XML-Datei im IE. Der Stil ist durch eine Referenz auf eine XSl-Datei am Anfang vorgegeben.
Auf der Seite sollen nur teilweise Inhalte ("Überschriften") dargestellt werden. Soweit alles klar.
Die "Überschriften" haben die Eigenschaft eines Linkes mit der Referenz auf genauere Beschreibungen die im gleichen XML-Dokumkent stehen und momentan mit Hilfe eines Ankers weiter unten auf der Seite im browser stehen.
Nun möchte ich aber diese Daten in einem Neuen browser öffnen und darstellen, könnte sozusagen eine zweite XSL-Datei schreiben. Aber wie übergebe ich dem neuen Browser-Fenster die Daten der XML-Datei mit einer neuen Referenz auf die zweite XSL-Datei?
Wie wäre das oder vielleicht eine andere Möglichkeit realisierbar?
Danke für eure Hilfe
Ronny

(XSL) Referenzieren auf gleiches XML-Dokument
Die folgende Nachricht zum Thema stammt von: fjh,  frajoherpers@hotmail.com, 22. März 2002, 13:17 Uhr

Hallo,

Ich öffne eine XML-Datei im IE. Der Stil ist durch eine Referenz auf eine XSl-Datei am Anfang vorgegeben.
Auf der Seite sollen nur teilweise Inhalte ("Überschriften") dargestellt werden. Soweit alles klar.
Die "Überschriften" haben die Eigenschaft eines Linkes mit der Referenz auf genauere Beschreibungen die im gleichen XML-Dokumkent stehen und momentan mit Hilfe eines Ankers weiter unten auf der Seite im browser stehen.

Nun möchte ich aber diese Daten in einem Neuen browser öffnen und darstellen, könnte sozusagen eine zweite XSL-Datei schreiben. Aber wie übergebe ich dem neuen Browser-Fenster die Daten der XML-Datei mit einer neuen Referenz auf die zweite XSL-Datei?

Die einfachste Lösung, wenn Du Einfluß auf die XML-Dateien hast, wäre den Link auf eine XML-Datei zu setzen, die die Detailinfos enthält. Diese Info ist dann bereits mit einem Stylesheet verknüpft.

Gruß
Franz

Antwort:

Vielen Dank für die Antwort ... das Problem liegt darin, das die Daten alle in einer XML-datei stehen müssen.
Als beispiel:
Eine XML-datei würde mehrere Ligen einer Sportart enthalten!
Als erste Seite wären die Ligen mit den jeweiligen Mannschaften aufgelistet. Nun möchte ich die Liga anklicken und es soll sich ein neues Browser-Fenster öffnen der die kompletten Mannschaftdetails, Ergebnisse, etc. anzeigt.
Also eine XML und mehrere XSL ... wie geht das.
Ist da was mit Javascript möglich? ... habe mal ein beispiel in der ix gelesen aber da war das mit dem <iframe>-tag in einer html realisiert die sich der einer xml-datei und mehrerer xsl-dateien bediente!
hast du noch einen Vorschlag?
Danke Ronny

  1. Hallo,

    hm, ein Link auf die alten Postings hätte auch gereicht, oder?

    Vielen Dank für die Antwort ... das Problem liegt darin, das die Daten alle in einer XML-datei stehen müssen.
    Als beispiel:
    Eine XML-datei würde mehrere Ligen einer Sportart enthalten!
    Als erste Seite wären die Ligen mit den jeweiligen Mannschaften aufgelistet. Nun möchte ich die Liga anklicken und es soll sich ein neues Browser-Fenster öffnen der die kompletten Mannschaftdetails, Ergebnisse, etc. anzeigt.
    Also eine XML und mehrere XSL ... wie geht das.
    Ist da was mit Javascript möglich? ... habe mal ein beispiel in der ix gelesen aber da war das mit dem <iframe>-tag in einer html realisiert die sich der einer xml-datei und mehrerer xsl-dateien bediente!
    hast du noch einen Vorschlag?

    Bleibt sich doch gleich. Voraussetzung für meinen Vorschlag ist natürlich, dass Du das ganze serverseitig machst. Mit dem clientseitigen "Gefummel" kenn ich mich nicht aus. Aber im IE kannst du auch über JScript auf den MSXML-Prozessor zugreifen und Stylesheets mit XML-Dateien verknüpfen.

    Dein Beispiel ist doch eigentlich ein typischer Anwendungsfall für XSLT. Eine Datei aus der Mann mit zwei verschiedenen Stylesheets völlig unterschiedliche Informationen herausfiltern lassen. Also: beim ersten Request gibt wird das erste Stylesheet auf die XML-Datei angewendet und alle Ligen werden heruagefiltert und aufgelisten und die Links auf die Mannschaften werden generiert. Klickst du auf nen Link wird die gleiche XML-Datei mit dem zweiten Stylesheet verknüpft und es werden die dazugehörigen Mannschaften (je nach übergebenem Paramter) aufgelistet. Ohne Parameter brauchst du für jeden Link ein Extra-Stylesheet, was ja nicht sinnvoll ist.
    Also egal, ob clientseitig oder serverseitig: immer benötigst Du ein Programm, das dir die Transformation mit dem passenden Stylesheet anstößt und je nach Link einen passenden Parameter übergibt.
    Aber einfach zwei Stylesheet-Verarbeitungsanweisungen in deine XML-Datei schreiben geht nicht.

    Gruß
    Franz

    1. Hallo,

      hm, ein Link auf die alten Postings hätte auch gereicht, oder?

      Vielen Dank für die Antwort ... das Problem liegt darin, das die Daten alle in einer XML-datei stehen müssen.
      Als beispiel:
      Eine XML-datei würde mehrere Ligen einer Sportart enthalten!
      Als erste Seite wären die Ligen mit den jeweiligen Mannschaften aufgelistet. Nun möchte ich die Liga anklicken und es soll sich ein neues Browser-Fenster öffnen der die kompletten Mannschaftdetails, Ergebnisse, etc. anzeigt.
      Also eine XML und mehrere XSL ... wie geht das.
      Ist da was mit Javascript möglich? ... habe mal ein beispiel in der ix gelesen aber da war das mit dem <iframe>-tag in einer html realisiert die sich der einer xml-datei und mehrerer xsl-dateien bediente!
      hast du noch einen Vorschlag?

      Bleibt sich doch gleich. Voraussetzung für meinen Vorschlag ist natürlich, dass Du das ganze serverseitig machst. Mit dem clientseitigen "Gefummel" kenn ich mich nicht aus. Aber im IE kannst du auch über JScript auf den MSXML-Prozessor zugreifen und Stylesheets mit XML-Dateien verknüpfen.

      Dein Beispiel ist doch eigentlich ein typischer Anwendungsfall für XSLT. Eine Datei aus der Mann mit zwei verschiedenen Stylesheets völlig unterschiedliche Informationen herausfiltern lassen. Also: beim ersten Request gibt wird das erste Stylesheet auf die XML-Datei angewendet und alle Ligen werden heruagefiltert und aufgelisten und die Links auf die Mannschaften werden generiert. Klickst du auf nen Link wird die gleiche XML-Datei mit dem zweiten Stylesheet verknüpft und es werden die dazugehörigen Mannschaften (je nach übergebenem Paramter) aufgelistet. Ohne Parameter brauchst du für jeden Link ein Extra-Stylesheet, was ja nicht sinnvoll ist.
      Also egal, ob clientseitig oder serverseitig: immer benötigst Du ein Programm, das dir die Transformation mit dem passenden Stylesheet anstößt und je nach Link einen passenden Parameter übergibt.
      Aber einfach zwei Stylesheet-Verarbeitungsanweisungen in deine XML-Datei schreiben geht nicht.

      Gruß
      Franz

      Die Realisierung ist mir irgendwie noch unschlüssig.
      Ich frage ja wie soll ich das machen mit dem ersten request und dem zweiten request!
      Wenn es dir möglich ist das mal einfach zu erklären ... ich bin noch Anfänger auf diesem Gebiet!
      Vielen Dank
      Ronny

      1. Hallo,

        Die Realisierung ist mir irgendwie noch unschlüssig.
        Ich frage ja wie soll ich das machen mit dem ersten request und dem zweiten request!
        Wenn es dir möglich ist das mal einfach zu erklären ... ich bin noch Anfänger auf diesem Gebiet!

        Hm, also für nen Anfänger ist das allerdings ein komplexes Problem. Du musst Dir zuerst mal klar sein über den Unterschied zwischen serverseitigem um clientseitiger XSLT-Transormation. Dazu kannst du mal im Archiv suchen.

        Dann wie man einen XSLT-Prozessor aus einem Programm heraus aufrufst, ihm Parameter übergibtst...

        Dazu benötigst Du Dir ein paar Grundlagen, die nicht mal alle mit XSLT zu tun haben.

        Sorry, aber deine Frage ist so allgemein gestellt, das man Dir eigentlich nur konzeptionell antworten kann. Die Grundlagen für das Verständnis musst Du Dir dann erstmal anlesen. Das beste Mittel dazu ist ein gutes XSLT-Buch.

        Oder du sagst mal ganz konkret, wie du dir die Lösung selbst vorstellst, wo es hackt, was du bisher verstanden hast, ob dus überhaupt serverseitig machen kannst/willst, welchen XSLT-Prozessor Du verwendest usw.
        Oder du schickst gleich deine Dateien mit entsprechenden Versuchen, damit man gleich am Code Hinweise geben kann.

        Vielleicht kann dir dann jemand weiter helfen.

        Gruß
        Franz

        1. Hallo,

          Die Realisierung ist mir irgendwie noch unschlüssig.
          Ich frage ja wie soll ich das machen mit dem ersten request und dem zweiten request!
          Wenn es dir möglich ist das mal einfach zu erklären ... ich bin noch Anfänger auf diesem Gebiet!

          Hm, also für nen Anfänger ist das allerdings ein komplexes Problem. Du musst Dir zuerst mal klar sein über den Unterschied zwischen serverseitigem um clientseitiger XSLT-Transormation. Dazu kannst du mal im Archiv suchen.

          Dann wie man einen XSLT-Prozessor aus einem Programm heraus aufrufst, ihm Parameter übergibtst...

          Dazu benötigst Du Dir ein paar Grundlagen, die nicht mal alle mit XSLT zu tun haben.

          Sorry, aber deine Frage ist so allgemein gestellt, das man Dir eigentlich nur konzeptionell antworten kann. Die Grundlagen für das Verständnis musst Du Dir dann erstmal anlesen. Das beste Mittel dazu ist ein gutes XSLT-Buch.

          Oder du sagst mal ganz konkret, wie du dir die Lösung selbst vorstellst, wo es hackt, was du bisher verstanden hast, ob dus überhaupt serverseitig machen kannst/willst, welchen XSLT-Prozessor Du verwendest usw.
          Oder du schickst gleich deine Dateien mit entsprechenden Versuchen, damit man gleich am Code Hinweise geben kann.

          Vielleicht kann dir dann jemand weiter helfen.

          Gruß
          Franz

          Habe die Dateien mal per mail geschickt ... kannst du dir das mal anschauen?

      2. hallo,

        Wenn es dir möglich ist das mal einfach zu erklären ... ich bin noch Anfänger auf diesem Gebiet!

        wie wäre erst mal mit der lektüre von http://learn.to/quote/ bzw. http://www.afaik.de/usenet/faq/zitieren/zitieren-2.php3#ss2.1

        wenn du deine xml dateien serverseitig verarbeitetst könnte die verwendung von mehreren xsl-sheets z.B. so aussehen, als beispiel hier die verwendung von cocoon 1.8.x
        in eine erste xsl datei:
        <?xml version="1.0"?>
        <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
         <xsl:param name="style"/>
           <xsl:template match="/">
             xsl:choose
               <xsl:when test="$style">
                 <xsl:processing-instruction name="xml-stylesheet">href="<xsl:value-of select="$style"/>" type="text/xsl"</xsl:processing-instruction>
                 <xsl:processing-instruction name="cocoon-process">type="xslt"</xsl:processing-instruction>
               </xsl:when>
               xsl:otherwise
                 <xsl:processing-instruction name="xml-stylesheet">href="vordefinierte.xsl" type="text/xsl"</xsl:processing-instruction>
                 <xsl:processing-instruction name="cocoon-process">type="xslt"</xsl:processing-instruction>
               </xsl:otherwise>
             </xsl:choose>
            xsl:apply-templates/
           </xsl:template>
             <xsl:template match="@*|*|text">
             <xsl:copy-of select="."/>
           </xsl:template>
         </xsl:stylesheet>

        ------
        in den weiteren xsl dateien:

        <?xml version="1.0"?>
        <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
        <xsl:param name="style" select="''" />
        ...

        und ein link dann dann so aussehen:

        <a target="_blank">
              <xsl:attribute name="href">deine.xml?style=dieAndere.xsl</xsl:attribute>
              <xsl:value-of select="." />
        </a>

        --
        andere parser haben andere syntax, da muss du dich beim jeweiligen einlesen.

        grüße
        thomas