Re: guillemets dans un href généré par xslt

Stephane Bortzmeyer <[email protected]> Wed, 24 Jan 2007 21:12:07 +0100
Newsgroups gmane.text.xml.french.tech
Message-ID <[email protected]>
On Wed, Jan 24, 2007 at 11:25:26AM +0100,
 [email protected] <[email protected]> wrote 
 a message of 39 lines which said:

> Y a t il moyen d'encoder une URL en UTF-8 en xslt ?

Pourquoi donc en UTF-8 ? Ce ne serait pas légal dans un URI.

La bonne solution est le "percent encoding" mais je ne crois pas qu'il
existe une fonction standard en XSLT 1. Heureusement, beaucoup de
processeurs implémentent EXSLT qui a str:encode-uri :

Pour tester :

    <xsl:if test="not(function-available('str:encode-uri'))">      
       <xsl:message terminate="no">
         <xsl:text>No EXSLT encode-uri function available for this processor (</xsl:text><xsl:value-of select="system-property('xsl:vendor')"/><xsl:text>), URIs
 may not be properly escaped.</xsl:text>
       </xsl:message>
     </xsl:if>

Pour encoder la variable $word :

       <xsl:choose>
          <xsl:when test="function-available('str:encode-uri')">      
            <xsl:value-of select="str:encode-uri($word, true())"/>
          </xsl:when>
          <xsl:otherwise>
            <xsl:value-of select="$word"/>
          </xsl:otherwise>
        </xsl:choose>