logo       
Google Custom Search
    AddThis Social Bookmark Button
-->

Re: [XSLT] Output en mode HTML et liens: msg#00066

Subject: Re: [XSLT] Output en mode HTML et liens

Bonjour,

Je reproduis votre problème avec MSXML3 en effet :

-- Script de test (test.js) :
var xml = new ActiveXObject("Msxml2.FreeThreadedDOMDocument.3.0");
var xsl = new ActiveXObject("Msxml2.FreeThreadedDOMDocument.3.0");

xml.async = false;
xml.validateOnParse = false;
xml.load(WScript.Arguments(0));

xsl.async = false;
xsl.validateOnParse = false;
xsl.load(WScript.Arguments(1));

var result = xml.transformNode(xsl);

WScript.StdOut.Write(result);

-- Exécution :
C:\...>cscript //nologo test.js data.xml style.xsl > out.htm

-- Données (data.xml) :
<?xml version="1.0" encoding="iso-8859-1" ?>

<doc>

<liens>
  <lien id="lien1"
   path="http://www.quelquepart.com/site/le.chemin.référencé; là-bas" />

  <lien id="lien2"
   path="file://C:/Mes Documents/le.chemin.référencé ici" />

  <lien id="lien3"
   path="ftp://ftp.ailleurs.com/documents/référencés là aussi" />
</liens>

</doc>

-- Transformation (style.xsl) :
<?xml version="1.0" encoding="iso-8859-1" ?>

<xsl:transform
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform";
  version="1.0">

<xsl:output method="html" version="4.0" encoding="iso-8859-1" />

<xsl:template match="/">
<xsl:apply-templates />
</xsl:template>

<xsl:template match="doc">
<html>
<head><title>Test...</title></head>
<body>
<h1>Test...</h1>
<xsl:apply-templates />
</body>
</html>
</xsl:template>

<xsl:template match="liens">
<dl><xsl:apply-templates /></dl>
</xsl:template>

<xsl:template match="lien">
<dt><strong><xsl:value-of select="@id" /></strong></dt>
<dd><a href="{@path}">le lien</a></dd>
</xsl:template>

</xsl:transform>

-- Résultat (out.htm) :
<html>
<head>
<META http-equiv="Content-Type" content="text/html; charset=UTF-16">
<title>Test...</title></head>
<body>
<h1>Test...</h1>
<dl><dt><strong>lien1</strong></dt>
<dd><a href="http://www.quelquepart.com/site/le.chemin.r%C3%A9f%C3%A9renc%C3%A9 
l%C3%A0-bas">le lien</a></dd>
<dt><strong>lien2</strong></dt>
<dd><a href="file://C:/Mes Documents/le.chemin.r%C3%A9f%C3%A9renc%C3%A9 ici">le 
lien</a></dd>
<dt><strong>lien3</strong></dt>
<dd><a href="ftp://ftp.ailleurs.com/documents/r%C3%A9f%C3%A9renc%C3%A9s l%C3%A0 
aussi">le lien</a></dd>
</dl>
</body>
</html>

La solution ?

Dans cet exemple, on peut essayer de réécrire le dernier <xsl:template 
match="lien">... en ceci :

<xsl:template match="lien">
<dt><strong><xsl:value-of select="@id" /></strong></dt>
<dd><xsl:choose>
<xsl:when test="starts-with(@path, 'file://')"><xsl:text 
disable-output-escaping="yes">&lt;a href="</xsl:text>
<xsl:value-of select="@path" />
<xsl:text disable-output-escaping="yes">"&gt;le 
lien&lt;/a&gt;</xsl:text></xsl:when>
<xsl:otherwise><a href="{@path}">le lien</a></xsl:otherwise>
</xsl:choose></dd>
</xsl:template>

Ce qui donne :
-- Résultat (2) :
<html>
<head>
<META http-equiv="Content-Type" content="text/html; charset=UTF-16">
<title>Test...</title></head>
<body>
<h1>Test...</h1>
<dl><dt><strong>lien1</strong></dt>
<dd><a href="http://www.quelquepart.com/site/le.chemin.r%C3%A9f%C3%A9renc%C3%A9 
l%C3%A0-bas">le lien</a></dd>
<dt><strong>lien2</strong></dt>
<dd><a href="file://C:/Mes Documents/le.chemin.référencé ici">le lien</a></dd>
<dt><strong>lien3</strong></dt>
<dd><a href="ftp://ftp.ailleurs.com/documents/r%C3%A9f%C3%A9renc%C3%A9s l%C3%A0 
aussi">le lien</a></dd>
</dl>
</body>
</html>

En espérant que cela aide,

Cordialement,

Cyril Jandia

-----Original Message-----
From: xml-tech-bounce@xxxxxxxxx [mailto:xml-tech-bounce@xxxxxxxxx] On Behalf Of 
Verachten Bruno
Sent: mardi 10 août 2004 14:09
To: xml-tech@xxxxxxxxx
Subject: [xml-tech] [XSLT] Output en mode HTML et liens

Bonjour,

je cherche à générer un document HTML à partir d'un document XML par XSLT.
Jusque là, tout va bien.

Lorsqu'on cherche à générer des éléments a, l'attribut href se trouve
être URLEncodé.

Jusque là, tout va bien, les documents liés par le protocole "HTTP"
avec des accents dans leur URL sont remontés correctement.

Mon problème  est le traitement des liens avec protocole "file": les
URLs sont également URLEncodées, et ça ne fonctionne pas (sous
Windows), le système n'arrivant pas à mettre la main sur des documents
dont le chemin est parsemé de %C3%A9%20.

J'ai regardé les archives XMLFR, et Google, mais pour l'instant, je ne
trouve rien.

Quelqu'un a-t'il déjà été confronté au problème?

Merci.

Bruno Verachten
[...]


__________________________________________________________________________________________________________________________________________________
This e-mail and any files transmitted with it are confidential and intended 
solely for the use of the individual to whom it is addressed.If you
have received this email in error please send it back to the person that sent 
it to you. Unauthorized publication, use, dissemination, forwarding,
printing or copying of this email and its associated attachments is strictly 
prohibited.



<Prev in Thread] Current Thread [Next in Thread>