Communauté Informatique NDFR.net

Communauté Informatique NDFR.net (http://www.ndfr.net/forums/index.php)
-   Programmation Web (HTML, PHP, ASP, Java, XML, etc.) (http://www.ndfr.net/forums/forumdisplay.php?f=65)
-   -   Fabriquer un fichier XSL (http://www.ndfr.net/forums/showthread.php?t=4067)

souljah 01-05-2004 14:37

Fabriquer un fichier XSL
 
bonjour !
voilà j'ai un document xml, que je voudrais
passer en html en me servant de regles contenues dans un fichier xls

Code:

---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:

Code:

<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:

----------------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
Code:

<!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 01-05-2004 17:13

Re: Fabriquer un fichier XSL
 
j'ai aussi tenté ça mais ça ne marche pas

Code:

<?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 01-05-2004 17:44

Re: Fabriquer un fichier XSL
 
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 01-05-2004 17:54

Re: Fabriquer un fichier XSL
 
Quote:

Originally Posted by Fred
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/independe...slexample.html

souljah 01-05-2004 19:44

Re: Fabriquer un fichier XSL
 
merci je vais lire ça et voir ce que je peux en tirer !

Fred 01-05-2004 23:25

Re: Fabriquer un fichier XSL
 
Pardon, j'ai confondu XLS et XSL, je croyais qu'on parlait de fichiers Excel :D

souljah 02-05-2004 01:33

Re: Fabriquer un fichier XSL
 
ç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
Code:

<?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
Code:

<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é :
Code:

<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:
Code:

<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_ 03-05-2004 23:25

Re: Fabriquer un fichier XSL
 
Quote:

Originally Posted by souljah
il ya qq chose à modifier de ce côté sûrement:
Code:

<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-07-2007 09:54

Essaye ça :
Code:

<?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 :
Code:

<xsl:for-each select="/Inbox/Lettre">
après la balise table

Juli3n 18-01-2008 13:16

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-01-2008 13:48

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/win...hes/26840.html

Juli3n 18-01-2008 15:03

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-01-2008 21:27

Arrives-tu à ouvrir le xml dans firefox ?

Juli3n 21-01-2008 09:17

Oui il s'ouvre mais il manque des couleurs et certains blocs se chevauchent...


All times are GMT +2. The time now is 15:40.

Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.