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 :

Changement d'orientation de la page pour les tableaux


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Membre averti Avatar de hisy
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    377
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2004
    Messages : 377
    Points : 353
    Points
    353
    Par défaut Changement d'orientation de la page pour les tableaux
    Bonjour,
    Je ne trouve pas non plus de solution concluante à ce besoin d'alterner le orientations des documents avec FOP.
    J'ai un XML fournit qui contient des tableaux que je souhaite afficher en paysage (et le rester en portrait).
    J'ai donc créer un simple master page mais quand je veux créer une nouvelle page-sequence pour mes tableaux, il me dit que page-sequence n'est pas un valid child de block.
    Je cherche une solution générique.
    Merci pour toute aide

    Déclaration:
    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
     
    <fo:simple-page-master master-name="landscape"
    					page-height="21cm" page-width="30cm" 
    					margin-left="{$inner-margin}" margin-right="{$outer-margin}"
    					margin-top="{$margin-top}" margin-bottom="{$margin-bottom}">
     
    				<fo:region-body 
    						margin-top="{$region-body-margin-top}" 
    						margin-bottom="{$region-body-margin-bottom}" 
    						margin-left="{$region-body-margin-left}"
    						margin-right="0"/>
     
    				<fo:region-before precedence="true" extent="{$region-before-extent}"/> <!-- precedence="true" -->
    				<fo:region-after precedence="true" extent="{$region-after-extent}"/>
    				<fo:region-start extent="{$region-start-extent}"/>
    				<fo:region-end extent="{$region-end-extent}"/>
    		</fo:simple-page-master>
    Appel (Pour un tableau précis pour l'instant)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <xsl:template match="//table[@id='ID00001']">
    	<fo:page-sequence master-reference="landscapeLayout">
                <fo:flow flow-name="xsl-region-body">
    	    <!--  apply templates --> 
            </fo:flow>
            </fo:page-sequence>
    Take it HiSy

  2. #2
    Membre émérite Avatar de tsuji
    Inscrit en
    Octobre 2011
    Messages
    1 558
    Détails du profil
    Informations forums :
    Inscription : Octobre 2011
    Messages : 1 558
    Points : 2 736
    Points
    2 736
    Par défaut
    Le rendement xsl-fo prend un valid document xsl-fo comme préalable.
    il me dit que page-sequence n'est pas un valid child de block.
    et il faut le prendre comme tel et on n'y peut rien et on ne fait exactement pas ça.

    Il est probablement plus pertinent de montre comment le template pour table[@id='ID00001'] est appelé. On peut rationnellement déduire une structure quelque peu comme ça.
    Code pseudo : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <fo:block ...   >
        <xsl:apply-templates select="//table[@id='ID00001']" />
    </fo:block>

    Pour avoir la fonctionalité recherchée, génériquement, on peut concevoir quelque chose de ce genre.
    Code pseudo : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <fo:block-container reference-orientation="90" ...>
        <fo:block ...   >
            <xsl:apply-templates select="//table[@id='ID00001']" />
        </fo:block>
    </fo:block-container>

    Et puis
    Code pseudo : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <xsl:template match="//table[@id='ID00001']">
              <!--  écrire les fo:table, fo:table-column, fo:table-body, fo:table-row, fo:table-cell etc... --> 
    </xsl:template>

    Selon la première sortie, on devrait avoir encore pas mal d'ajustement à faire pour des placements plus fins pour arriver exactement à ce qu'on soushaite d'en avoir, comme toujours...

  3. #3
    Membre averti Avatar de hisy
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    377
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2004
    Messages : 377
    Points : 353
    Points
    353
    Par défaut
    Merci beaucoup de te pencher sur mon problème.
    La solution de mettre le block-container à 90° s'approche bcp de ce qui est recherché et conviendrait pour l'impression. Merci.

    Par contre, à l'écran ben, c'est à 90°, logique ce qui ne va sûrement pas passer.

    De plus, pour l'instant, mon tableau déborder de la page et ne s'affiche pas sur plusieurs pages avec reprise des headers comme il le devrait le faire.
    Je vais creuser cet aspect aussi mais pouvoir changer la page-sequence pour la passer en paysage solutionnerait tout.

    Je débute sur projet et j'hérite de codes qui ont plusieurs années.

    Je n'ai la main que sur le xslt, le xml vient d'une source client.

    Le code parse le xml et crée des blocks, des list-item, et au milieu de tout cela, de façon générique, je cherche comment mettre ma page en paysage, puis reprendre mes identations, là où j'en étais. Je suis pas sûr que ce soit même possible.
    Take it HiSy

Discussions similaires

  1. Récupérer des données d'une page pour les récupérer sur une autre
    Par didpoy dans le forum Général JavaScript
    Réponses: 11
    Dernier message: 17/06/2014, 16h58
  2. [OL-2010] Changement intempestif de mise en page dans les messages
    Par storm4 dans le forum Outlook
    Réponses: 1
    Dernier message: 04/10/2011, 07h31
  3. Mise en page pour les smartphones
    Par rambc dans le forum Webdesign & Ergonomie
    Réponses: 4
    Dernier message: 11/03/2011, 10h00
  4. Réponses: 4
    Dernier message: 01/03/2009, 00h10

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