2010-09-02 4 views
8

Je suis toujours à la recherche, mais je ne l'ai pas encore trouvé le moyen de réaliser quelque chose comme ceci:Xslt générant des tags Html <IMG>. Comment utiliser une valeur de noeud XML en tant src attribut pour les <IMG> Balises

xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
    <!-- some other templates --> 
    <xsl:template match="IMAGE"> 
     <img src="src_attribute_to_be_read_from_the_xml_file.jpg"/> 
    </xsl:template>  
</xsl:stylesheet> 

Dans mon Xml <IMAGE> tags, la valeur de texte est le nom de fichier qui doit être inséré dans la chaîne src_attribute_to_be_read_from_the_xml_file.jpg lorsqu'il est traité par ce fichier Xslt.

Avez-vous une idée pour le faire?

Répondre

26

Vous utilisez xsl:attribute:

<img> 
    <xsl:attribute name="src"> 
     <xsl:value-of select="you path here"/> 
    </xsl:attribute> 
</img> 

Il devrait également être possible d'utiliser

<img src="{some expression here}" /> 

Selon le specification ce que l'on appelle un modèle de valeur d'attribut et doit toujours travailler (c.-à la fois XSLT 1.0 et 2.0). Agréable. Maintenant j'ai appris quelque chose aussi.

+1

thx xsl: l'attribut fait le travail. et merci pour l'info sur "{$ some-variable-here}", je devrais vérifier pour savoir comment cela fonctionne. –

+0

Il devrait. J'ai révisé ma réponse. – musiKk

+1

@musikk et @Stephane Rolland: Chaque fois que vous pouvez utiliser des éléments de résultat littéraux et AVT, utilisez-le. C'est rapide et compact. –

1

Sinon, vous pouvez utiliser le modèle XSL:

<xsl:template match="image"> 
<xsl:element name="IMG"> 
    <xsl:attribute name="src"> 
    <xsl:value-of select="your_path"/> 
    </xsl:attribute> 
    <xsl:attribute name="title"> 
    <xsl:value-of select="your_title"/> 
    </xsl:attribute > 
</xsl:element> 

0

Et si vous voulez ajouter les height, width et alt attributs, vous pouvez le faire comme ce qui suit:

  <img> 
      <xsl:attribute name="src"> 
       <xsl:value-of select="picture"/> 
       </xsl:attribute> 
       <xsl:attribute name="title"> 
       <xsl:value-of select="pictureTitle"/> 
       </xsl:attribute > 
       <xsl:attribute name="alt"> 
       <xsl:value-of select="pictureTitle"/> 
       </xsl:attribute > 
       <xsl:attribute name="height"> 
       20 
       </xsl:attribute > 
       <xsl:attribute name="width"> 
       30 
       </xsl:attribute > 
     </img> 
Questions connexes