Martin Trappe: automatische Weiterleitung in XSL??

hallo zusammen,

ich habe da ein klitzekleines problem. und zwar möchte ich in ein xsl-file eine automatische weiterleitung setzen, welche mich quasi direkt beim anklicken der HTML-seite auf eine andere leitet. wie ist das machbar? hat dazu jemand einen quelltext??

über jeden hinweis bin ich sehr dankbar,
gruß
Martin

  1. hallo zusammen,

    ich habe da ein klitzekleines problem. und zwar möchte ich in ein xsl-file eine automatische weiterleitung setzen, welche mich quasi direkt beim anklicken der HTML-seite auf eine andere leitet. wie ist das machbar? hat dazu jemand einen quelltext??

    über jeden hinweis bin ich sehr dankbar,
    gruß
    Martin

    Hi auch,

    clientseitig? Dann müßte jeder Benutzer einen Brauser mit XML/XSL Parser haben, Opera kann imho kein XSL, Mozilla ??? keine Ahnung.

    warum schickst du nicht HTML an den Client? HTML is was für Brauser.

    ansonsten, im XSL einen CDATA - Bereich aufmachen, und dort die automatische Weiterleitung Javascript oder Meta-Tag reinschreiben. Das sollte helfen.

    Gruß, Frank

    1. hallo frank,

      zuersteinmal: die nutzer haben IE 5.0 oder höher im einsatz.

      ich kann kein HTML als vorlage benutzen. das problem sieht folgendermaßen aus: das XSL brauche ich für eine archivierungslösung. der archive-job nimmt das dokument und schreibt es mittels einer dok-pipeline auf einen archivserver. dort liegt nun das original(jetzt archiviert). auf dem ursprünglichen filesystem wird nur noch ein link hinterlassen (eine HTML datei), die nun auf das original im archiv zeigt. dabei wird ein teil der URL erst in dem template eingesetzt und nach archivierung wird dann aus diesem template ein HTML erzeugt.

      das ganze sieht im original so aus:

      <?xml version="1.0" encoding="ISO-8859-1"?>
      <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
      <xsl:template match="/">

      <html>
        <head>
           <title>File Archiving</title>
        </head>
        <body>
           <h1>File Archiving</h1>
           <hr/>
           <table>
                 <tr>
                    <td>File:</td>
                    <td>
             <a>
             <xsl:attribute name="href">http://balu:8080/archive?get&contRep=<xsl:value-of select="*/archivid"/>&docId=<xsl:value-of select="*/docid"/>&pVersion=0045</xsl:attribute>
             <xsl:value-of select="*/filename"/>
             </a>
               </td>
            </tr>
            <tr>
               <td>Size:</td>
               <td><xsl:value-of select="*/filesize"/></td>
            </tr>
            <tr>
               <td>Date:</td>
               <td><xsl:value-of select="*/filedate"/></td>
            </tr>
            <tr>
               <td>Docid:</td>
               <td><xsl:value-of select="*/docid"/></td>
            </tr>
            <tr>
               <td>Archivid:</td>
               <td><xsl:value-of select="*/archivid"/></td>
            </tr>
           </table>
           <hr/>
           <i><a href="mailto:Administrator@xxx.de">Administrator@xxx.de</a></i>
        </body>
      </html>

      </xsl:template>
      </xsl:stylesheet>

      dieses template file is zwischengeschaltet. man muss nun allerdings erst auf die neue HTML datei im filesystem klicken, um auf das original-dokument geleitet zu werden, dieser klick soll nun auch noch wegfallen. wie kann man das XSL also so umbauen, das bei öffnen des HTML, das dokument im archiv direkt erreicht wird (URL ist ja oben drin)??

      gruß
      Martin

      1. Hi,

        also der Server archiviert ein Dokument (was für eins, .XML) indem er es verschiebt und am ursprünglichen Ort durch was?? ersetzt. Eine HTML-Datei, was steht in dieser HTML-Datei drin, wie heißt diese, gibt es da zusammmenhänge?

        Wo ist diese XSL-Datei zwischengeschaltet, auf welche XML-Datei wird sie angewendet?

        Oder, was du (ganz ungetestet) mal probieren kannst, schreib zwischen <head> und </head> einen META Tag, dessen Attribute kannst du ja auch ansprechen, und da bastelst du die URL genauso hinein wie bei dem Link.

        Gruß, Frank

        1. aaaalso nochmal ausführlich...

          man stelle sich vor auf der lokalen festplatte liegt eine datei: test.doc. diese soll nun wegarchiviert werden. der archivierungsjob, der nun läuft nimmt die datei und speichert sie auf dem archive-server ab und zwar auch als test.doc. auf der lokalen festplatte (wo die datei vorher noch war) wird selbige nun weg-gelöscht und durch eine HTML datei ersetzt. in dieser HTML datei steht eigentlich nur der link auf dieses dokument test.doc. klickt man also diese HTML auf, öffnet sich IE mit dem link auf die test.doc. den kann man nun anklicken und es öffnet sich word.

          die HTML datei wird nun erzeugt aus dem XSL-template. nun soll es jedoch im prinzip das ziel sein, das man diese zwischengeschaltete web-seite mit dem link auf test.doc nicht bekommt und nochmal klicken muss, sondern im prinzip durch einen einzigen klick auf das test.doc kommt, obwohl es ja nun im archiv liegt. meine idee war da diese weiterleitung...

          das mit dem meta wie in der selfhtml beschreibung hab ich probiert, das haute leider nich hin... :(

          gruß
          Martin

          Hi,

          also der Server archiviert ein Dokument (was für eins, .XML) indem er es verschiebt und am ursprünglichen Ort durch was?? ersetzt. Eine HTML-Datei, was steht in dieser HTML-Datei drin, wie heißt diese, gibt es da zusammmenhänge?

          Wo ist diese XSL-Datei zwischengeschaltet, auf welche XML-Datei wird sie angewendet?

          Oder, was du (ganz ungetestet) mal probieren kannst, schreib zwischen <head> und </head> einen META Tag, dessen Attribute kannst du ja auch ansprechen, und da bastelst du die URL genauso hinein wie bei dem Link.

          Gruß, Frank

          1. die HTML datei wird nun erzeugt aus dem XSL-template. nun soll es jedoch im prinzip das ziel sein, das man diese zwischengeschaltete web-seite mit dem link auf test.doc nicht bekommt und nochmal klicken muss, sondern im prinzip durch einen einzigen klick auf das test.doc kommt, obwohl es ja nun im archiv liegt. meine idee war da diese weiterleitung...

            das mit dem meta wie in der selfhtml beschreibung hab ich probiert, das haute leider nich hin... :(

            Jo, hi,

            okay, teil eins hab ich verstanden, verschieben von test.doc nach irgendwo. warum hinterläßt dieser Job keine HTMLweiterleitung auf test.doc?

            XML + XSL = HTML    das ist ein Grundsatz, denke ich mal so.
            das XSL hast du gepostet, das HTML noch nicht aber ich nehme mal an, das ist jenes, welches den Link auf test.doc zum Klicken anzeigt, also das Ergebnis von einem bisher unbekannten XML und deiner XSL-Datei. In deinem Quellcode sind doch XPath-Ausdrücke zum Darstellen von XML-Nodes drin. XML-Nodes kommen aber zwangsweise aus einem XML-Dokument. Ich nehme mal an, dieses läßt der Job zurück, weil sonst weiß er ja selber nicht, wie der Link zum archivierten test.doc ist.

            <meta http-equiv="refresh" content="5; URL=http://selfhtml.teamone.de/">  lt. SelfHTML

            <meta><xsl:attribute name="http-equiv">refresh</xsl:attribute><xsl:attribute name="content">5; <xsl:value-of select="archivedDocURL"/></xsl:attribute></meta>

            sollte das wirklich nicht funktionieren, würde mich das wundern, das sollte gültiges HTML ergeben, was ein Browser, selbst der IE entsprechend interpretiert.

            Die andere Variante ist, schau dir an, wie JavaScripts in XSL-Dateien verpackt werden, das solltest du hier auf SelfHTML oder spätestens beim W3C finden. Da baust du ein Script ein document.location.href = und dann der Inhalt von deinem Attribut href (von <a>) aus deinem XSL. Mit IE sollte dies ohne Probleme möglich sein. Ich werd das heute abend nochmal probieren mit beiden Varianten....

            Gruß, so far
            Frank

            1. hallo frank,

              ausgehend von deinen änderungen hab ich das ganze nun zum laufen bekommen, die weiterleitung sieht nun so aus:

              <meta><xsl:attribute name="http-equiv">refresh</xsl:attribute><xsl:attribute name="content">0; URL=http://....</xsl:attribute></meta>

              und das fungiert nun einwandfrei

              VIELEN DANK für deine hilfe!! :)

              1. hallo frank,
                ausgehend von deinen änderungen hab ich das ganze nun zum laufen bekommen, die weiterleitung sieht nun so aus:
                <meta><xsl:attribute name="http-equiv">refresh</xsl:attribute><xsl:attribute name="content">0; URL=http://....</xsl:attribute></meta>
                und das fungiert nun einwandfrei
                VIELEN DANK für deine hilfe!! :)

                Jo, schön, freu ich mich auch.

                Hätte mich aber gewundert wenn das nicht gelaufen wäre.

                Okay, denn viel spaß noch mit dem Archivierungssystem

                Frank

                1. hehe danke danke :)

                  haben sich schon die ersten drüber gefreut :))

                  gruß
                  Martin

      2. Hallo,

        wie kann man das XSL also so umbauen, das bei öffnen des HTML, das dokument im archiv direkt erreicht wird (URL ist ja oben drin)??

        Ich bin nicht ganz sicher, ob ich verstanden habe, wann man wie wo klicken soll, um wohin geleitet zu werden, aber das scheint mir eher ein HTML als ein XML-Problem zu sein.Mit XSL kannste nix weiterleiten. Du kannst nur mit XSL eine HTML-Datei erzeugen, die URL-Informationen aus einer XML-Datei nutzt, was du ja bereits tust. Wenn Du dieser Datei das entsprechende Meta-Tag mitgibst in deinem Template für den Wurzelknoten, dann leitet diese HTML-Datei bei Aufruf weiter.

        vgl.: http://selfhtml.teamone.de/html/kopfdaten/meta.htm#weiterleitung

        Gruß
        Franz

  2. Hallo Martin.

    Wie ich den anderen Postings entnehmen kann, hast du den Speicherort und den Namen der Datei (xxx.doc) zur Hand. Den kannst du doch über xml/xsl direkt als Link anbieten, genauso wie du es mit dem Link auf bzw. in der HTML Datei machst.

    <a>
           <xsl:attribute name="href">http://balu:8080/archive/...
          //Angenommen hier ist hier der Pfad zuende
           <xsl:value-of select="*/filename"/>
           </xsl:attribute>
           <xsl:value-of select="*/filename"/>
           </a>

    Hab das nicht getestet, aber im Prinzip sollte das so (oder so ähnlich) gehen.

    mfg

    Dirk