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

XML/XSL et SOAP Discussion :

[XML/XSL] Mise en page A4


Sujet :

XML/XSL et SOAP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2010
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 45
    Par défaut [XML/XSL] Mise en page A4
    Bonjours,

    j'ai donc un xml comme suit:
    Code XML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    <?xml version="1.0" encoding="utf-8"?>
    <Listes>
    	<Liste>
    		<Categorie>
    			<Produit>
    				<Note></Note>
    			</Produit>
    		</Categorie>
    	</Liste>
    </Listes>


    Lequel doit être imprimer en format A4, selon une certaine mise en page.
    - Sur 3 colonne, remplissant colonne après colonne, puis page suivante.
    - Sur 1 à n page, la taille étant dépendante du nombre de catégorie/produit/note

    Pour illustrer les saut de colonne à realisé, j'ai fait une maquette xml/css (FICTIVE*) bien charger et en trichant un peut (beaucoup) pour le second (ajout de balise page/colonne) pour arriver au rendu* voulu.
    /!\ *le rendu est ce que l'on voit en affichant le xml dans un navigateur et pas le code en lui même.(fait sur google chrome)

    fichier: "origine.xml"
    Code XML : 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
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    <?xml version="1.0" encoding="utf-8"?>
    <?xml-stylesheet type="text/css" href="origine.css"?>
    <Listes>
    	<Liste Lid="1">
    		1er liste
    		<Categorie xCid="1">
    			1er categegorie
    			<Produit Pid="1">
    				1er produit
    				<Note Nid="1">1er note</Note >
    				<Note Nid="2">2em note</Note >
    				<Note Nid="3">3em note</Note >
    				<Note Nid="4">4em note</Note >
    				<Note Nid="5">5em note</Note >
    			</Produit>
     
    			<Produit Pid="2">
    				2em produit
    				<Note Nid="2">2em note</Note >
    				<Note Nid="3">3em note</Note >
    				<Note Nid="4">4em note</Note >
    				<Note Nid="6">6em note</Note >
    				<Note Nid="8">8em note</Note >
    			</Produit>
     
    			<Produit Pid="4">
    				4em produit
    				<Note Nid="2">2em note</Note >
    				<Note Nid="3">3em note</Note >
    				<Note Nid="4">4em note</Note >
    				<Note Nid="5">5em note</Note >
    				<Note Nid="8">8em note</Note >
    			</Produit>
     
    			<Produit Pid="5">
    				5em produit
    				<Note Nid="2">2em note</Note >
    				<Note Nid="5">5em note</Note >
    				<Note Nid="6">6em note</Note >
    				<Note Nid="8">8em note</Note >
    				<Note Nid="9">9em note</Note >
    			</Produit>
     
    			<Produit Pid="6">
    				6em produit
    				<Note Nid="1">1er note</Note >
    				<Note Nid="3">3em note</Note >
    				<Note Nid="4">4em note</Note >
    				<Note Nid="5">5em note</Note >
    				<Note Nid="9">9em note</Note >
    			</Produit>
     
    			<Produit Pid="9">
    				9em produit
    				<Note Nid="1">1er note</Note >
    				<Note Nid="1">1em note</Note >
    				<Note Nid="1">1em note</Note >
    				<Note Nid="2">2em note</Note >
    				<Note Nid="6">6em note</Note >
    			</Produit>
     
    		</Categorie>
    		<Categorie Cid="2">
    			2em categegorie
    			<Produit Pid="1">
    				1er produit
    				<Note Nid="1">1er note</Note >
    				<Note Nid="2">2em note</Note >
    				<Note Nid="3">3em note</Note >
    				<Note Nid="4">4em note</Note >
    				<Note Nid="5">5em note</Note >
    			</Produit>
     
    			<Produit Pid="2">
    				2em produit
    				<Note Nid="2">2em note</Note >
    				<Note Nid="3">3em note</Note >
    				<Note Nid="4">4em note</Note >
    				<Note Nid="6">6em note</Note >
    				<Note Nid="8">8em note</Note >
    			</Produit>
     
    			<Produit Pid="4">
    				4em produit
    				<Note Nid="2">2em note</Note >
    				<Note Nid="3">3em note</Note >
    				<Note Nid="4">4em note</Note >
    				<Note Nid="5">5em note</Note >
    				<Note Nid="8">8em note</Note >
    			</Produit>
     
    			<Produit Pid="5">
    				5em produit
    				<Note Nid="2">2em note</Note >
    				<Note Nid="5">5em note</Note >
    				<Note Nid="6">6em note</Note >
    				<Note Nid="8">8em note</Note >
    				<Note Nid="9">9em note</Note >
    			</Produit>
     
    			<Produit Pid="6">
    				6em produit
    				<Note Nid="1">1er note</Note >
    				<Note Nid="3">3em note</Note >
    				<Note Nid="4">4em note</Note >
    				<Note Nid="5">5em note</Note >
    				<Note Nid="9">9em note</Note >
    			</Produit>
     
    			<Produit Pid="9">
    				9em produit
    				<Note Nid="1">1er note</Note >
    				<Note Nid="1">1em note</Note >
    				<Note Nid="1">1em note</Note >
    				<Note Nid="2">2em note</Note >
    				<Note Nid="6">6em note</Note >
    			</Produit>
     
    		</Categorie>
    	</Liste>
    </Listes>
    fichier: "origine.css"
    Code CSS : 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
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    <style type="text/css"> 
    Listes{} 
     
    Liste
    {
        display: block; 
        width: 660px;
    	height: 975px;
        font-size: 14pt ; 
        font-family: arial ; 
        font-weight: bold; 
        color: DimGray; 
     
    	border-color: gray;
    	border-width: 1px;
    	border-style: solid;
     
    	background-color: Wheat;
    }
     
    Categorie
    { 
        display: block; 
    	float: left;
        width: 32%;
        font-size: 11pt ; 
        font-family: arial ; 
     
    	padding: 2px;
    	padding-left: 5px;
    	margin: 2px;
    	margin-left: 5px;
     
    	background-color: BurlyWood;
    }
     
    Produit
    {
        display: block; 
        font-style: italic;
        font-family: arial ; 
        font-size: 10pt; 
     
    	padding: 2px;
    	padding-left: 10px;
    	margin: 2px;
    	margin-left: 10px;
     
    	background-color: Wheat;
    }
     
    Note
    {
        display: block; 
        font-style: italic;
        font-family: arial ; 
        font-size: 10pt; 
        color: black ;
        font-weight: italic; 
     
    	padding: 2px;
    	padding-left: 10px;
    	margin: 2px;
    	margin-left: 10px;
     
    	background-color: Cornsilk;
    }
    </style>

    là, soit tout le bloc categorie glisse a gauche(float) peut importe la taille soit il reste en dessous(block)..... bref pas bien....

    je souhaite arrivé a quelque chose comme ca* (la je triche en ajoutant des balise et en coupant la categorie dans mon xml)
    /!\ *toujours ce que l'on voit en affichant le xml dans un navigateur et pas le code en lui même.(fait sur google chrome)

    fichier: "sortie.xml"
    Code XML : 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
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
     
    <?xml version="1.0" encoding="utf-8"?>
    <?xml-stylesheet type="text/css" href="sortie.css"?>
    <Listes>
    	<Liste Lid="1">
    		1er liste
     
    		<page id="1">
    			<coln>
     
    				<Categorie Cid="1">
    					1er categegorie
     
    					<Produit Pid="1">
    						1er produit
    						<Note Nid="1">1er note</Note>
    						<Note Nid="2">2em note</Note>
    						<Note Nid="3">3em note</Note>
    						<Note Nid="4">4em note</Note>
    						<Note Nid="5">5em note</Note>
    					</Produit>
     
    					<Produit Pid="2">
    						2em produit
    						<Note Nid="2">2em note</Note>
    						<Note Nid="3">3em note</Note>
    						<Note Nid="4">4em note</Note>
    						<Note Nid="6">6em note</Note>
    						<Note Nid="8">8em note</Note>
    					</Produit>
     
    					<Produit Pid="4">
    						4em produit
    						<Note Nid="2">2em note</Note>
    						<Note Nid="3">3em note</Note>
    						<Note Nid="4">4em note</Note>
    						<Note Nid="5">5em note</Note>
    						<Note Nid="8">8em note</Note>
    					</Produit>
     
    					<Produit Pid="5">
    						5em produit
    						<Note Nid="2">2em note</Note>
    						<Note Nid="5">5em note</Note>
    						<Note Nid="6">6em note</Note>
    						<Note Nid="8">8em note</Note>
    						<Note Nid="9">9em note</Note>
    					</Produit>
     
    					<Produit Pid="6">
    						6em produit
    						<Note Nid="1">1er note</Note>
    						<Note Nid="3">3em note</Note>
    						<Note Nid="4">4em note</Note>
    						<Note Nid="5">5em note</Note>
    						<Note Nid="9">9em note</Note>
    					</Produit>
     
    					<Produit Pid="9">
    						9em produit
    						<Note Nid="1">1er note</Note>
    						<Note Nid="1">1em note</Note>
    						<Note Nid="1">1em note</Note>
    						<Note Nid="2">2em note</Note>
    						<Note Nid="6">6em note</Note>
    					</Produit>
     
    				</Categorie>
    				<Categorie Cid="2">
    					2em categegorie
     
    					<Produit Pid="1">
    						1er produit
    						<Note Nid="1">1er note</Note>
    						<Note Nid="2">2em note</Note>
    					</Produit>
     
    				</Categorie>
     
    			</coln>
    			<coln>
     
    				<Categorie Cid="2">
    					2em categegorie
     
    					<Produit Pid="1">
    						1er produit
    						<Note Nid="3">3em note</Note>
    						<Note Nid="4">4em note</Note>
    						<Note Nid="5">5em note</Note>
    					</Produit>
     
    					<Produit Pid="2">
    						2em produit
    						<Note Nid="2">2em note</Note>
    						<Note Nid="3">3em note</Note>
    						<Note Nid="4">4em note</Note>
    						<Note Nid="6">6em note</Note>
    						<Note Nid="8">8em note</Note>
    					</Produit>
     
    					<Produit Pid="4">
    						4em produit
    						<Note Nid="2">2em note</Note>
    						<Note Nid="3">3em note</Note>
    						<Note Nid="4">4em note</Note>
    						<Note Nid="5">5em note</Note>
    						<Note Nid="8">8em note</Note>
    					</Produit>
     
    					<Produit Pid="5">
    						5em produit
    						<Note Nid="2">2em note</Note>
    						<Note Nid="5">5em note</Note>
    						<Note Nid="6">6em note</Note>
    						<Note Nid="8">8em note</Note>
    						<Note Nid="9">9em note</Note>
    					</Produit>
     
    					<Produit Pid="6">
    						6em produit
    						<Note Nid="1">1er note</Note>
    						<Note Nid="3">3em note</Note>
    						<Note Nid="4">4em note</Note>
    						<Note Nid="5">5em note</Note>
    						<Note Nid="9">9em note</Note>
    					</Produit>
     
    					<Produit Pid="9">
    						9em produit
    						<Note Nid="1">1er note</Note>
    						<Note Nid="1">1em note</Note>
    						<Note Nid="1">1em note</Note>
    						<Note Nid="2">2em note</Note>
    						<Note Nid="6">6em note</Note>
    					</Produit>
     
    				</Categorie>
     
    			</coln>
    			<coln>
    			</coln>
    		</page>
    	</Liste>
    </Listes>
    fichier: "sortie.css"
    Code CSS : 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
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    <style type="text/css"> 
    Listes{} 
     
    Liste
    {
        display: block; 
        width: 660px;
    	height: 975px;
        font-size: 14pt ; 
        font-family: arial; 
        font-weight: bold; 
        color: DimGray;
     
    	border-color: gray;
    	border-width: 1px;
    	border-style: solid;
     
    	background-color: Wheat;
    }
     
    page
    {
        display: block; 
        width: 650px;
    	height: 940px;
     
    	padding: 1px;
    	margin: 1px;
     
    	background-color: Cornsilk;
    }
     
    coln
    {
        display: block; 
    	float: left;
        width: 32%;
    	height: 100%;
        font-size: 11pt; 
        font-family: arial; 
     
    	padding: 2px;
    	margin: 2px;
     
    	background-color: gray;
    }
     
    Categorie 
    { 
        display: block; 
        font-size: 11pt; 
        font-family: arial; 
     
    	padding: 2px;
    	padding-left: 5px;
    	margin: 2px;
    	margin-left: 5px;
     
    	background-color: BurlyWood;
    }
     
    Produit
    {
        display: block; 
        font-style: italic;
        font-family: arial; 
        font-size: 10pt;
     
    	padding: 2px;
    	padding-left: 10px;
    	margin: 2px;
    	margin-left: 10px;
     
    	background-color: Wheat;
    }
     
    Note
    {
        display: block; 
        font-style: italic;
        font-family: arial; 
        font-size: 10pt; 
        color: black; 
        font-weight: italic;
     
    	padding: 2px;
    	padding-left: 10px;
    	margin: 2px;
    	margin-left: 10px;
     
    	background-color: Cornsilk;
    }
    </style>
    La on voit bien la reprise de [catégorie/produit] après le saut de colonne...

    Vue le travail à réalisé (et n'ayant jamais touché xsl)
    -gestion colonne
    -gestion page A4

    sachant que cela ce fera via une application en C#

    quel est la solution la plus simple a mettre en oeuvre et quel sont les prérequis pour ce faire.

    PS: pour xsl, merci de laisser des liens car je trouve que de la doc pour html...
    mais c'est le désert pour les formats imprimables A4

  2. #2
    Membre Expert
    Avatar de Loceka
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    2 276
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 2 276
    Par défaut
    Alors déjà à ta place je ferait un affichage par tableau pour le HTML (je sais c'est mal, bouh... mais pour un affichage sur n colonnes c'est ce qui reste le plus pratique, le reste c'est terriblement pénible).

    Après pour remplir les colonnes d'abord c'est pas ce qu'il y'a de plus simple.

    J'ai pas testé mais tu pourrais récupérer les éléments en fonction de leur "position", sachant que tu veux tant d'éléments par page (donc mettont n lignes) tu peux facilement déterminer en fonction de sa position si un élément doit appartenir à telle ou telle colonne.

    Voilà en algo XSL comment je verrais la chose :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <xsl:template>
      <xsl:variable name="pos" select="position()"/>
      <!-- On ne traite que les éléments de la première colonne -->
      <xsl:if test="$pos <= n">
        <!-- On remplit aussi les colonnes 2 et 3 -->
        <xsl:variable name="pos_2" select="$pos + n"/>
        <xsl:variable name="pos_3" select="$pos + 2*n"/>
        <tr>
          <td><xsl:value-of select="."/></td>
          <td><xsl:value-of select="../*[$pos_2]"/></td>
          <td><xsl:value-of select="../*[$pos_3]"/></td>
        </tr>
      </xsl:if>
    </xsl:template>
    Bon comme j'ai dit j'ai pas testé. C'est juste un algo pour te montrer comment je vois les choses, y'a donc de fortes chances que ça marche pas en le copie/collant. D'ailleurs je n'ai pas traité le nombre de pages mais c'est juste un if à rajouter.

    Après pour que ça rentre sur une page A4 c'est une autre paire de manche, là je peux pas t'aider.

    Sinon voilà le site que j'utilise pour le XSL : http://www.w3schools.com/xsl/default.asp mais il n'est pas top. En effet ils ne font pas la distinction entre ce qui est du XSLT 1 et du XSLT 2 (or certains parseurs n'interprètent que le 1) du coup c'est relativement lourd.
    Qui plus est leurs descriptions sont plutôt succintes.

    Si tu trouves mieux fais tourner. ^_^

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Février 2010
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 45
    Par défaut
    Merci,

    mais je doit obtenir un format de sortie en A4, je voulait savoir avec quoi faire cela car découper du pseudo-A4 dans une page html ...heu, non, trop laid!

    Donc je suis partie sur xsl-fo qui semble le plus adapté

    Ce xml/css n'est qu'une maquette,c'est juste pour montrer la présentation à obtenir.(avec css que je connait) google chrome

    origine.xml c'est le xml original utilisé, que l'app fait a partir d'une requete sqlite.
    origine.css ce n'est que pour la mise en forme et montrer le probleme de découpage (normalement résolu avec l'usage de xsl-fo)
    sortie.xml(et css) montre le résultat à obtenir (découpage et reprise de catégorie/produit en fin de colonne ou de page)

    Pour faire simple
    un form c# avec 1 bouton 'imprimer', au click, le xml (origine.xml) est imprimer selon la mise en forme voulu (3 colonne, npage...)

    Après de longue recherche, je pense que XSL-FO semble adapter.
    J'ai trouvé des explications plus ou moins clair pour faire tout un tas de chose:
    - schéma de validation
    - la master-page format A4
    - la feuille de style xsl

    mais je ne trouve pas comment assembler tout ça pour obtenir un résultat imprimable...il y en a que pour transform html...
    XML, XSL, XSLT, XSL-FO, qui va dans quoi et comment

  4. #4
    Membre Expert
    Avatar de Loceka
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    2 276
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 2 276
    Par défaut
    Je ne connais pas XSL-FO mais je crois que ça permet de générer des PDF. A partir de là il est facile d'imprimer le document.

  5. #5
    Membre expérimenté
    Profil pro
    Inscrit en
    Février 2005
    Messages
    351
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2005
    Messages : 351
    Par défaut
    Salut loceka,

    Pour imprimer ton résultat, je pense que l'option xsl-fo est certainemetn une des meilelures! Bon pour cela, tu dois transformer ton continu xml en fo en créant un fichier xslt que tu pourras employer avec la classe "xslcompiletransform" de c# et ensuite soit utilisant la classe apachefop.net.dll ou FOP pour générer un fichier PDF.

    As-tu déjà regarder dans ce sens?

    Cédric

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Février 2010
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 45
    Par défaut
    Je suis partie dans ce sens et pour le moment je prépare le modele xsl (ou fo, ou xsl-fo, ou xslt tu choisis )...
    sur un xml un peu simplifier pour les essais (un niveau de moin, la value passe dans @name).

    Je n'ai normalement pas besoin de modifier le xml avec xsl puisque je peut produire directement celui dont j'ai besoin (id/nom de chaque noeud imbriquant liste>catergorie>produit>note).
    Comme on le voie sur "sortie.xml/css" du 1er post, cela produit le résultat voulu avec un simple css...
    Le résultat a obtenir est donc:
    • un block "liste" contenant "liste/@name". (largeur de la page)
    • une suite de block "categorie" contenant: (1/3 de la page)
      • un block "name" contenant "categorie/@name".

      • et un block "produits" contenant:
        • une suite de block "produit" contenant:
          • un block "name" contenant "produit/@name". /* fin "xml de test" */

          • et un block "notes" contenant:
            • une suite de block "note" contenant "note/@name

    Ensuite vient la gestion du comportement en fin de colonne/page notamment la coupure/reprise à partir de "categorie" en fin/début de colonne/page...
    ...mais il faut que je bouquine un peut avant (j'ai commander un book, mais pour le moment je tatonne avec le peut de doc trouvé sur le sujet)
    .
    Je laisse le code de test, pour les habituées de fo qui pourait voir des erreurs (voir un grand n'importe quoi, mais c'est en cour de...).
    Code XML : 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
     
    <?xml version="1.0" encoding="utf-8"?>
    <?xml-stylesheet type="text/xsl" href="xsldt.xsl"?>
    <listes>
    	<liste Lid="0" name="L-0">
    		<categorie Cid="0.0" name="C-0.0">
    			<produit Pid="0.0.0" name="P-0.0.0" />
    			<produit Pid="0.0.1" name="P-0.0.1" />
    		</categorie>
    		<categorie Cid="0.1" name="C-0.1">
    			<produit Pid="0.1.2" name="P-0.1.2" />
    			<produit Pid="0.1.3" name="P-0.1.3" />
    		</categorie>
    	</liste>
    	<liste Lid="1" name="L-1">
    		<categorie Cid="1.2" name="C-1.2">
    			<produit Pid="1.2.4" name="P-1.2.4" />
    			<produit Pid="1.2.5" name="P-1.2.5" />
    		</categorie>
    	</liste>
    </listes>
    Code XSL : 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
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
     
    <?xml version="1.0" encoding="utf-8"?>
     
    <xsl:stylesheet version="1.0" 
    	xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    	xmlns:fo="http://www.w3.org/1999/XSL/Format">
     
    	<xsl:output method="xml" indent="yes" />
     
    	<xsl:template match="listes">
    		<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format">
     
    			<fo:layout-master-set>
    				<fo:simple-page-master master-name="A4" 
    							page-width="297mm" 
    							page-height="210mm" 
    							margin-bottom="1cm"
    							margin-top="1cm"
    							margin-left="1cm"
    							margin-right="1cm">
    					<fo:region-body margin="3cm"/>
    					<fo:region-before extent="2cm"/>
    					<fo:region-after extent="1.5cm"/>
    					<fo:region-start extent="2cm"/>
    					<fo:region-end extent="2cm"/>
    				</fo:simple-page-master>
    			</fo:layout-master-set>
     
    			<fo:static-content flow-name="xsl-region-after">
    				<fo:block text-align="center">
    				p. <fo:page-number />
    				</fo:block>
    			</fo:static-content>
     
    			<fo:page-sequence master-reference="A4">
    				<fo:flow flow-name="xsl-region-body">
    					<xsl:apply-templates select="liste" />
    				</fo:flow>
    			</fo:page-sequence>
    		</fo:root>
    	</xsl:template>
     
    	<xsl:template match="liste">
    		<fo:block border-width="1px" border-style="solid">
    			<fo:inline font-weight="normal"
    					font-style="italic"
    					font-size="10pt" 
    					font-family="Arial">
    				<xsl:text>[(</xsl:text>
    				<xsl:value-of select="@Lid" />
    				<xsl:text>|</xsl:text>
    				<xsl:value-of select="@name" />
    				<xsl:text>)</xsl:text>
    			</fo:inline>
    		</fo:block>
    			<xsl:apply-templates select="categorie" />
    			<xsl:text>]; </xsl:text>
    	</xsl:template>
     
    	<xsl:template match="categorie">
    		<fo:block border-width="1px" border-style="solid">
    			<fo:block border-width="1px" border-style="solid">
    				<fo:inline font-weight="normal"
    						font-style="italic"
    						font-size="10pt" 
    						font-family="Times">
    					<xsl:text>[(</xsl:text>
    					<xsl:value-of select="@Cid" />
    					<xsl:text>|</xsl:text>
    					<xsl:value-of select="@name" />
    					<xsl:text>)</xsl:text>
    				</fo:inline>
    			</fo:block>
    			<fo:block border-width="1px" border-style="solid">
    				<xsl:apply-templates select="produit" />
    				<xsl:text>]</xsl:text>
    			</fo:block>
    		</fo:block>
    	</xsl:template>
     
    	<xsl:template match="produit">
    		<fo:block border-width="1px" border-style="solid">
    			<fo:inline font-weight="normal"
    					font-style="italic"
    					font-size="10pt" 
    					font-family="Times">
    				<xsl:text>{</xsl:text>
    				<xsl:value-of select="@Pid" />
    				<xsl:text>|</xsl:text>
    				<xsl:value-of select="@name" />
    				<xsl:text>}</xsl:text>
    			</fo:inline>
    		</fo:block>
    	</xsl:template>
     
    </xsl:stylesheet>
    *edit: les "xsl:text { [ ] ( ) " ne sont que pour suivre le bouclage du xml dans "I.E XML Editor" (ne marche pas sous chrome )
    Là j'en suis à chercher les outils (gratuit) pour visualisé et finalisé (et debuger :/) le documents.

    Le fichier xsl(fo?) sera tel quel dans un ss/rep. de l'application pour pouvoir le modifier sans re-compilé.
    Le xml sort dans ce même répertoire.

    Depuis c# je ne doit plus avoir qu'a produire le résultat de xml/xsl, (y a t'il des étapes supplémentaire ?) et imprimé.

    Une petite question bonus: peut on avoir 1 seul fichier (xml dans le xsl ou l'inverse) ?

Discussions similaires

  1. Mise en page XML avec XSL et XML externe
    Par snopims dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 03/08/2011, 15h57
  2. Pb de mise en page XML/XSL
    Par andlio dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 15/05/2007, 10h58
  3. [XSL] Afficher une page XML à partir d'un script PHP
    Par JiJiJaco dans le forum Bibliothèques et frameworks
    Réponses: 4
    Dernier message: 10/04/2005, 14h41
  4. [XML][XSL][Mozilla Firefox] Integraton dans une page JSP
    Par BANATACH dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 05/08/2004, 14h46
  5. mise en page (Header and Footer) en XML-XSL.
    Par christine dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 01/03/2004, 16h31

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