IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

XSL/XSLT/XPATH XML Discussion :

mise en page (Header and Footer) en XML-XSL.


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Avril 2002
    Messages : 14
    Points : 12
    Points
    12
    Par défaut mise en page (Header and Footer) en XML-XSL.
    Bonjour,

    Je souhaiterai savoir s'il existe un moyen de mettre des header et des footer dans un fichier généré par XML-XSL, comme on peut le voir dans Word.

    Je veux répéter l'entête et le bas de page. En gros est il possible de gerer le fichier en considérant une page apres l'autre :o

    Merci de votre aide, je suis toute perdue .

    Christine :fr:
    Christine (une petite francaise exilée au Quebec)

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    96
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 96
    Points : 72
    Points
    72
    Par défaut
    Oui avec un moteur comme fop tu peux présenter tes données xml dans un format pdf, de cette manière tu peux faire intervenir des en-tête et pied de page.
    Tu pouras définir dans ta feuille xsl des modéles de pages avec les balises fo.

    http://xml.apache.org/fop/

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Avril 2002
    Messages : 14
    Points : 12
    Points
    12
    Par défaut un petit exemple
    Salut ,

    Merci beaucoup, c'est une bonne piste mais comme je suis toute nouvelle dans le monde XSL-XML j'ai du mal à le faire, aurais tu un petit exemple pour me lancer .

    Merci .

    Christine
    Christine (une petite francaise exilée au Quebec)

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    96
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 96
    Points : 72
    Points
    72
    Par défaut
    XML -----> PDF

    Le fichier xsl commence par:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <?xml version="1.0" encoding="utf-8"?>
    <xsl:stylesheet
    	xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    	xmlns:fo="http://www.w3.org/1999/XSL/Format"
    	version="1.0">
    La structure est proche de celle du html en plus détaillée.

    On utilise des balises fo, dont l'élément racine est obligatoirement fo:root.

    Dans une balise fo:layout-master-set on doit rassembler les modèles de mise en page du document
    exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
     
    <fo:layout-master-set>
     
                  <!--Modèle de page nommé page-initiale-->	
    	  <fo:simple-page-master master-name="page-initiale"
    		page-height="29.7cm" page-width="21cm"
                            margin-top="1cm" margin-bottom="1cm" <!--définition des marges-->
                            margin-left="0.5cm" margin-right="0.5cm">
    	    <fo:region-before extent="5cm"/><!--en-tete de hauteur de 5cm-->
    	    <fo:region-after extent="1cm"/><!--pied de page de hauteur de 1cm-->
    	    <fo:region-body margin-top="5cm" margin-bottom="2cm"/><!--corps du doc-->
    	  </fo:simple-page-master>
     
                 <!--Modèle de page nommé Standard-->		
    	<fo:simple-page-master master-name="Standard"
    	      page-height="29.7cm" page-width="21cm"
                      margin-top="2cm" margin-bottom="1cm"<!--définition des marges-->
                      margin-left="0.5cm" margin-right="0.5cm">
    	  <fo:region-after extent="1cm"/><!--pied de page-->
    	  <fo:region-body margin-bottom="2cm"/><!--corps du doc-->
    	</fo:simple-page-master>
     
    	<!--Modèle d'une séquence de page  nommé Standard-->		
    	<fo:page-sequence-master master-name="mod">
                  <fo:single-page-master-reference master-reference="page-initiale"/><!--modéle de la première page-->
    	  <fo:repeatable-page-master-reference master-reference="Standard"/><!--modéle des autres pages-->
    	</fo:page-sequence-master>
     
    	</fo:layout-master-set>
    Il faut au moins une séquence de page dans un document.

    Pour créer le contenu du doc on utilise la séquence de page 'mod':
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <fo:page-sequence master-reference="mod">
    .
    .
    .
    </fo:page-sequence master-reference>
    Il faut d'abord créer les contenu de l'en-tête et du pied de page avant celui du corps du document.
    On utilise les balises fo:flow qui désigne une suite de paragraphes, de figures, de tableaux, etc, et les balises fo:block qui correspondent approximativement à la balise div en html.

    Ecriture dans l'en-tête et le pied de page:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    <!--contenu de l'en-tête-->
      <fo:static-content flow-name="xsl-region-before">
        <fo:external-graphic src="url(logo.bmp)"/><!--=<img src="logo.bmp" en html--> 
      </fo:static-content>
    <!--contenu du pied de page-->
      <fo:static-content flow-name="xsl-region-after">
        <fo:block font-size="8pt" text-align="center">Page <fo:page-number/></fo:block><!--<fo:page-number/>permet de numéroter les pages-->
      </fo:static-content>
    Ecriture dans le corps de page:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <fo:flow flow-name="xsl-region-body">
      <fo:block>
      .
      .
      </fo:block>
    </fo:flow>
    Création de tableaux:

    Exemple d'un tableaux à trois colonnes, dans lequel on insére les valeurs des elements 'A', 'B', et 'C' d'un fichier xml
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
     
    <fo:table>
          <fo:table-column column-width="10mm"/>
          <fo:table-column column-width="20mm"/><!--définition de la largeur des colonnes-->
          <fo:table-column column-width="20mm"/>
     
    <!--définition des titres des colonnes-->
          <fo:table-header font-size="5pt">
          <fo:table-row><!-- = <tr> en html-->
    	 <fo:table-cell padding="0.3cm" border="0.5pt solid black"><!-- = <td> en html on doit définir les bords des cellules et l'espace de remplissage-->
    	   <fo:block>
    	   A
    	   </fo:block>
    	 </fo:table-cell>
             <fo:table-cell padding="0.3cm" border="0.5pt solid black">
    	   <fo:block>
    	   B
    	   </fo:block>
    	 </fo:table-cell>
             <fo:table-cell padding="0.3cm" border="0.5pt solid black">
    	   <fo:block>
    	   C
    	   </fo:block>
    	 </fo:table-cell>
          </fo:table-row>
          </fo:table-header>
     
       <!--définition du corps du tableau-->
          <fo:table-body>
            <xsl:for-each select="....">
    	       <xsl:sort select=".../..."/>
              <fo:table-row font-size="5pt" background-color="#FFFFE6">
    	         <xsl:apply-templates/>
    	        </fo:table-row>
            </xsl:for-each>
          </fo:table-body>
        </fo:table>
    Générer du pdf:
    Fop étant fait en java il faut je jdk
    Avec fop: on utilise la commande java org.apache.fop.apps.Fop -xml fichier.xml -xsl fichier.xsl -pdf fichier.pdf
    Ne pas oublier de configurer les variables d'environnement

    Pour vraiment bien comprendre xml,xsl je te conseille le livre "comprendre XSLT" de Bernd Amman et Philippe Rigaux de chez O'Reilly
    David

  5. #5
    Futur Membre du Club
    Inscrit en
    Avril 2002
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Avril 2002
    Messages : 6
    Points : 6
    Points
    6
    Par défaut
    c cool ca !!!!

Discussions similaires

  1. [Itext] - Mise en page dans un footer
    Par anaon dans le forum Documents
    Réponses: 0
    Dernier message: 06/04/2010, 11h06
  2. [DOM] Mise en page (formatage) d'un fichier XML
    Par kokusho dans le forum Bibliothèques et frameworks
    Réponses: 3
    Dernier message: 04/09/2008, 21h19
  3. Projet : Mise en place d'une solution avec XML/XSL
    Par kokogil dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 25/06/2008, 08h59
  4. Réponses: 3
    Dernier message: 21/05/2007, 13h42
  5. Réponses: 3
    Dernier message: 30/06/2006, 15h10

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo