PDA

View Full Version : Fabriquer un fichier XSL


souljah
1 mai 2004, 13h37
bonjour !
voilà j'ai un document xml, que je voudrais
passer en html en me servant de regles contenues dans un fichier xls


---DOC XML----
<?xml version='1.0' ?>
<!DOCTYPE Inbox PUBLIC '//-XML-MAIL//' >
<Inbox>
<Lettre>

<Expediteur>
<AdresseElectronique nom='monNom' domaine='mail.fr'/>
</Expediteur>

<Destinataire>
<AdresseElectronique nom='nomDestinataire' domaine='mail.fr'/>
</Destinataire>

<Contenu>
<ContenuSimple>
<![CDATA[le corps du message ]]
</ContenuSimple>
</Contenu>

</Lettre>
</Inbox>
----------------



je voudrais avoir un fichier xls basique qui genererait le code html
par exemple comme ça:


<html>
<body>

<table>
<tr>
"From : " . 'monNom'
</tr>

<tr>
"Message : "
</tr>

<tr>
// le corps du message
</tr>

</table>

</html>
</body>




voici à koi ressemble ce que j'ai fais pour le fichier xls, le probleme c'est que je ne sais pas recupérer 'monNom' ou 'mail.fr' par exemple...


----------------CODE XLS-----------
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0"
>
<xsl:output method="html"/>

<xsl:template match="/">
<html>
<body>
<table>
<tr>
"From : " .......
</tr>

<tr>
"Message : "
</tr>

<tr>
// le corps du message
</tr>

</table>
</body>
</html>
</xsl:template>

</xsl:stylesheet>
--------------------------------------


si qq1 veut bien m'aider svp , MERCI !

ah oui et j'ai tte un dtd associée

<!ELEMENT Message (Commande | Inbox) >

<!ELEMENT Commande (RetirerCourrier|EnvoyerLettre) >

<!ELEMENT RetirerCourrier (UtilisateurIdentifie,Contact)>

<!ELEMENT Inbox (Lettre*)>

<!ELEMENT Contact EMPTY>
<!ATTLIST Contact machine NMTOKEN #REQUIRED >
<!ATTLIST Contact port NMTOKEN #REQUIRED >

<!ELEMENT Utilisateur (AdresseElectronique)>
<!ELEMENT AdresseElectronique EMPTY>
<!ATTLIST AdresseElectronique nom NMTOKEN #REQUIRED>
<!ATTLIST AdresseElectronique domaine NMTOKEN #REQUIRED>

<!ELEMENT UtilisateurIdentifie (AdresseElectronique,Identificateur)>
<!ELEMENT Identificateur EMPTY>
<!ATTLIST Identificateur motdepasse NMTOKEN #REQUIRED>

