Torsten: XML/XSL(T) Ein/Ausblenden

Problem: Innerhalb einer XSL-Datei ist u.a. eine Tabelle enthalten, welche zusätzliche Informationen anzeigt; diese Tabelle soll vom Betrachter per Button oder per Link ein- bzw. ausgeblendet werden können, um die Übersicht der Seite zu verbessern. In HTML habe ich bereits einige Beispiele gefunden, leider funktionieren alle nicht in XML/XSL...

Kann mir einer mal bitte beschreiben wie das in XML/XSL(T) geht???

MFG

Torsten

  1. hallo torsten,

    die frage habe ich nicht ganz verstanden. betrachtest du dein
    xmk/xsl im ie oder transformierst du vorher in xhtml (online oder
    offline)?

    gruss, michael

    1. Nun, ich bearbeite das XML und das XSLT-File ständig, da stets neue Danten aufgenommen werden müssen.
      Deswegen möchte ich auch das Ein/Ausblenden im XSLT-File lösen, um es nicht sändig wieder programmieren zu müssen.

      Ich wandel unter LINUX mit Hilfe von Xalan das XML und XSLT - file in eine HTML-Seite um.

      Hm, und nun stehe ich wie schon gesagt vor dem Prob das in XSlt zu bewerkstelligen.

      1. hallo torsten,

        es ist noch frueh, so richtig habe ich es immer noch nicht
        verstanden, schau die mal den beigelegten xsl.code an, vielleicht
        kannst du damit ja was anfangen. gruss,

        michael

        <xsl:template name="task" match="//Aufgabe">
        <xsl:param name="AufgabenID"/>
        <xsl:for-each select="./Anweisung">
         <xsl:variable name="BeschreibungsID">
          a_<xsl:value-of select="$AufgabenID"/>_<xsl:value-of select="position()"/>
         </xsl:variable>
         <!-- <xsl:value-of select="$BeschreibungsID"/> -->
         <input type="checkbox"/><a><xsl:if test="string-length(.)>10">
          <xsl:attribute name="onmouseover">this.style.cursor='hand'</xsl:attribute>
          <xsl:attribute name="onclick"><xsl:value-of select="$BeschreibungsID"/>.style.display='block'</xsl:attribute>&#172;
          </xsl:if><xsl:value-of select="./@Anzeige"/></a><br/>
         <span><xsl:attribute name="id">a_<xsl:value-of select="$AufgabenID"/>_<xsl:value-of select="position()"/></xsl:attribute>
          <xsl:attribute name="onmouseover">this.style.cursor='hand'</xsl:attribute>
          <xsl:attribute name="onclick">this.style.display='none'</xsl:attribute>
          <xsl:value-of select="."/></span>
        </xsl:for-each>
        </xsl:template>

        1. Hallo Michael,

          hm, das Problem ist eigentlich nur, das Ein/Ausblenden im XSLT-File zu bewerkstelligen.

          In deinem Code sehe ich leider nicht so richtig durch, da ich mich auch noch nicht so lang mit xslt beschäftige.
          Welche Elemnte bzw. Befehle benötige ich denn in xslt um zum Beispiel Tabellen bzw. Blöcke ausblenden zu können und auch wieder einblenden zu können?

          Torsten

          1. hallo torsten,

            also nochmal: der benutzer soll ein und ausblenden, oder?
            der durch xml/xsl erzeugte xhtml-quelltext sieht koennte
            folgendermassen aussehen:

            <input type="checkbox" /><a onmouseover=
              "this.style.cursor='hand'" onclick="a_2_2.style.display='block'">¬
              In das DV-Menü wechseln</a><br />
            <span id="a_2_2" onmouseover="this.style.cursor='hand'"
              onclick="this.style.display='none'">
                Durch Auswahl FO [Eingabe] und anschliessende Auswahl 11
                (DV-Menü) [Eingabe] gelangt man in das DV-Menü.</span>

            1. hallo torsten,

              also nochmal: der benutzer soll ein und ausblenden, oder?

              genau, das ein und ausblenden soll der benutzer machen

              <input type="checkbox" /><a onmouseover=
                "this.style.cursor='hand'" onclick="a_2_2.style.display='block'">¬
                In das DV-Menü wechseln</a><br />
              <span id="a_2_2" onmouseover="this.style.cursor='hand'"
                onclick="this.style.display='none'">
                  Durch Auswahl FO [Eingabe] und anschliessende Auswahl 11
                  (DV-Menü) [Eingabe] gelangt man in das DV-Menü.</span>

              Hm, Danke, aber da kommen schon wieder neue Fragen...

              Wie binde ich das in mein xslt-file ein?

              Wenn cih zum Beispiel eine Tabelle habe, also

              <table....>
              ....
              </table>

              Kommt das dann in den <table>-block oder außerhalb?

              1. hallo torsten,

                da sind wir nun bei javascript angelangt. lese dir
                mal die dazugehoerige selfhtml-dokumentation durch,
                da findest du bestimmt etwas:

                -- ungetestet: ---
                <table>
                <tr><td><a
                  onclick="document.desc01').style.display='block'">
                  ?</a></td><td id="desc01">bla</td></tr>
                </table>

                1. .....OK, dann werd ich die mir mal durchlesen, thx für die Infos

                  Torsten

                  1. Eine Frage noch...

                    Wie bette ich da JavaScript-Code in mein XSLT-File ein?

                    Funktioniert das so wie in den kurzen Beispielen beschrieben auch in einer längeren XSLT-Datei, welche in HTML umgewadelt wird?

                    Torsten

                    1. Hallo,

                      Eine Frage noch...

                      OK, aber vorher lese http://selfhtml.teamone.de/xml/darstellung/index.htm

                      Wie bette ich da JavaScript-Code in mein XSLT-File ein?

                      <script type="text/javascript">
                      <![CDATA[
                        /* JavaScript-Kommentar: jetzt folgt ein kleines Script */
                        if(parseInt(navigator.appVersion) < 4)
                          alert("Oh, ein sehr alter Browser");
                        /* und damit ist das Script auch schon zu ende */
                      ]]>
                      </script>

                      Funktioniert das so wie in den kurzen Beispielen beschrieben auch in einer längeren XSLT-Datei, welche in HTML umgewadelt wird?

                      Ja.
                      Aber du hast ein grundsätzliches Problem: du muss dir stets vor augen halten das XML/XSLT kein HTML ist, da gibt es kein "einblenden" oder "ausblenden" etc. und wenn du die XML-Verarbeitung am Server machst, bekommt der Browser deines Besuchers _nur_ HTML zu sehen.
                      Wenn du in HTML eine Funktionalität brauchst (wie "einblenden" "ausblenden" etc.) musss du dir zuerst das auch in HTML erstellen/vorstellen. Dann kannst du das in deinem XSLT-Sheet so einbauen, dass nach der Transformation auch jene Funktionalität in die HTML-Seite vorhanden ist.

                      Grüße
                      Thomas

                      1. Danke für die zahlreichen Hilfen, ich merk schon, das Ganze ist nicht so einfach wie ursprünglich gedacht. Da muß man doch erst mal die grundsätzlichen Funktionalitäten verstehen, um solche Probleme lösen zu können.

                        MFG Torsten

                        1. hallo torsten,
                            da hat dir schon jemand ein paar links zusammengestellt.
                          http://aktuell.de.selfhtml.org/links/xml.htm
                          gruss vom bodensee, michael

  2. Hi,

    Problem: Innerhalb einer XSL-Datei ist u.a. eine Tabelle enthalten, welche zusätzliche Informationen anzeigt; diese Tabelle soll vom Betrachter per Button oder per Link ein- bzw. ausgeblendet werden können, um die Übersicht der Seite zu verbessern. In HTML habe ich bereits einige Beispiele gefunden, leider funktionieren alle nicht in XML/XSL...

    Du transformierst doch Dein XML per XSLT in HTML. Wenn Du im HTML so eine Funktionalität brauchst, dann sorge dafür, daß diese nach der Transformation im HTML enthalten ist (sprich: generier Dein Script in die Seite rein).

    cu,
    Andreas

    --
    MudGuard? Siehe http://www.Mud-Guard.de/
    Fachfragen per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
  3. Hallo!

    [...] In HTML habe ich bereits einige Beispiele gefunden, leider funktionieren alle nicht in XML/XSL...

    "Funktioniert nicht" ist keine treffende Fehlerbeschreibung, aufgrund derer sich klare Aussagen treffen lassen. Da aber die Benutzer üblicherweise weder Deine XML-Struktur noch das XSL-Stylesheet, sondern nur das Transformationsprodukt (HTML?) zu Gesicht bekommen, liegt hier kein XML/XSLT-Problem vor.

    Kann mir einer mal bitte beschreiben wie das in XML/XSL(T) geht???

    Ich gehe davon aus, dass das Zielformat Deiner XSLT HTML ist? Dann trage Sorge dafür, dass die HTML-Elemente, mit denen Du bislang erfolgreich die Tabelle verstecken konntest, auch im XSL-Template vorhanden sind und durch die Transformation nach HTML entsprechend an den Client weitergegeben werden.

    Oliver

    --
    Die meisten Menschen werden als Original geboren und sterben als Kopie.