2010-12-16 3 views
0

seit einiger Zeit mit diesem liebäugelt ... ich eine XML-Datei mit den folgenden Zeilen habenGet value-of in XSL, XML gleichen Namen

<image size="small">image_small.jpg</image> 
<image size="medium">image_medium.jpg</image> 
<image size="large">image_large.jpg</image> 

Alle Ideen, wie kann ich das Medium nur erhalten URL zum Beispiel.

zur Zeit habe ich ... aber es tut den Trick nicht

<tr> 
<td><img><xsl:attribute name="src"> 
      <xsl:value-of select="image/@size[@size=medium]" /> 
     </xsl:attribute> 
    </img> 
</td> 
</tr> 

Vielen Dank im Voraus

Antwort

3

Ihre Frage ist nicht sehr gut definiert, da wir Ihre ganze XSLT nicht noch den gewünschten Ausgabe, aber ich werde es versuchen:

Wenn Sie eine For-Schleife verwenden, um über die verschiedenen Bilder zu iterieren, müssen Sie Ihre Einschränkungen für die Schleife selbst festlegen, nicht den Inhalt der Schleife.

Wenn Sie Ihren Beispielcode in einem xsl:for-each setzen wird jedes Bild durchlaufen, sondern nur das @src Attribut füllen, wenn die image mit @size="medium" der aktuellen Knoten. Damit erhalten Sie drei Tabellenzeilen mit drei Bildern, aber nur ein Bild mit einem gültigen @src Attribut.

Statt Ihre xsl:for-each (or use xsl:apply-templates) ändern nur mit @size="medium" über Ihre Bilder iterieren:

<!-- This will only iterate over the medium sized images. --> 
<xsl:for-each select="image[@size='medium']"> 
    <tr> 
    <td> 
     <img src="{.}"/> 
    </td> 
    </tr> 
</xsl:for-each> 

Noch ein Tipp: statt mit xsl:attribute verwenden, um eine attribute value template.

+0

arbeitete wie ein absoluter Charme, danke – Stevanicus