Manfred Mayer: Mit <xsl:for-each> Bilder in einer Tabelle ausgeben?

Hallo!

Ich hab ein kleines Problem. Ich möchte eine XML-Datei erstellen, in der ich von mehreren Personen den jeweiligen Namen, Beruf, Email und ein Bild ausgeben möchte. Mit den Namen, Berufen und der Mail hab ich das schon soweit mit xsl:for-each und <xsl:value-of select> hinbekommen, nur bei den Bildern funktioniert das so nicht mehr.

Hier die XML-Datei:
<inhalt>
 <mitarbeiter>
    <name>Person1</name>
    <beruf>Beruf1</beruf>
    <img src="bild"/>
    <mail>bla@bla.de</mail>
 </mitarbeiter>
 <mitarbeiter>
    <name>Person2</name>
    <beruf>Beruf2</beruf>
    <img src="bild2"/>
    <mail>bla@bla.de</mail>
 </mitarbeiter>
</inhalt>

Die dazugehörige XSL-Datei:
<xsl:template match="/">
 <html>
  <head>
  </head>
  <body>
   <table border="0" width="40%">
    <tr>
     <td>
     <td><b>Name</b></td>
     <td><b>Beruf</b></td>
     <td><b>E-Mail</b></td>
     <td><b>Bild</b></td>
     </td>
    </tr>
     <xsl:for-each select="inhalt/mitarbeiter">
    <tr>
     <td><center>
     <td valign="top"><xsl:value-of select="name" /></td>
     <td valign="top"><xsl:value-of select="beruf" /></td>
     <td valign="top">
      <a href="mailto:{mail}"><xsl:value-of select="mail"/></a></td>
     <td valign="top"><xsl:value-of select="img"/></td></center>
     </td>
    </tr>
     </xsl:for-each>
   </table>
  </body>
 </html>
</xsl:template>

Weiß dafür jemand ne Lösung?

MfG

Manfred

  1. Hi,

    Hier die XML-Datei:
        <img src="bild"/>
    Die dazugehörige XSL-Datei:
         <td valign="top"><xsl:value-of select="img"/></td></center>

    Dein img-Element im XML ist ein leeres Element, es hat also keinen value.

    Du willst vermutlich den Wert des src-Attributs ausgeben, also
    <xsl:value-of select="img/@src" /> (wenn ich mich richtig erinnere)

    cu,
    Andreas

    --
    Der Optimist: Das Glas  ist halbvoll.  - Der Pessimist: Das Glas ist halbleer. - Der Ingenieur: Das Glas ist doppelt so groß wie nötig.
    http://mud-guard.de/? http://www.andreas-waechter.de/ http://www.helpers.de/
  2. Hallo,

    <td valign="top"><xsl:value-of select="img"/></td>

    <td valign="top">
      <img>
        <xsl:attribute name="src">
          <xsl:value-of select="img"/>
        </xsl:attribute>
      </img>
    </td>

    oder

    <td valign="top">
      <xsl:variable name="image" select="img"/>
      <img src="{$image}"/>
    </td>

    MfG, Thomas

    1. [Nachtrag:]

      Ich habe das Ausgangsdokument nicht so genau angeschaut. Da src als Attribut definiert ist, ersetze in beiden von mir genannten Varianten:

      select="img" durch select="img/@src"

      MfG, Thomas

  3. Danke für die schnellen Antworten,
    jetzt funktioniert das endlich so,
    wie ich mir das vorgestellt habe *g*.

    MfG

    Manfred