From: JANDIA Cyril (Cyril.Jandia@accorservices.com)
Date: 10/08/2004 - 15:06
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>le lien</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>le lien</dd>
<dt><strong>lien2</strong></dt>
<dd>le lien</dd>
<dt><strong>lien3</strong></dt>
<dd>le lien</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"><a href="</xsl:text>
<xsl:value-of select="@path" />
<xsl:text disable-output-escaping="yes">">le lien</a></xsl:text></xsl:when>
<xsl:otherwise>le lien</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>le lien</dd>
<dt><strong>lien2</strong></dt>
<dd>le lien</dd>
<dt><strong>lien3</strong></dt>
<dd>le lien</dd>
</dl>
</body>
</html>
En espérant que cela aide,
Cordialement,
Cyril Jandia
-----Original Message-----
From: xml-tech-bounce@xmlfr.org [mailto:xml-tech-bounce@xmlfr.org] On Behalf Of Verachten Bruno
Sent: mardi 10 août 2004 14:09
To: xml-tech@xmlfr.org
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.
--
Devenez redacteur <XML>fr et contribuez au developpement du
xml francophone (http://xmlfr.org/infos/redacteurs/) !
Liste de diffusion "xml-tech@xmlfr.org" (http://xmlfr.org).
Cette liste est a votre disposition pour discuter en francais de
tout sujet technique lie a XML.
Pour resilier votre abonnement, envoyez un message contenant
la commande "unsubscribe" a xml-tech-request@xmlfr.org
(mailto:xml-tech-request@xmlfr.org?Subject=unsubscribe)
Archive générée par hypermail 2.1.3 le 31/08/2004 - 11:12 UTC
webmaster@xmlfr.org
|