From: JeanFrancois.METZGER@reuters.com
Date: 05/03/2002 - 15:27
Bonjour a tous.
Je fais mes premiers pas avec XSL et je suis confronté à un petit problème.
Ceci est un exemple simple d'un problème que je rencontre avec Xalan (dernière version
téléchargée sur apache: Xalan 2 D14): Je ne comprends pas pouquoi la valeur de ma
variable EventName est modifiée.
Voici le contenu du fichier XML en entrée:
<?xml version="1.0" encoding="UTF-8"?>
<XSL_TEST Event="DELIVERY">
<CONTENT>
<OrderDate>2001/03/12</OrderDate>
<DeliveryDate>2001/02/12</DeliveryDate>
</CONTENT>
</XSL_TEST>
L'objectif du fichier XSL est de "traduire" l'attribut Event du node XSL_TEST et de vérifier que DeliveryDate
est supérieure à OrderDate. Voici le contenu de ce fichier XSL:
<?xml version = "1.0" encoding = "UTF-8"?>
<xsl:transform xmlns:xsl = "http://www.w3.org/1999/XSL/Transform" version = "1.0">
<xsl:variable name="EventName">
<xsl:choose>
<xsl:when test="XSL_TEST/@Event='ORDER'">Commande</xsl:when>
<xsl:when test="XSL_TEST/@Event='BILL'">Facture</xsl:when>
<xsl:when test="XSL_TEST/@Event='DELIVERY'">Livraison</xsl:when>
<xsl:otherwise>ERREUR</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<!-- Dates comparaison -->
<xsl:variable name="EventStatus">
<xsl:if test="$EventName ='Livraison'">
<xsl:variable name="InOrderDate" select="XSL_TEST/CONTENT/OrderDate"/>
<xsl:variable name="OrderDD" select="substring($InOrderDate,9,2)"/>
<xsl:variable name="OrderMM" select="substring($InOrderDate,6,2) * 100"/>
<xsl:variable name="OrderYY" select="substring($InOrderDate,1,4) * 10000"/>
<xsl:variable name="OrderDay" select="$OrderDD + $OrderMM + $OrderYY"/>
<xsl:variable name="InDeliveryDate" select="XSL_TEST/CONTENT/DeliveryDate"/>
<xsl:variable name="DelivDD" select="substring($InDeliveryDate,9,2)"/>
<xsl:variable name="DelivMM" select="substring($InDeliveryDate,6,2) * 100"/>
<xsl:variable name="DelivYY" select="substring($InDeliveryDate,1,4) * 10000"/>
<xsl:variable name="DeliveryDay" select="$DelivDD + $DelivMM + $DelivYY"/>
<xsl:if test="$OrderDay > $DeliveryDay">ERREUR</xsl:if>
<xsl:if test="$OrderDay < $DeliveryDay">OK</xsl:if>
</xsl:if>
</xsl:variable>
<!-- Templates -->
<xsl:template match="XSL_TEST">
<EventReport>
<xsl:call-template name="Test"/>
</EventReport>
</xsl:template>
<xsl:template name="Test">
<Event><xsl:value-of select="$EventName"/></Event>
<Status><xsl:value-of select="$EventStatus"/></Status>
<Event><xsl:value-of select="$EventName"/></Event>
</xsl:template>
</xsl:transform>
Au résultat de la tranformation on constate que la variable EventName a changé de valeur!
<?xml version="1.0" encoding="UTF-8" ?>
<EventReport>
<Event>Livraison</Event>
<Status>ERREUR</Status>
<Event>12</Event>
</EventReport>
Pour info j'ai fait le même test avec MsXML et cela semble se dérouler normalement, la valeur d'EventName reste "Livraison".
Merci de vos réponses.
JF.
------------------------------------------------------------- ---
Visit our Internet site at http://www.reuters.com
Any views expressed in this message are those of the individual
sender, except where the sender specifically states them to be
the views of Reuters Ltd.
--
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 28/06/2004 - 11:06 UTC
webmaster@xmlfr.org
|