Xslt faire un lien html

Fermé
Utilisateur anonyme - 11 oct. 2005 à 21:44
 nobull - 29 juil. 2010 à 09:56
Bonjour à tous,
j'ai un problème...

j'utilise un xls pour formater mon fichier xml.

dans le fichier xml il y a des adresse url et je veux créer des liens et ça ne fonctionne pas.

<xsl:for-each select="TousLesSites/Site">
<xsl:sort select="artist"/>
<tr>
<td align="left"><a href="<xsl:value-of select="URL"/>" target="_blank"><xsl:value-of select="URL"/></a>
</tr>
</xsl:for-each>

je veux donc écrirer l'url et créer le lien... mais j'ai des erreurs

not well-formed...

j'ai essayé plusieur chiose
<a href="<xsl:value-of select="URL"/>" target="_blank">...</a>
<a href=<xsl:value-of select="URL"/> target="_blank">...</a>
et même
<a href="javascript:GoSite("<xsl:value-of select="URL"/>")" target="_blank">...</a>
et
<a href="javascript:GoSite(<xsl:value-of select="URL"/>)" target="_blank">...</a>

mais le script ne reçoit pas l'argument...

merci pour vos conseils...

3 réponses

crabs Messages postés 908 Date d'inscription lundi 18 avril 2005 Statut Membre Dernière intervention 3 août 2008 507
11 oct. 2005 à 22:18
Salut,
Pourquoi t'utilises pas xsl:element avec xsl:attribute pour créer ton élément
a avec un attribut href, soit à la place de <a href="...">...</a>
<xsl:element name="a">
  <xsl:attribute name="href"><xsl:value-of select="URL"/></xsl:attribute>
  <xsl:value-of select="URL"/>
</xsl:element>

A+, crabs
10
en écrivant ça:
<xsl:element name="a">
<xsl:attribute name="href"><xsl:value-of select="URL"/></xsl:attribute>
<xsl:value-of select="URL"/>
</xsl:element>
supposant que <xsl:value-of select="URL"/>= www.google.fr

j'aurais dans la source de ma page finale où je voudrai afficher les résultats quelqchose comme ça:

A%20%20www.google.frA%20%20
ainsi le lien ne fonctionne pas.
c'est comme si l'interprêteur xsl ajoute des espaces au début et à la fin de l'url.
et je l'ai testé en ajoutant un hh avant et aprés la balise comme ça:

<xsl:element name="a">
<xsl:attribute name="href"><xsl:value-of select="URL"/></xsl:attribute>
hh<xsl:value-of select="URL"/>hh
</xsl:element>
et ça me donnait effectivement
hh www.google.fr hh

alors quelqu'un a une idée?????
3
Bonjour, je sais que j'ai un an de retard pour une quelconque réponse, mais si ça peut aider quelqu'un et lui éviter de tourner en rond comme je viens de le faire.
Voici une solution marche pour générer des liens dynamiques à partir d'un xsl.

<a>
<xsl:attribute name="href"><xsl:value-of select="VOTRE LIEN"></xsl:attribute>
<xsl:value-of select="LE NOM QUE VOUS VOULEZ QU'IL APPARAISSE EN FORME DE LIEN"/>
</a>

Voila.

Bon courage à toutes et à tous.
0
moc > Dryman
30 nov. 2009 à 20:16
Bonjour à tous
j'ai moi aussi encore 1 an de retard mais je viens de tomber sur le forum et la manière la plus simple de faire un lien html en xml avec xslt est tout simplement d'écrire dans le fichier xsl:
<a href="{nom_de_la_balise_du_lien_en_xml}"><xsl:value-of select="nom_de_la_balise_du_lien_en_xml"/></a>

ex:
fichier xml:
<exemple>
<lien>www.google.com</lien>
</exemple>

fichier xsl:

<xsl:template match="exemple">
<a href="{lien}"><xsl:value-of select="lien"/></a>
</xsl:template>

Pour faire un lien vers une ancre:

rajouter # devant {lien} => <a href="#{ID_ancre}">...</a>

et ne pas oublier de rajouter dans le fichier xsl une balise avec id="ID_ancre"

ex:
fichier xml:

<exemple>
<lien_ancre>TITRE1</lien_ancre>
......
......
......
<ancre>TITRE1</ancre>
</exemple>

fichier xsl:

<xsl:template match="exemple">
<a href="#{lien_ancre}"><xsl:value-of select="lien_ancre"/></a>
....
....
....
<h1 id=TITRE1><xsl:value-of select="ancre"/></h1>
</xsl:template>

attention: lien_ancre et ancre doivent avoir le même texte dans leur balise: lien_ancre= TITRE1
ancre= TITRE1
voila j'espere que ca pourra vous etre utile
0
Très bien pour la réponse de Dryman
mais il y a une petite erreur
<a>
<xsl:attribute name="href"><xsl:value-of select="VOTRE LIEN" /></xsl:attribute>
<xsl:value-of select="LE NOM QUE VOUS VOULEZ QU'IL APPARAISSE EN FORME DE LIEN"/>
</a>

au lieu de
<a>
<xsl:attribute name="href"><xsl:value-of select="VOTRE LIEN"></xsl:attribute>
<xsl:value-of select="LE NOM QUE VOUS VOULEZ QU'IL APPARAISSE EN FORME DE LIEN"/>
</a>

cad le / après
<xsl:value-of select="VOTRE LIEN"

et on peut écrire

<a>
<xsl:attribute name="href"><xsl:value-of select="VOTRE LIEN" /></xsl:attribute>
cliquez ici
</a>

merci
0
Utilisateur anonyme
12 oct. 2005 à 21:14
c'est ce que j'ai trouvé, mais Merci!!!!
1