Bonjour,
Je souhaiterais pouvoir insérer dans divers courriers l'adresse d'un destinataire et celles des destinataires en copie .
(à compléter, nouvelle analyse en cours, la demande a été modifiée)
Bonjour,
Je souhaiterais pouvoir insérer dans divers courriers l'adresse d'un destinataire et celles des destinataires en copie .
(à compléter, nouvelle analyse en cours, la demande a été modifiée)
On peut faire comme ça : on ne s'écrit qu'un seul template nommé Docteur et élimine les templates existant dits Docteur, copieDocteur1 et copieDocteur2.
Et puis, on réécrit le template qui matche ADRESSES_MT.
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 <xsl:template name="Docteur"> <xsl:variable name="line1" select="line1" /> <xsl:variable name="line3" select="line3" /> <xsl:variable name="line4" select="line4" /> <xsl:variable name="line5" select="line5" /> <fo:block font-family="verdana" font-size="11pt" text-align="left" margin-left="60%"> Docteur <xsl:value-of select="$line1" /> </fo:block> <fo:block font-family="verdana" font-size="11pt" text-align="left" margin-left="60%"> <xsl:value-of select="$line3"/> </fo:block> <fo:block font-family="verdana" font-size="11pt" text-align="left" margin-left="60%"> <xsl:value-of select="$line5"/> - <xsl:value-of select="$line4"/> </fo:block> </xsl:template>
On est contraint de répéter à des endroits à cause de la structure et de la nomination des éléments peu convenables du xml. Avec ça, on peut y avoir n'importe quel nombre de copies - c'est aussi un avantage de la réécriture.
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 <xsl:template match="ADRESSES_MT"> <fo:root> <xsl:call-template name="page-master"/> <xsl:for-each select="thedestinataire|copie/entry"> <fo:page-sequence master-reference="document"> <fo:flow flow-name="xsl-region-body"> <fo:block font-family="verdana" font-size="11pt" text-align="right"> <xsl:call-template name="Docteur"> </fo:block> </fo:flow> </fo:page-sequence> </xsl:for-each> </fo:root> </xsl:template>
Voilà l'idée !
Edition : voir mon followup post ci-dessous. Puisque les variables linex sont tellement simplifiées, on peut les épargner sans compliquer les écritures des fo:block. Je les garde pour laisser un espace de généralisation.
Merci beaucoup pour votre réponse tsuji, je ne m'attendais pas à une réponse aussi vite! super sympa. Je teste et vous dis si j'ai bien compris et su mettre en œuvre.
J'ai la chance de re-voir ce que j'ai posté et voilà qu'il y a un typo, donc, manquant la balance quot/apos, pour des variables line1 etc. Et plus important, c'est que j'ai trompé le contexte quand le xslt appelle le template nommé Docteur. Corriger ça donne le rendement beaucoup plus simple. Je vais corriger ces issues directement dans le post, si vous voulez. Je suis désolé pour ces issues dans la réponse originale.
Merci beaucoup pour votre aide, ça fonctionne très bien.
Malheureusement la demande a évolué.., je ne sais pas si ce sera faisable...
Bien à vous,
Partager