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]/[XML] Comment écrire le XSL-FO pour lire les xs:complexType et xs:sequence ?


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Août 2009
    Messages
    3
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Août 2009
    Messages : 3
    Points : 3
    Points
    3
    Par défaut [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 : 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
    <?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 : 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
    <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 :



    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 ??
    Fichiers attachés Fichiers attachés

  2. #2
    Candidat au Club
    Profil pro
    Inscrit en
    Août 2009
    Messages
    3
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Août 2009
    Messages : 3
    Points : 3
    Points
    3
    Par défaut Ajout
    Par ailleurs, est-ce que quelqu'un saurait me dire comment faire pour créer un lien internet à partir d'une image.
    J'ai trouvé comment faire pour rendre du texte cliquable pour aller à une URL donnée, mais je ne vois pas comment faire de même avec une image ...


    Merci d'avance,
    Pierre

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Août 2009
    Messages
    3
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Août 2009
    Messages : 3
    Points : 3
    Points
    3
    Par défaut Trouvé
    Bon, j'ai trouvé, finalement, et c'était tout con ...

    Dans mon fo:block, j'ai mis :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
                    <fo:basic-link>					
                     <xsl:attribute name="external-destination">http://lien?param=<xsl:value-of select="PARAM"/></xsl:attribute>
                      <fo:external-graphic src="url('/dev/Sources/images/pdf.gif')" width="5mm" height="5mm"/>
                    </fo:basic-link>

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

Discussions similaires

  1. [MySQL] Comment écrire un service web pour récupérer un champ d'une base de données
    Par mallsoul dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 04/10/2012, 18h23
  2. Réponses: 1
    Dernier message: 13/01/2011, 15h14
  3. Réponses: 5
    Dernier message: 07/06/2009, 13h46
  4. Réponses: 2
    Dernier message: 11/04/2009, 11h04
  5. Comment se connecter à un site pour lire le Cookie ?
    Par ddubois dans le forum Composants VCL
    Réponses: 1
    Dernier message: 28/03/2009, 16h37

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