ulimativ: Xpath-problem(zu dumm?)

Also ich habe folgendes xml, also mal eine vereinfachte version

<website>
  <chapter>
    <image imageid="1" alt="Screenshot" position="left" />
  </chapter>

<images>
    <image id="1" file="localhost/mhuhn.de/0403/fotos/38.jpg" width="254" height="300" />
  </images>
</website>

---------------

und folgendes XSL:

<xsl:template match="chapter">
   <p><xsl:apply-templates /></p>
</xsl:template>

<xsl:template match="image">
     <img>
       <xsl:attribute name="src">http://<xsl:value-of select="/images/image[@id=1]/@file" /></xsl:attribute>
</img>
</xsl:template>

----
Also was ich will ist ja fast offensichtlich. Ich will die Url vom image-Node auslesen, und als attribut einfügen.
Was mache ich falsch?

Gruß Uli

  1. Also was ich will ist ja fast offensichtlich. Ich will die Url vom image-Node auslesen, und als attribut einfügen.
    Was mache ich falsch?

    Das Wurzelelement ist nicht 'images', somit liefert '/images/...' nichts zurück.

    <xsl:template match="image"><img src="http://{@file}" /></xsl:template>

    1. Hallo nommal..

      Das Wurzelelement ist nicht 'images', somit liefert '/images/...' nichts zurück.

      Sprry Tippfehler:
      <xsl:value-of select="/website/images/image[@id=1]/@file" />
      Aber geht trotzdem nicht.

      Was soll ich hiermit anfangen? Das <image>-Tag ist nicht das aktuelle, sondern steht woanders....

      <xsl:template match="image"><img src="http://@file}" /></xsl:template>

      Noch jemand eine Idee?
      Gruß Uli

  2. Hallo,

    <website>
      <chapter>
        <image imageid="1" alt="Screenshot" position="left" />
      </chapter>

    <images>
        <image id="1" file="localhost/mhuhn.de/0403/fotos/38.jpg" width="254" height="300" />
      </images>
    </website>

    Schlechte Struktur.

    Ich nehme an du möchtest im Chapter das image mit dem entsprechenden ID referenzieren und aufrufen.

    und folgendes XSL:

    <xsl:template match="chapter">
       <p><xsl:apply-templates /></p>
    </xsl:template>

    <xsl:template match="image">
         <img>
           <xsl:attribute name="src">http://<xsl:value-of select="/images/image[@id=1]/@file" /></xsl:attribute>
    </img>
    </xsl:template>


    Also was ich will ist ja fast offensichtlich. Ich will die Url vom image-Node auslesen, und als attribut einfügen.
    Was mache ich falsch?

    Du hast eine schlechte XML-Struktur, du hat zwei mal <image> Element mit zwei vollkommen unterschiedlicher Bedeutung aber eben nur einen Template für das <image> Element.
    Also was soll deiner Meinung nach dein Template tun? Welches <image> soll er denn nehmen?

    Eine Lösung ist möglich, aber besser wäre du würdest deine XML-Struktur anders überlegen, da das so wesentlich sauberer wäre.

    Grüße
    Thomas