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 :

[XSL-FO] table of content


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Membre du Club

    Inscrit en
    Février 2003
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Février 2003
    Messages : 26
    Points : 51
    Points
    51
    Par défaut [Résolu] [XSL-FO] table of content
    bonjour,

    voila j'ai un petit probleme avec ma table des matieres, elle marche bien mais si l'élément au quelle elle fait référence s'étant sur plusieur page, elle indique le numéro de la derniere page de cet élement.

    j'utilise FOP

    voici le code de la table :

    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
     
     
    <xsl:template match="phase" mode="toc">
    		<fo:block  space-before="2mm" text-align="start" text-align-last="justify">
    			<fo:inline font-weight="bold" >
    				<fo:basic-link internal-destination="{@id}">
    					<xsl:value-of select="phaseName"/>
    				</fo:basic-link>
    			</fo:inline>
    			<fo:inline>								
    				<fo:leader leader-pattern="dots" leader-pattern-width="5pt"/>
    				<fo:page-number-citation ref-id="{@id}"/>
    			</fo:inline>
    		</fo:block>
    		<xsl:apply-templates select="page" mode="toc"/>
    	</xsl:template>
    	<xsl:template match="page" mode="toc">
    		<fo:block text-indent="5mm" text-align="start" text-align-last="justify">
    			<fo:inline>
    				<fo:basic-link internal-destination="{@id}">
    					<xsl:value-of select="pageName"/>
    				</fo:basic-link>
    				<fo:leader leader-pattern="dots" leader-pattern-width="5pt"/>			
    				<fo:page-number-citation ref-id="{@id}"/>
    			</fo:inline>
    		</fo:block>		
    	</xsl:template>
    une idée pour corriger ce probleme ?

    voici un peut plus de code pour aider a la compréhension :

    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
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
     <!-- ========================= -->
    	<!-- child element: phase      -->
    	<!-- ========================= -->
    	<xsl:template match="phase">
    		<fo:block id="{@id}">
    			<fo:table table-layout="fixed" width="100%">
            		<fo:table-column column-width="proportional-column-width(1)"/>
    			        <fo:table-body>
    			          <fo:table-row height="210mm">
                			<fo:table-cell display-align="center">
    			              <fo:block text-align="center" border-style="ridge" border-color="black" 
    			              			border-width="1mm" padding="10mm"
    						            break-before="page"
    						            margin-left = "18mm" margin-right="18mm"
    						            font-size="20pt"
    						            font-weight="bold">
                			    <xsl:value-of select="phaseName" />
                 			 </fo:block>
               			 </fo:table-cell>
    		          </fo:table-row>
            		</fo:table-body>
    		      </fo:table>									
    		</fo:block>
    		<xsl:apply-templates select="page" />
    	</xsl:template>
     
    	<!-- ========================= -->
    	<!-- child element: page      -->
    	<!-- ========================= -->
    	<xsl:template match="page" >
    		<fo:block id="{@id}" >	
    			<fo:table table-layout="fixed">
    				<fo:table-column column-width="20cm" />
    				<fo:table-body>
    					<fo:table-row keep-together="always">
    						<fo:table-cell>					
    							<fo:block >
    								<fo:block space-before="5mm" font-family="sans-serif"
    											font-weight="bold" border-style="solid" border-width="0.1mm"
    											background-color="rgb(156,220,185)" margin-right="20mm">
    									<xsl:value-of select="pageName" />									
    								</fo:block>			
    									<xsl:apply-templates select="cadre" />		
    							</fo:block>	
    					 	</fo:table-cell>
    					</fo:table-row>
    				</fo:table-body>
    			</fo:table>
    		</fo:block>	
    	</xsl:template>
    je me doute bien que le probleme est lié au fait que mon template page est un tableau d'une ligne avec le keep-together="always", mais j'en ai besoin pour obtenir une mise en page correcte.

  2. #2
    Membre expérimenté
    Avatar de virgul
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    1 625
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 625
    Points : 1 666
    Points
    1 666
    Par défaut
    Salut,

    ca faudrait le poster sur le forum des bêtes de XSL-FO! Car il s'agit vraiment d'un problème spécifique au table de matière. Je n'en aie jamais fait perso.

    Si tu connais l'anglais et que tu sais traduire ton problème:

    http://groups.yahoo.com/group/XSL-FO/

    Sinon je veux bien te le traduire mais si tu peux le faire toi...

    Thierry

  3. #3
    Membre du Club

    Inscrit en
    Février 2003
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Février 2003
    Messages : 26
    Points : 51
    Points
    51
    Par défaut
    et bien en fait non ce n'est pas un probleme spécifique aux tables des matieres, ce que j'ai cru au début, mais en fait le solution est plus simple que cela

    je la poste comme cela si quelqu'un tombe sur le meme probleme.

    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
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
     
    <!-- ========================= -->
    	<!-- child element: phase      -->
    	<!-- ========================= -->
    	<xsl:template match="phase">
    		<fo:block>
    			<fo:table table-layout="fixed" width="100%">
            		<fo:table-column column-width="proportional-column-width(1)"/>
    			        <fo:table-body>
    			          <fo:table-row height="210mm">
                			<fo:table-cell display-align="center">   	        				
       	        				<fo:block text-align="center" border-style="ridge" border-color="black" 
    			              			border-width="1mm" padding="10mm"
    						            break-before="page"
    						            margin-left = "18mm" margin-right="18mm"
    						            font-size="20pt"
    						            font-weight="bold">
    						        <fo:block id="{@id}" />
                			    	<xsl:value-of select="phaseName" />
                 			 	</fo:block>
    	           			</fo:table-cell>
    		          	</fo:table-row>
            		</fo:table-body>
    		      </fo:table>									
    		</fo:block>
    		<xsl:apply-templates select="page" />
    	</xsl:template>
     
    	<!-- ========================= -->
    	<!-- child element: page      -->
    	<!-- ========================= -->
    	<xsl:template match="page" >		
    		<fo:block>	
    			<fo:table table-layout="fixed">
    				<fo:table-column column-width="20cm" />
    				<fo:table-body>
     					<fo:table-row keep-together="always">
    						<fo:table-cell>					
    							<fo:block >								
    								<fo:block space-before="5mm" font-family="sans-serif"
    											font-weight="bold" border-style="solid" border-width="0.1mm"
    											background-color="rgb(156,220,185)" margin-right="20mm">									
    									<xsl:value-of select="pageName" />
    									<fo:block id="{@id}" />																	
    								</fo:block>			
    									<xsl:apply-templates select="cadre" />		
    							</fo:block>	
    					 	</fo:table-cell>
    					</fo:table-row>
    				</fo:table-body>
    			</fo:table>
    		</fo:block>	
    	</xsl:template>
    il faut accorder une attention tout particulière au endroit on place la balise suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     <fo:block id="{@id}" />
    car sinon on peut avoir des effet surprenant mieu vaut la mettre juste apres le texte qu'elle est supposé référencer.

    pour le group sur yahoo, je connais mais j'ai pas encore recu mon mail qui est supposé me donner le droit de poster dessus, je viens de commencer le xsl-fo depuis lundi dernier et au train ou j'avance ben j'aurais fini cette partie ci du projet avant d'avoir le droit de poster chez eux

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XSLT] [Fatal Error] sommaire_T6.xsl:15:2: The content of elements must consist of well-form
    Par lasdou15 dans le forum Format d'échange (XML, JSON...)
    Réponses: 3
    Dernier message: 13/03/2008, 09h02
  2. Table des matières = "table of contents"
    Par ali.ensi dans le forum Mise en forme
    Réponses: 3
    Dernier message: 19/07/2007, 12h16
  3. [XSL~FO] Table des matières
    Par nicolas66 dans le forum XSL/XSLT/XPATH
    Réponses: 6
    Dernier message: 11/05/2007, 17h07
  4. Xsl Fo : Table des matieres
    Par serwol dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 03/06/2005, 09h46
  5. [XSL-FO] Table avec cellule vide
    Par JustAGphy dans le forum XSL/XSLT/XPATH
    Réponses: 6
    Dernier message: 12/05/2004, 14h11

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