jorux: "name"-Attribut für Bilder aus XML lesen

Hallo,

noch ne Frage: In einem XML-Dokument verwende ich das Element <abc name="xyz" />. Das funktioniert auch alles gut. Jetzt möchte ich mit XSL dafür sorgen, dass bei der Ausgabe in HTML an der betreffenden Stelle ein Bild eingefügt wird: <img src"bild.gif" border="0" name="xyz" />.

Wie kann ich dafür sorgen, dass der Browser beim Parsen das "xyz" aus dem Element ausliest und in die Bild-Adresse einfügt?

Gruss

  1. Hallo!

    noch ne Frage: In einem XML-Dokument verwende ich das Element <abc name="xyz" />. Das funktioniert auch alles gut. Jetzt möchte ich mit XSL dafür sorgen, dass bei der Ausgabe in HTML an der betreffenden Stelle ein Bild eingefügt wird: <img src"bild.gif" border="0" name="xyz" />.

    Wie kann ich dafür sorgen, dass der Browser beim Parsen das "xyz" aus dem Element ausliest und in die Bild-Adresse einfügt?

    Über Attribute Value Template:

    z.B:

    <xsl:template match="abs">
      <img src"bild.gif" border="0" name="{@name}" />
    </xsl:template>

    oder über

    xsl:attribute (http://selfhtml.teamone.de/xml/darstellung/xsltelemente.htm#attribute).

    MfG, André Laugks

    --
    L-Andre @ gmx.de
    1. Danke,

      Über Attribute Value Template:

      z.B:

      <xsl:template match="abc">
        <img src"bild.gif" border="0" name="{@name}" />
      </xsl:template>

      funktioniert nicht... Zwar wird die Grafik angezeigt, aber ohne das "name"-Attribut.

      Auch mit folgender Funktion bin ich gescheitert

      <xsl:template match="abc">
       <img src="start.gif" border="0">
         <xsl:attribute name="name">123</xsl:attribute>
         <xsl:value-of select="." />
       </img>
      </xsl:template>

      Dabei sollte dabei nicht einmal der Wert von "name" übernommen werden...

      Hat jemand noch einen Tipp?

  2. Hallo,

    noch ne Frage:

    Hast du noch keine gestellt. Ah so ... unter einem anderen Namen.
    Bitte versuche dich auf einen Namen mir dir selbst zu einigen. Das Hilft uns und dir.

    Grüße
    Thomas

    PS: zu einer Frage:
    -------------------------------

    <xsl:template match="abc">
      <img src"bild.gif" border="0" name="{@name}" />
    </xsl:template>

    funktioniert nicht... Zwar wird die Grafik angezeigt, aber ohne das "name"-Attribut.
    -------------------------------

    Es funktioniert schon. Poste bitte dein echtes XML und XSL für das <img>.

    1. Sorry, musste gestern abend weg und komme erst jetzt dazu, meine Anfrage nochmals zu konkretisieren...

      Hast du noch keine gestellt. Ah so ... unter einem anderen Namen.
      Bitte versuche dich auf einen Namen mir dir selbst zu einigen. Das Hilft uns und dir.

      klar doch... ich bleibe bei jorux

      Es funktioniert schon. Poste bitte dein echtes XML und XSL für das <img>.

      Aber gerne, hier ein Beispiel:

      Ich habe folgende Datei "a.xml":

      <?xml version="1.0" encoding="iso-8859-1"?>
      <?xml-stylesheet type="text/xsl" href="meine.xsl"?>
      <!DOCTYPE dfr SYSTEM "meine.dtd">
      <meine>
      <anfang><start name="xyz" />blablabla.</anfang>
      </meine>

      In der "meine.dtd" steht dazu:

      <!ELEMENT meine (anfang | start*)) >
      <!ELEMENT anfang (#PCDATA) >
      <!ELEMENT start EMPTY >
      <!ATTLIST start name CDATA #REQUIRED >

      Die "meine.xsl" lautet:

      <xsl:stylesheet
        version="1.0"
        xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
        xmlns="http://www.w3.org/TR/xhtml1/strict">
      <xsl:strip-space elements="meine"/>
      <xsl:output
        method="xml"
        indent="yes"
        encoding="iso-8859-1"/>
      <xsl:template match="meine">
        <html>
        <head>
          <title>Titel</title>
          <link rel="stylesheet" type="text/css" href="style.css" />
        </head>
        <body>
          <table align="center" cellpadding="10pt" cellspacing="0pt" border="0" width="90%">
            xsl:apply-templates/
          <tr>
            <td colspan="2" bgcolor="navy" height="50pt">
              <div class="mikl">Stand der Bearbeitung: 04/2004<br />
              Dieses Dokument wurde mit XSLT aus einer XML-Datei erzeugt.</div>
            </td>
          </tr>
          </table>
        </body>
        </html>
      </xsl:template>

      <xsl:template match="anfang">
        <tr><td>
          xsl:apply-templates/
        </td></tr>
      </xsl:template>

      <xsl:template match="start">
        <a href="http://www.abc.de">
        <xsl:template match="abc">
        <img src"bild.gif" border="0" name="{@name}" />
      </xsl:template>

      </xsl:stylesheet>

      So, und wo ist jetzt der Fehler?

      1. Hallo,

        <anfang><start name="xyz" />blablabla.</anfang>

        In der "meine.dtd" steht dazu:

        <!ELEMENT meine (anfang | start*)) >
        <!ELEMENT anfang (#PCDATA) >

        Das ist schon ab da eigentlich ungültig.
        anfang kann laut deiner DTD nur 'PCDATA enthalten, du hast darin aber  PCDATA _und_ ein <start>.

        <xsl:template match="start">
          <a href="http://www.abc.de">
          <xsl:template match="abc">
          <img src"bild.gif" border="0" name="{@name}" />
        </xsl:template>
        </xsl:stylesheet>

        Du kannst in einem xsl:template keine weitere xsl:template definieren. Auserdem ist es zusätzlich falsch verschachtelt: wo ist das End-Tag vom </a>? Wo ist das End-Tag vom 2. xsl:template ?

        So, und wo ist jetzt der Fehler?

        So, überall. Würde ich sagen. ;-)

        Grüße
        Thomas

    2. DANKE

      es hat doch geklappt. Ich hatte nur eine Klammer falsch gesetzt. Warum die DTD funktioniert, weiss ich auch nicht, aber sie tut... Die "start"-Elemente werden angezeigt...

      Gruss

      1. Hallo,

        Warum die DTD funktioniert, weiss ich auch nicht, aber sie tut... Die "start"-Elemente werden angezeigt...

        Versuche deine XML zu validieren, dann wird es nicht mehr "funktionieren". ;-)

        Grüße
        Thomas

        1. Versuche deine XML zu validieren, dann wird es nicht mehr "funktionieren". ;-)

          Habe ich gemacht, Fehler gefunden und behoben... Danke für die Tipps.

          Habe noch eine Frage ins Forum gestellt. Vielleicht hast Du ja auch darauf eine Antwort... Ist vermutlich ganz einfach...

          Gruss und Dank