Bonjour,

J'ai eu envie de m'amuser avec xslt pour produire des documents html et latex.

J'ai écrit mon fichier xml comme ceci :
<link url="http://www.lesite.fr/">text</link>

Ma feuille de xslt xml2html fonctionne à merveille avec ceci
<xsl:transform>
<xsl:template match="link">
<a href="{@url}">
<xsl:value-of select="." />
</a>
</xsl:template>
</xsl:transform>

En revanche je ne vois pas trop comment faire pour créer des liens latex. La syntaxe que je dois obtenir est la suivante :
\href{http://www.lesite.fr/}{text}
Autant c'était facile pour produire html car il n'y avait rien à faire autant avec latex il faut séparer les attributs et mettre des accolades entre. J'ai lu les spécifications xsl (seule doc intéressante que j'ai pu trouver) et je n'ai rien trouvé pour palier à mon problème.

Quelqu'un aurait-il une idée?
Modifié le 24 Jan 2005 - 23:01
Oui, voici une solution :

<?xml version='1.0' encoding='ISO-8859-1'?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" >
  <xsl:output method="text" encoding="ISO-8859-1" />
  <xsl:template match="link">
    <xsl:param name="debut" select="'\href{'"/>
    <xsl:param name="milieu" select="'}{'"/>
    <xsl:param name="fin" select="'}'"/>

    <xsl:value-of select="$debut" />
    <xsl:value-of select="@url" />
    <xsl:value-of select="$milieu" />
    <xsl:value-of select="." />
    <xsl:value-of select="$fin" />

  </xsl:template>
</xsl:stylesheet>
Quel enthousiasme !
Alors ne nous arretons pas là. Certainement un peu moins lisible mais plus synthétique (et + rapide) :
<?xml version='1.0' encoding='ISO-8859-1'?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" >
  <xsl:output method="text" encoding="ISO-8859-1" />
    <xsl:template match="link">
      <xsl:value-of select="concat('\href{',@url,'}{',.,'}')" />
    </xsl:template>
</xsl:stylesheet>
En effet!!!

C'est pas que la vitesse soit déterminante pour moi (le xml est parsé en 0,01s user 0,01s system 380% cpu 0,005 total) mais j'aime bien quand même.

Merci.