<!ELEMENT EnvoyerLettre (UtilisateurIdentifie,Lettre)>
<!ELEMENT Lettre (Expediteur,Destinataire,Contenu) >
<!ELEMENT Expediteur (AdresseElectronique) >
<!ELEMENT Destinataire (AdresseElectronique) >
<!ELEMENT Contenu (ContenuSimple|ContenuComplexe)>
<!ELEMENT ContenuSimple (#PCDATA) >
<!ELEMENT ContenuComplexe (ContenuMedia*) >
<!ELEMENT ContenuMedia (#PCDATA) >
<!ATTLIST ContenuMedia type-media (text | html | jpeg | gif | mp3) "text">

souljah
1 mai 2004, 16h13
j'ai aussi tenté ça mais ça ne marche pas

<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0"
>
<xsl:output method="html"/>
<xsl:template match="Inbox/Lettre">
<html>
<body>
<xls:apply-templates select="Expediteur" />
<xls:apply-templates select="Destinataire" />
<xls:apply-templates select="Contenu" />
</body>
</html>
</xsl:template>

<xls:apply-templates match="Expediteur">
Destinataire : <xls:value-of select="nom" />
Domaine : <xls:value-of select="domaine" />
</xsl:template>

<xls:apply-templates match="Destinataire">
Destinataire : <xls:value-of select="nom" />
Domaine : <xls:value-of select="domaine" />
</xsl:template>

<xls:apply-templates match="Contenu">
//...
</xsl:template>
</xsl:stylesheet>

Fred
1 mai 2004, 16h44
Ca m'a l'air un peu compliqué ton histoire ... en gros tu as un fichier XML que tu veux passer en HTML, mais qu'est-ce que le XLS vient faire ici ? Qu'entends-tu par "me servir des règles du XLS" ?

Benjy
1 mai 2004, 16h54
Ca m'a l'air un peu compliqué ton histoire ... en gros tu as un fichier XML que tu veux passer en HTML, mais qu'est-ce que le XLS vient faire ici ? Qu'entends-tu par "me servir des règles du XLS" ?Les fichiers XLS sont aux fichiers XML ce que sont les CSS aux HTML (en gros hein).

Par contre mes connaissances en XSL étant très limitées, je ne pense pas pouvoir t'aider directement... tu peux toutefois aller consulter cet exemple (simple mais très accessible) : http://www.comptechdoc.org/independent/web/xml/guide/xslexample.html

souljah
1 mai 2004, 18h44
merci je vais lire ça et voir ce que je peux en tirer !

Fred
1 mai 2004, 22h25
Pardon, j'ai confondu XLS et XSL, je croyais qu'on parlait de fichiers Excel :D

souljah
2 mai 2004, 00h33
ça avance un peu !
ptêtre ke le pb vient du fichier xml renvoyé par le server
j'ai essayé de modifier celui ci, comme ça, en rajoutant la reference à la dtd, et en enlevant la balise (mal fermée au passage..) CDATA

<?xml version='1.0' ?>
<!DOCTYPE Inbox PUBLIC '//-XML-MAIL//' 'xmlmail.dtd'>
<Inbox>
<Lettre>

<Expediteur>
<AdresseElectronique nom='monNom' domaine='mail.fr'/>
</Expediteur>

<Destinataire>
<AdresseElectronique nom='nomDestinataire' domaine='mail.fr'/>
</Destinataire>

<Contenu>
<ContenuSimple>
le corps du message
</ContenuSimple>
</Contenu>

</Lettre>
</Inbox>


j'ai aussi un peu modifié la xsl

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

<xsl:template match="/">
<HTML>
<HEAD>
</HEAD>

<BODY>
<TABLE>
<xsl:for-each select="Inbox/Lettre">
<xsl:for-each select="Expediteur">
<tr><TD>
Expediteur<BR></BR>
NOM : <xsl:value-of select="AdresseElectronique/@nom" />
DOMAINE : <xsl:value-of select="AdresseElectronique/@domaine" />
</TD></tr>
</xsl:for-each>

<xsl:for-each select="Destinataire">
<tr><TD>
Destinataire<BR></BR>
NOM : <xsl:value-of select="AdresseElectronique/@nom" />
DOMAINE : <xsl:value-of select="AdresseElectronique/@domaine" />
</TD></tr>
</xsl:for-each>


<xsl:for-each select="Contenu">
<tr><TD>
Contenu<BR></BR>
<xsl:value-of select="/ContenuSimple" />
</TD></tr>
</xsl:for-each>


</xsl:for-each>
</TABLE>
</BODY>
</HTML>
</xsl:template>

</xsl:stylesheet>


et, oh miracle, code généré :

<HTML>
<HEAD>
<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
</HEAD>
<BODY>
<TABLE>
<tr>
<TD>
Expediteur<BR>
NOM : monNom
DOMAINE : mail.fr</TD>
</tr>
<tr>
<TD>
Destinataire<BR>
NOM : nomDestinataire
DOMAINE : mail.fr</TD>
</tr>
<tr>
<TD>
Contenu<BR>
</TD>
</tr>
</TABLE>
</BODY>
</HTML>

ya juste un pb avec l'affichage du CONTENU !

il ya qq chose à modifier de ce côté sûrement:

<xsl:for-each select="Contenu">
<tr><TD>
Contenu<BR></BR>
<xsl:value-of select="/ContenuSimple" />
</TD></tr>
</xsl:for-each>



MERCI DE M'AIDER SUR CE DERNIER POINT SVP !

Junta_
3 mai 2004, 22h25
il ya qq chose à modifier de ce côté sûrement:

<xsl:for-each select="Contenu">
<tr><TD>
Contenu<BR></BR>
<xsl:value-of select="/ContenuSimple" />
</TD></tr>
</xsl:for-each>



essaye en enlevant le / devant ContenuSimple

-> <xsl:value-of select="ContenuSimple" />

belibech
23 juillet 2007, 08h54
Essaye ça :
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="html"/>
<xsl:template match="/Inbox/Lettre">
<html>
<body>
<table>
<tr>
"From : " <xsl:value-of select="./Expediteur/AdresseElectronique/@nom"/>
"Message : "
<xsl:value-of select="./Contenu/ContenuSimple"/>
</tr>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>

si tu veux avoir tout une liste il faut ajouter une boucle for each :
<xsl:for-each select="/Inbox/Lettre"> après la balise table

Juli3n
18 janvier 2008, 12h16
Bonjour,

Je viens de recuperer un projet qui est d'imprimer un fichier XML.
Il y a deja un fichier XSL associé et l'affichage dans le viewer de notre logiciel est nikel. Mais impossible de le sortir en couleur.
J'ai lu quelques methodes mais ca a l'air assez complexe...

Et il faut surtout que je gere les saut de pages et les pieds de page mais je n'y arrive pas. C'est la 1e fois que j'utilise ce genre de chose.

Car le fichier ne contient que des balises XSL classique et pas de XSL-FO. Il faut donc refaire entierement la feuille? Inserer du FO? Ou il y a une autre methode?
Merci beaucoup pour votre aide.

Julien

Spycam
18 janvier 2008, 12h48
Bonjour, as-tu essayé de transformer au préalable ton xml/xsl en html afin de pouvoir l'imprimer plus simplement ?

Voici un logiciel en version d'évaluation qui devrait te permettre d'arriver à tes fins : http://www.01net.com/telecharger/windows/Bureautique/editeur_de_texte/fiches/26840.html

Juli3n
18 janvier 2008, 14h03
Merci pour ta reponse.
Effectivement ce logiciel fonctionne quand j'enregistre en PDF, ca garde la couleur. Mais pas en html ou autre...
Par contre ca perd totalement la mise en forme de la page et ca n'affiche plus bien les Fieldset.

Et en ce qui concerne les saut de page y a t'il une solution pas trop complexe?
Merci encore.

Spycam
18 janvier 2008, 20h27
Arrives-tu à ouvrir le xml dans firefox ?

Juli3n
21 janvier 2008, 08h17
Oui il s'ouvre mais il manque des couleurs et certains blocs se chevauchent...