21. November 200421 j Hallo, für eine Übungsaufgabe solle ein Beispiel für eine Videothek in XML realisiert werden. Nun möchte ich für jeden Artikel ein Bild einbinden, und der Bildname befindet sich in der XML Datei. Das sieht dann wie folgt aus: <Sortiment> <DVD> <Titel Genre="Action" FSK="16" Laenge ="148 Min." Bild="cv_00012316" >Last Samurai</Titel> Soweit so gut, aber wie bekomme ich nun den Namen des Bildes "cv_00012316" durch die XLS in die dafür vorgesehene Tabellenzelle? Ich hatte mir das eigentlich so gedacht: <xsl:for-each select="Titel"> <tr> <td> <span class="higlighted">Genre: </span><xsl:value-of select="@Genre"/> | <span class="higlighted">FSK: </span><xsl:value-of select="@FSK"/> | span class="higlighted">Laenge: </span><xsl:value-of select="@Laenge"/> </td> <td> <img src="<xsl:value-of select="@Bild"/>" /> </td> </tr> </xsl:for-each> Klappt aber leider nicht!
22. November 200421 j Wie sieht denn der resultierende HTML-Quelltext aus? Vielleicht fehlt einfach eine Endung wie .jpg, oder .png.
22. November 200421 j Wenn der Pfad und Name für das Bild stimmen, bindest Du es so ein: <img src="{@Bild}"/> Damit müsste es funktionieren.
22. November 200421 j Und noch etwas, das Bild soll optinoal angezeigt werden, bzw. wenn der Artikel verfügbar ist. DTD: <!ELEMENT Infos (#PCDATA)> <!ATTLIST Infos verfuegbar (0|1) #REQUIRED XSL <xsl:choose> <xsl:when Infos="verfuegbar()= 1"> Dies ist ein Test </xsl:when> </xsl:choose> Die Fehlermeldung: ERROR: Description: Attribute 'Infos' is invalid on 'xsl:when'.
23. November 200421 j Und noch etwas, das Bild soll optinoal angezeigt werden, bzw. wenn der Artikel verfügbar ist. DTD: <!ELEMENT Infos (#PCDATA)> <!ATTLIST Infos verfuegbar (0|1) #REQUIRED XSL <xsl:choose> <xsl:when Infos="verfuegbar()= 1"> Dies ist ein Test </xsl:when> </xsl:choose> Die Fehlermeldung: ERROR: Description: Attribute 'Infos' is invalid on 'xsl:when'. Probiers mal so: <xsl:for-each select="Infos"> <xsl:if test="number(@Infos)=1"> Bild einfügen </xsl:if> </xsl:for-each> Da Du ja keine andere Bedingung hast, würde ein IF schon reichen, ansonsten halt so: <xsl:for-each select="Infos"> <xsl:choose> <xsl:when test="number(@Infos)=1">Bild einfügen</xsl:when> <xsl:otherwise>Kein Bild einfügen</xsl:otherwise> </xsl:choose> </xsl:for-each> Jetzt musst Du halt nur aufpassen, in welcher Schleife Du bist. Wenn es nicht klappt, poste mal Dein XML.
23. November 200421 j Das klappt, besten dank! Ich muss Zeile für Zeile begründen und beschreiben..... Von daher, wofür ist das "test" ? Sobald ich das änder, kommt eine Fehlermeldung....
24. November 200421 j Das steht immer in xsl:when und xsl:if. Innerhalb dieses Attributes wird die Bedingung festgelegt. Beispiele: <xsl:if test="INFO"> => Wenn es innerhalb dieses Knotens ein Element INFO gibt <xsl:if test="INFO = 'DVD'"> => Wenn es innerhalb dieses Knotens ein Element INFO mit dem Value 'DVD' gibt Man kann Abfragen kombinieren mit and, or und not(). <xsl:if test="INFO = 'DVD' or INFO = 'CD'"> => Wenn es innerhalb dieses Knotens ein Element INFO mit dem Value 'DVD' oder 'CD' gibt <xsl:if test="not(INFO)"> => Wenn es innerhalb dieses Knotens KEIN Element INFO gibt
Archiv
Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.