1 pièce(s) jointe(s)
[XSL-FO]/[XML] Comment écrire le XSL-FO pour les xs:complexType/xs:sequence, et des liens à partir d'images ?
Bonjour,
Je suis débutant en XSL-FO, et je dois écrire du XSL-FO pour imprimer un XML en changeant la présentation. J'utilise FOP pour permettre l'impression en PDF, et j'ai vu qu'il fallait fournir un XSL-FO à FOP pour transformer le XML de base et pour faire l'affichage graphique.
Mon XML est le suivant :
Code:
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
| <?xml version="1.0" encoding="UTF-8"?>
<DOCUMENT>
<DATE>17-08-09</DATE>
<USER_NAME>MOI</USER_NAME>
<APP_ID>64</APP_ID>
<APP_NAME>TEST CDE</APP_NAME>
<TITLE>TITRE</TITLE>
<REGION>
<ROWSET>
<ROW>
<IDDOSSIER>0404</IDDOSSIER>
<IDCLIENT>7857</IDCLIENT>
<DATECDE>24/02/09</DATECDE>
<QTECDE>1</QTECDE>
<Nomenclature>670281CJ</Nomenclature>
<DESIGNATION>Test 1</DESIGNATION>
<NOMMARQUE>ORANGE</NOMMARQUE>
<REFFOUR>SONY</REFFOUR>
</ROW>
<ROW>
<IDDOSSIER>0300</IDDOSSIER>
<IDCLIENT>8988</IDCLIENT>
<DATECDE>07/02/09</DATECDE>
<QTECDE>2</QTECDE>
<Nomenclature>702122B1</Nomenclature>
<DESIGNATION>Test 2</DESIGNATION>
<NOMMARQUE>SFR</NOMMARQUE>
<REFFOUR>SAMSUNG</REFFOUR>
</ROW>
<ROW>
...
</ROW>
</ROWSET>
</REGION>
</DOCUMENT> |
J'ai mis le XSD en pièce jointe.
Mon problème est que je n'arrive pas à écrire le fichier XSL-FO qui me permettrait ne serait-ce que d'afficher le contenu de mon XML !!
J'arrive à afficher la date, app_name, app_id et autres éléments de premier niveau, mais je n'arrive pas à aller plus loin ...
Voici la partie où je parcours l'arbre :
Code:
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
| <fo:flow flow-name="region-body">
<fo:block>
<xsl:apply-templates/>
Test
<xsl:value-of select="DOCUMENT/APP_ID"/>
<fo:table border="1">
<xsl:for-each select ="DOCUMENT/REGION/ROWSET/ROW">
<xsl:value-of select="DOCUMENT/REGION/ROWSET/ROW/IDDOSSIER"/>
</xsl:for-each>
</fo:table>
</fo:block>
</fo:flow>
avec aussi :
<xsl:template match="REGION">
<fo:table border="1">
<fo:block>
<xsl:apply-templates/>
</fo:block>
</fo:table>
</xsl:template>
<xsl:template match="ROWSET">
<fo:table border="1">
<fo:block>
<xsl:apply-templates/>
</fo:block>
</fo:table>
</xsl:template>
<xsl:template match="ROW">
<fo:block>
<xsl:apply-templates/>
</fo:block>
</xsl:template>
<xsl:template match="IDDOSSIER">
<xsl:value-of select="."/>
</xsl:template>
<xsl:template match="IDCLIENT">
<xsl:value-of select="."/>
</xsl:template>
<xsl:template match="DATECDE">
<xsl:value-of select="."/>
</xsl:template>
<xsl:template match="QTECDE">
<xsl:value-of select="."/>
</xsl:template>
<xsl:template match="Nomenclature">
<xsl:value-of select="."/>
</xsl:template>
<xsl:template match="DESIGNATION">
<xsl:value-of select="."/>
</xsl:template>
<xsl:template match="NOMMARQUE">
<xsl:value-of select="."/>
</xsl:template>
<xsl:template match="REFFOUR">
<xsl:value-of select="."/>
</xsl:template> |
Mais je ne récupère que :
16-FEB-09 APEX_PUBLIC_USER 195 Test-PDF 16 CDENONVALIDEE bis
Test 195
Mon objectif est d'avoir un rendu final de ce genre :
http://img41.imageshack.us/img41/8663/examplehnw.jpg
Est-ce que quelqu'un saurait comment faire le XSL-FO de manière à savoir afficher les ROWS (dans un premier temps), et si possible comment trier par les 2 premières colonnes (je crois avoir trouvé fo:for-each-group select="ROW", mais je ne suis pas sûr) ??
Rem. : Il semblerait que le XML et le XSD ne soient pas concordants ??!!
Est-ce que quelqu'un pourrait me confirmer (ou infirmer) cette remarque ??