From: Aurélie Sérieux (aserieux@ydris.com)
Date: 09/02/2001 - 10:54
Bonjour à tous !
Après avoir consulté les archives, je n'ai toujours pas de solution
à mon problème... Le voici ( je vais essayer d'être aussi claire que
possible ) :
J'aimerais afficher les caractéristiques de chaque commande dans un
tableau différent selon la date de commande ( balise <delcom> ) : mes
commandes sont classées en fonction de la date. Comme XSL ne permet pas
d'ouvrir la balise <table> dans un bloc et de la refermer dans un autre, je
n'ai pas vu d'autre solution que de générer le code XSL des tableaux par une
fonction JavaScript ( Ca n'est peut-être pas très XML !!! ) . Je passe donc
mes deux <xsl:call-template name="xxx"/> en paramètre à ma fonction. Or la
première s'affiche et pas la seconde ( il me génère une erreur de ")"
manquante ou de chaîne non terminée ) !!! J'ai donc pensé à deux choses :
1. Comme le code de ma première template est plus court que celui de
la seconde, j'ai peut-être atteint la taille maximale d'une chaîne en
JavaScript. En effet, en limitant mon tableau à une case par ligne ( un seul
<td> ), ça marche !!! Mais évidemment, afficher un seul champ ne m'intéresse
pas vraiment... En revanche, l'affichage de mes colonnes marche alors que la
chaîne de caractères est très longue ! Mais c'est vrai que je ne la passe
pas en paramètre de ma fonction...
2. C'est peut-être un problème d'encapsulation de ' et de " .
Je ne vois plus comment faire ! Ca devrait pourtant bien être possible de
faire comme ça ! Si quelqu'un a une idée ou une solution passant par
autrechose que du JavaScript...
Merci d'avance ! J'espère avoir été suffisament claire !
Voici mes fichiers :
==========Fichier XML===========
<?xml version="1.0" encoding="ISO-8859-1"?>
<?xml-stylesheet href="ListComRslt2.xsl" type="text/xsl" ?>
<PowerCtn>
<Commande name="Commande" racine="1">
<Var>
<delcom>19990610</delcom>
<boncom>005417</boncom>
<codcli>003135 </codcli>
<nomcli>DUNGAREE S.A. </nomcli>
<numref>0978 </numref>
<apref1>RIVIERA </apref1>
<coddes/>
<BgColor>#D0F0FF</BgColor>
</Var>
</Commande>
<Commande name="Commande" racine="1">
<Var>
<delcom>19990625</delcom>
<boncom>005418</boncom>
<codcli>003135 </codcli>
<nomcli>DUNGAREE S.A. </nomcli>
<numref>0978 </numref>
<apref1>RIVIERA </apref1>
<coddes/>
<BgColor/>
</Var>
</Commande>
<Commande name="Commande" racine="1">
<Var>
<delcom>19990706</delcom>
<boncom>005471</boncom>
<codcli>002037 </codcli>
<nomcli>EMINETT </nomcli>
<numref>0954 </numref>
<apref1>MOUSSE </apref1>
<coddes>024516</coddes>
<BgColor>#D0F0FF</BgColor>
</Var>
</Commande>
<Commande name="Commande" racine="1">
<Var>
<delcom>19990706</delcom>
<boncom>005493</boncom>
<codcli>100412 </codcli>
<nomcli>MARCHA MADRID SL. </nomcli>
<numref>0941 </numref>
<apref1>MADONNA/ECRU RESILLE </apref1>
<coddes>099031</coddes>
<BgColor/>
</Var>
</Commande>
<Commande name="Commande" racine="1">
<Var>
<delcom>19990707</delcom>
<boncom>005475</boncom>
<codcli>100057 </codcli>
<nomcli>BLUE NILE </nomcli>
<numref>1242 </numref>
<apref1>YUCCA </apref1>
<coddes/>
<BgColor>#D0F0FF</BgColor>
</Var>
</Commande>
</PowerCtn>
==========Fichier XSL===========
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<html>
<head>
<link rel="stylesheet" type="text/css"
href="images/communs/ydris.css" />
<script language="JavaScript">
<!--
function AffTab ( DelCom , PrevDelCom , NextDelCom , TDebDelai
, TLigCom )
{
if (DelCom != PrevDelCom)
{
/* APPEL DE LA PREMIERE TEMPLATE : CA MARCHE */
document.write(TDebDelai);
/* OUVERTURE DE LA TABLE : */
document.write('<table border="0" cellpadding="2"
cellspacing="2" width="100%">');
/* AFFICHAGE DES EN-TETES DE COLONNES : */
document.write('<TR bgcolor="navy"><TH
width="10%"><FONT color="#FFFFFF">DELAI</FONT></TH><TH width="10%"><FONT
color="#FFFFFF">CMDE</FONT></TH><TH width="25%" colspan="2"><FONT
color="#FFFFFF">CLIENT</FONT></TH><TH width="25%" colspan="2"><FONT
color="#FFFFFF">REFERENCE</FONT></TH><TH width="10%"><FONT
color="#FFFFFF">DESS.</FONT></TH><TH width="10%"><FONT
color="#FFFFFF"><I>METRAGE</I></FONT></TH><TH width="10%"><FONT
color="#FFFFFF"><I>VALEUR</I></FONT></TH></TR>');
}
/* AFFICHAGE DE CHAQUE LIGNE : CA NE MARCHE PAS !!! */
document.write(TLigCom);
if(DelCom != NextDelCom)
{
/* FERMETURE DE LA TABLE : */
document.write("</table><br/>");
}
}
// -->
</script>
</head>
<body>
<xsl:apply-templates select="PowerCtn" />
</body>
</html>
</xsl:template>
<xsl:template match="PowerCtn">
<xsl:apply-templates select="Commande" />
</xsl:template>
<xsl:template match="Commande">
<xsl:variable name="DelCom" select="Var/delcom" />
<xsl:variable name="PrevDelCom"
select="preceding-sibling::Commande[1]/Var/delcom" />
<xsl:variable name="NextDelCom"
select="following-sibling::Commande[1]/Var/delcom" />
<!-- APPEL DE MA FONCTION JAVASCRIPT AVEC MES VARIABLE EN MES
TEMPLATES EN PARAMETRE : -->
<script language="JavaScript">AffTab('<xsl:value-of
select="$DelCom"/>','<xsl:value-of select="$PrevDelCom"/>','<xsl:value-of
select="$NextDelCom"/>','<xsl:call-template
name="DebDelai"/>','<xsl:call-template name="LigCom"/>');</script>
</xsl:template>
<xsl:template name="DebDelai">
<xsl:param name="DelCom" select="Var/delcom" />
<p>
<br/>Commande à livrer avant le : <xsl:value-of
select="$DelCom"/><br/>
</p>
</xsl:template>
<xsl:template name="LigCom">
<xsl:variable name="BgColor" select="Var/BgColor" />
<tr><xsl:attribute name="bgcolor"><xsl:value-of
select="$BgColor"/></xsl:attribute>
<td width="10%"><xsl:value-of select="Var/delcom"
/></td><!--
</tr>
<td width="10%"><xsl:value-of select="Var/boncom" /></td>
<td width="8%"><xsl:value-of select="Var/codcli" /></td>
<td width="17%"><xsl:value-of select="Var/nomcli" /></td>
<td width="8%"><xsl:value-of select="Var/numref" /></td>
<td width="17%"><xsl:value-of select="Var/apref1" /></td>
<td width="10%"><xsl:value-of select="Var/coddes" /></td>
<td width="10%"></td>
<td width="10%"></td> -->
</tr>
</xsl:template>
</xsl:stylesheet>
--
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:05 UTC
webmaster@xmlfr.org
|