From: jdero (jdero@ifrance.com)
Date: 03/02/2003 - 12:30
Bonjour,
Encore merci à tous ceux qui m'ont aider pour la résolution de ce petit
problème.
Je donne comme prévu le code source qui permet :
- dans un 1er temps d'extraire et d'afficher une partie des
renseignements d'un xml (xslt classique)
- dans un 2e temps de retourner dans le xml, d'extraire d'autre
renseignements et de les afficher dans un popup, ou une autre page html…
-----------------------------------
LE FICHIER XML : NOM_DU_XML.XML
-----------------------------------
Il est de la forme :
<?xml version="1.0" encoding="iso-8859-1"?>
<NOM_ROOT>
<NOM_01>
<KEY>01</KEY>
<NODE_A>CONTENU 01</NODE_A>
<NODE_B>CONTENU 02</NODE_B>
<NODE_C>CONTENU 03</NODE_C>
<NODE_D>CONTENU 04</NODE_D>
<NODE_E>CONTENU 05</NODE_E>
...
<LIEN>CONTENU LIEN</LIEN>
</NOM_01>
<NOM_01>
<KEY>02</KEY>
<NODE_A>CONTENU 05</NODE_A>
<NODE_B>CONTENU 06</NODE_B>
<NODE_C>CONTENU 07</NODE_C>
<NODE_D>CONTENU 08</NODE_D>
<NODE_E>CONTENU 09</NODE_E>
...
<LIEN>CONTENU LIEN</LIEN>
</NOM_01>
</NOM_ROOT>
-----------------------------------
LE FICHIER XSL1 : XSL1.XSL (qui permet d'afficher les 1er
renseignements)
-----------------------------------
Il est de la forme :
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" media-type="text/html; charset=ISO-8859-1"/>
<xsl:template match="/">
<html>
<head></head>
<!-- Le script suivant permet une seconde extraction des NODE_C, NODE_D
et NODE_E pour une valeur KEY donnee, dans une autre page html -->
<SCRIPT language="javascript">
function afficher01(id01) {
// chargement du fichier XML;
var xml01 = new ActiveXObject("Microsoft.XMLDOM");
xml01.async = false;
xml01.load("NOM_DU_XML.XML");
// Declaration variable nodeTodisplay=node pour lequel
id= KEY;
var nodeToDisplay =
xml01.selectSingleNode("NOM_ROOT/NOM_01/[KEY='"+id01+"']");
// chargement du fichier XSL;
var xsl01 = new ActiveXObject("Microsoft.XMLDOM");
xsl01.async = false;
xsl01.load("XSL1.XSL");
// Creation d'un document nouveau document
NOUVEAU_DOC=window.open('');
// ouverture de ce document
NOUVEAU_DOC.document.open();
// Ecriture dans ce document et transformation en Html;
NOUVEAU_DOC.document.write(nodeToDisplay.transformNode(xsl01));
}
</SCRIPT>
<body>
<table>
<tr>
<td>Titre NODE_A</td>
<td>Titre NODE_B</td>
<td>Titre_LIEN</td>
<xsl:apply-templates select="NOM_ROOT/NOM_01">
</xsl:apply-templates>
</tr>
</table>
</body>
</html>
</xsl:template>
<xsl:template match="NOM_ROOT/NOM_01">
<table>
<tr>
<td>
<xsl:apply-templates select="NODE_A"/>
</td>
<td>
<xsl:apply-templates select="NODE_B"/>
</td>
<td>
<a
href="javascript:afficher01({KEY});"><!-- Renvoi la valeur KEY au script
afficher01 -->
<xsl:apply-templates select="LIEN"/>
</a>
</td>
</tr>
</table>
</center>
</xsl:template>
</xsl:stylesheet>
-----------------------------------
LE FICHIER XSL2 : XSL2.XSL (qui permet d'afficher les renseignements
supplémentaires)
-----------------------------------
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" media-type="text/html; charset=ISO-8859-1"/>
<xsl:template match="/">
<html>
<head></head>
<body>
</body>
</html>
</xsl:template>
<xsl:template match="NOM_ROOT/NOM_01">
<body>
<table>
<tr>
<td>
<xsl:apply-templates select="NODE_A"/>
</td>
<td>
<xsl:apply-templates select="NODE_B"/>
</td>
...
<td>
<xsl:apply-templates select="NODE_E"/>
</td>
</tr>
</table>
</body>
</xsl:template>
</xsl:stylesheet>
Dans le XSL1.XSL, on peut afficher la nouvelle page sous forme de popup
en remplaçant le script afficher01 par :
function afficher01(id) {
// chargement du fichier XML;
var xml = new ActiveXObject("Microsoft.XMLDOM");
xml.async = false;
xml.load("NOM_DU_XML.XML");
// Declaration variable nodeTodisplay=node pour lequel
id= KEY;
var nodeToDisplay =
xml.selectSingleNode("NOM_ROOT/NOM_01[KEY='"+id+"']");
// chargement du fichier XSL;
var xsl = new ActiveXObject("Microsoft.XMLDOM");
xsl.async = false;
xsl.load("XSL1.xsl");
// Calcul emplacement du popup 1/4 hauteur et 1/2
largeur + 15 px
var top=(screen.height)/4;
var left=((screen.width)/2)+15;
// Creation d'un popup
popup=window.open("","Titre
popup","width=380,height=380,top="+top+",left="+left+",resizable=no,
location=no, menubar=no, status=no, scrollbars=no, menubar=no");
// Affichage du popup en premier plan
popup.window.focus();
// ouverture du popup
popup.document.open();
// transformation en Html et écriture dans le popup du
xsl
popup.document.write(nodeToDisplay.transformNode(xsl));
}
----------------------------------
N.B.
----------------------------------
Je n'ai pas encore réussi à lancer la seconde extraction dans un DIV
(LAYER)... Si quelqu'un trouve je suis preneur.
Cordialement.
Jérôme
_____________________________________________________________________
Envie de discuter en "live" avec vos amis ? Télécharger MSN Messenger
http://www.ifrance.com/_reloc/m la 1ère messagerie instantanée de France
--
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
|