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 :

Concevoir une feuille de style qui comprend plusieurs d'autres feuilles XSL-FO


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Débutant  
    Inscrit en
    Mars 2006
    Messages
    300
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 300
    Points : 60
    Points
    60
    Par défaut Concevoir une feuille de style qui comprend plusieurs d'autres feuilles XSL-FO
    bonjour...
    j'ai un fichier XML, je voudrais faire un model Feuille de style qui comprend plusieurs feuilles de stle XSL-FO.
    exemple :
    feuille1 = liste des employes de l'entreprise
    feuille 2 = liste des partenaires
    feuille 3 = liste des clients

    travail demandé
    concevoir une feuille de style qui assemble les 3 feuilles ?
    sachant que toutes ces feuilles : feuille1, feuille2, feuille3 sont deja fais, il me manques juste l'assemblage !
    y à t'il une piste ?
    merci

  2. #2
    Membre éprouvé
    Profil pro
    Responsable Dev
    Inscrit en
    Décembre 2003
    Messages
    788
    Détails du profil
    Informations personnelles :
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Responsable Dev

    Informations forums :
    Inscription : Décembre 2003
    Messages : 788
    Points : 1 063
    Points
    1 063
    Par défaut
    plusieurs possibilité s'offre à toi (au moins 2):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    <?xml version="1.0" encoding="ISO-8859-1"?>
    <!DOCTYPE students[
    <!ENTITY source1 SYSTEM "student1.xml">
    <!ENTITY source2 SYSTEM "student2.xml">
    <!ENTITY source3 SYSTEM "student3.xml">
    ]>
     
    <students>
    &source1;
    &source3;
    &source2;
    </students>
    ou bien

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    <xsl:variable name="example" select="document(@href)"> ...
    <xsl:apply-template select="document(@text)" />

    voir celle là mais non testée (trouvée sur zvon)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    <xsl:stylesheet xmlns:xsl = "http://www.w3.org/1999/XSL/Transform" version = "1.0" >
              <xsl:import href = "xslt33.xslt" />
              <xsl:output method = "text" />
     
              <xsl:template match = "/" >
                   <xsl:apply-templates select = "//BBB" />
              </xsl:template>
         </xsl:stylesheet>

  3. #3
    Débutant  
    Inscrit en
    Mars 2006
    Messages
    300
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 300
    Points : 60
    Points
    60
    Par défaut
    Bonjour...
    je vous remercie pour votre reponse :
    mais moi j'ai une seule source de données : data.xsml et j'ai trois feuilles de style differente, ce que je voudrais faire c'est de concevoir une seule feuille de style qui assemble les trois autres.
    merci bien

  4. #4
    Membre expérimenté
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    1 466
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 466
    Points : 1 610
    Points
    1 610
    Par défaut
    Et bien c'est la dernière possibilité, faut tester.

  5. #5
    Débutant  
    Inscrit en
    Mars 2006
    Messages
    300
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 300
    Points : 60
    Points
    60
    Par défaut
    Citation Envoyé par Morbo Voir le message
    Et bien c'est la dernière possibilité, faut tester.
    j'ai essayé de travailler avec include et import mais j'ai un probleme :
    <?xml version="1.0"?>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:include href = "D:\liste1.xsl" />
    <xsl:include href = "D:\liste2.xsl" />
    </xsl:stylesheet>
    le resultat m'affiche tjr le resultat de liste2 et ne tiens pas compte du premiere feuille de style liste1.xsl ?
    meme chose si j'utilise import.
    merci

  6. #6
    Membre expérimenté
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    1 466
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 466
    Points : 1 610
    Points
    1 610
    Par défaut
    Ben ça depend de ce qu'il y a dans les xsl..., il faut pas qu'il y a de template qui interfere avec celui de l'autre feuille.
    Tu ne peux pas inclure 2 xsl qui marchaient indépendamments et s'attendre à ce que ça marche en les incluant.

    Regarde cet exemple :
    http://msdn.microsoft.com/fr-fr/libr...25(VS.80).aspx
    Le xsl mère contient :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <xsl:template match="/">
    et surtout pas ceux qui sont inclut.
    Utilise au max les
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <xsl:apply-templates select="*"/>
    pour que les templates inclus se déclanchent.

  7. #7
    Débutant  
    Inscrit en
    Mars 2006
    Messages
    300
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 300
    Points : 60
    Points
    60
    Par défaut
    voici mes deux feuilles de style :
    listeVariable.xsl :
    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
    <?xml version="1.0"?>
    <xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:s="http://www.stylusstudio.com/xquery">
        <xsl:template name="variable" match="/">
            <fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format">
                <fo:layout-master-set>
                     <fo:simple-page-master master-name="default-page" page-height="11in" page-width="8.5in" margin-left="0.1in" margin-right="0.013in" margin-top="0.01in" margin-bottom="0.1in">
                        <fo:region-body/>
                    </fo:simple-page-master>
                </fo:layout-master-set>
                <fo:page-sequence master-reference="default-page">
                    <fo:flow flow-name="xsl-region-body">
                        <fo:block>
                            <fo:block>
                                <fo:block>
                                    <fo:inline font-size="16pt" font-weight="bold">
                                        <xsl:text>Liste des variables utilisés :</xsl:text>
                                    </fo:inline>
                                </fo:block>
                                <fo:block>
                                    <xsl:text> </xsl:text>
                                </fo:block>
                                <fo:block>
    							<xsl:variable name="trtCode" select="/DsNvvNomvar/Trt/TRT_CODE"/>
                                    <xsl:for-each select="/data/symbole[NATURE=2]">
                                        <xsl:variable name="symbole" select="."/>
                                                        <xsl:value-of select="SYMBOLE_LIB"/>
                                    </xsl:for-each>
    								<fo:block>
                                    <xsl:text> </xsl:text>
                                </fo:block>
                                </fo:block>
                            </fo:block>
                        </fo:block>
                    </fo:flow>
                </fo:page-sequence>
            </fo:root>
        </xsl:template>
    </xsl:stylesheet>
    listeConstante.xsl:
    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
    <?xml version="1.0"?>
    <xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:s="http://www.stylusstudio.com/xquery">
        <xsl:template name="variable" match="/">
            <fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format">
                <fo:layout-master-set>
                     <fo:simple-page-master master-name="default-page" page-height="11in" page-width="8.5in" margin-left="0.1in" margin-right="0.013in" margin-top="0.01in" margin-bottom="0.1in">
                        <fo:region-body/>
                    </fo:simple-page-master>
                </fo:layout-master-set>
                <fo:page-sequence master-reference="default-page">
                    <fo:flow flow-name="xsl-region-body">
                        <fo:block>
                            <fo:block>
                                <fo:block>
                                    <fo:inline font-size="16pt" font-weight="bold">
                                        <xsl:text>Liste des constantes utilisées :</xsl:text>
                                    </fo:inline>
                                </fo:block>
                                <fo:block>
                                    <xsl:text> </xsl:text>
                                </fo:block>
                                <fo:block>
    							<xsl:variable name="trtCode" select="/DsNvvNomvar/Trt/TRT_CODE"/>
                                    <xsl:for-each select="/data/symbole[NATURE=3]">
                                        <xsl:variable name="symbole" select="."/>
                                                        <xsl:value-of select="SYMBOLE_LIB"/>
                                    </xsl:for-each>
    								<fo:block>
                                    <xsl:text> </xsl:text>
                                </fo:block>
                                </fo:block>
                            </fo:block>
                        </fo:block>
                    </fo:flow>
                </fo:page-sequence>
            </fo:root>
        </xsl:template>
    </xsl:stylesheet>
    je suis un peu perdu !
    merci bien

  8. #8
    Membre éprouvé Avatar de laurentibus
    Inscrit en
    Mars 2008
    Messages
    875
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Mars 2008
    Messages : 875
    Points : 908
    Points
    908
    Par défaut
    sinon tu mets tout dans la même feuille ....

  9. #9
    Débutant  
    Inscrit en
    Mars 2006
    Messages
    300
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 300
    Points : 60
    Points
    60
    Par défaut
    le but est de concevoir plusieurs feuilles de styles afin de les assembler dans une seule feuille de style qui rassemble le tout pour une but si on modifie une feuille ça vas se modifier dans la feuille d'assemblage !
    mais j'ai vue en utilisant include ou import puisque je travaille sur la meme table et le meme template ça ne vas pas marcher.
    alors y t'il un moyen de faire une feuille de style qui rassemble plusieurs feuilles de styles :
    exemple :
    fs1 : liste des client
    fs2 : liste des employes

    fs assemblage : liste des client + liste des employes


    merci bien

  10. #10
    Membre éprouvé Avatar de laurentibus
    Inscrit en
    Mars 2008
    Messages
    875
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Mars 2008
    Messages : 875
    Points : 908
    Points
    908
    Par défaut
    he ben oui y as moyen de les rassembler les feuilles de style ....
    tu mets tes blocks à la suite dans la mime feuille de style :
    d'abord les variables et ensuite les constantes ... ou l'inverse comme tu souhaites l'afficher .....

    ++

  11. #11
    Débutant  
    Inscrit en
    Mars 2006
    Messages
    300
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 300
    Points : 60
    Points
    60
    Par défaut
    comment ça !
    je vai copier les blocs des autres feuilles de syles ?
    je cherche un moyen dans la feuille de style d'appeler d'autres feuilles de styles ?

  12. #12
    Membre éprouvé Avatar de laurentibus
    Inscrit en
    Mars 2008
    Messages
    875
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Mars 2008
    Messages : 875
    Points : 908
    Points
    908
    Par défaut
    ok j 'avais compris justement que ca ne marcher pas de faire appel a plusieurs feuille de style depuis une feuille ......

    donc je te disais de mettre tout dans la même feuille ...

    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
    61
    62
     
     
    <?xml version="1.0"?>
    <xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:s="http://www.stylusstudio.com/xquery">
        <xsl:template name="variable" match="/">
            <fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format">
                <fo:layout-master-set>
                     <fo:simple-page-master master-name="default-page" page-height="11in" page-width="8.5in" margin-left="0.1in" margin-right="0.013in" margin-top="0.01in" margin-bottom="0.1in">
                        <fo:region-body/>
                    </fo:simple-page-master>
                </fo:layout-master-set>
                <fo:page-sequence master-reference="default-page">
                    <fo:flow flow-name="xsl-region-body">
                        <fo:block>
                            <fo:block>
                                <fo:block>
                                    <fo:inline font-size="16pt" font-weight="bold">
                                        <xsl:text>Liste des variables utilisés :</xsl:text>
                                    </fo:inline>
                                </fo:block>
                                <fo:block>
                                    <xsl:text> </xsl:text>
                                </fo:block>
                                <fo:block>
    							<xsl:variable name="trtCode" select="/DsNvvNomvar/Trt/TRT_CODE"/>
                                    <xsl:for-each select="/data/symbole[NATURE=2]">
                                        <xsl:variable name="symbole" select="."/>
                                                        <xsl:value-of select="SYMBOLE_LIB"/>
                                    </xsl:for-each>
    								<fo:block>
                                    <xsl:text> </xsl:text>
                                </fo:block>
                                </fo:block>
                            </fo:block>
                        </fo:block>
     <fo:block>
                            <fo:block>
                                <fo:block>
                                    <fo:inline font-size="16pt" font-weight="bold">
                                        <xsl:text>Liste des constantes utilisées :</xsl:text>
                                    </fo:inline>
                                </fo:block>
                                <fo:block>
                                    <xsl:text> </xsl:text>
                                </fo:block>
                                <fo:block>
    							<xsl:variable name="trtCode" select="/DsNvvNomvar/Trt/TRT_CODE"/>
                                    <xsl:for-each select="/data/symbole[NATURE=3]">
                                        <xsl:variable name="symbole" select="."/>
                                                        <xsl:value-of select="SYMBOLE_LIB"/>
                                    </xsl:for-each>
    								<fo:block>
                                    <xsl:text> </xsl:text>
                                </fo:block>
                                </fo:block>
                            </fo:block>
                        </fo:block>
                    </fo:flow>
                </fo:page-sequence>
            </fo:root>
        </xsl:template>
    </xsl:stylesheet>
    parce que si tu dois toujours les utilisé ensembles ..... ben ca reviens au même de créer une ou plusieurs feuilles de styles ...

  13. #13
    Membre éprouvé Avatar de laurentibus
    Inscrit en
    Mars 2008
    Messages
    875
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Mars 2008
    Messages : 875
    Points : 908
    Points
    908
    Par défaut
    par contre je pensais :

    si la methode des imports ne marche que pour importer 1 seule feuille de style et non plusieurs , cf pb que ca t importe que liste2 et non liste2 et liste1 ....

    ben tente de faire des imports recursifs ....
    feuilleA :
    import feuilleB

    feuilleB:
    import feuilleC .....

    ps :si plusieurs import ne marche pas peut etre y a t il un pb entre tes feuilles ....

  14. #14
    Débutant  
    Inscrit en
    Mars 2006
    Messages
    300
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 300
    Points : 60
    Points
    60
    Par défaut
    le probeme c'est que dans les deux feuilles de styles j'utilise le meme template :
    c'est pour ça y à toujours la feuille de style2 qui apparait car ça ecrase le template de fs1 : c'est ce que j'ai compris
    j'ai essayé de changer nom du template mais pareil ça marche pas :
    le match="/" c'est dans les deux feuilles de style et ça qui cause probleme !

  15. #15
    Membre expérimenté
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    1 466
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 466
    Points : 1 610
    Points
    1 610
    Par défaut
    Citation Envoyé par tarekos Voir le message
    le probeme c'est que dans les deux feuilles de styles
    le match="/" c'est dans les deux feuilles de style et ça qui cause probleme!
    Oui, il ne peut être que dans la feuille de style mère qui inclut les autres.
    Les feuilles de style filles doivent utiliser au maximum la notion de template.
    De type :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <xsl:template match="symbole"></xsl:template>

  16. #16
    Débutant  
    Inscrit en
    Mars 2006
    Messages
    300
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 300
    Points : 60
    Points
    60
    Par défaut
    j'ai essayé de changer le match de ùes feulles de style filles:
    mais la feuille de style fille quand j'ai essayé de l'executer ça m'affiche autre chose par raport au match="/"
    j'ai pas ompris pkoi !

  17. #17
    Membre éprouvé Avatar de laurentibus
    Inscrit en
    Mars 2008
    Messages
    875
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Mars 2008
    Messages : 875
    Points : 908
    Points
    908
    Par défaut
    aparement il faut virer les match et ne mettre que des templates ...
    Les feuilles de style filles doivent utiliser au maximum la notion de template.

  18. #18
    Débutant  
    Inscrit en
    Mars 2006
    Messages
    300
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 300
    Points : 60
    Points
    60
    Par défaut
    je trouve cette fois ci un probleme à les assembler :
    je voudrais afficher fs1 puis fs2 alors j'ai fais ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <?xml version="1.0"?>
    <xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
     
     
    <xsl:import href="d:\impressions\imprimerConstante.xsl"/>
    <xsl:import href="d:\impressions\imprimerVariable.xsl"/>
    	<xsl:template name="dd" match="/">
      		<xsl:call-template name="variable"/>
    		<xsl:call-template name="constante"/>
    	</xsl:template>
     
    </xsl:stylesheet>
    mais lors de l'execution y à une erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    The markup in the document following the root element must be well-formed.
    Parse error: The markup in the document following the root element must be well-formed.
    merci bien pour votre aide

  19. #19
    Membre expérimenté
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    1 466
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 466
    Points : 1 610
    Points
    1 610
    Par défaut
    Citation Envoyé par Morbo Voir le message
    Ben ça depend de ce qu'il y a dans les xsl..., il faut pas qu'il y a de template qui interfere avec celui de l'autre feuille.
    Tu ne peux pas inclure 2 xsl qui marchaient indépendamments et s'attendre à ce que ça marche en les incluant.

    Regarde cet exemple :
    http://msdn.microsoft.com/fr-fr/libr...25(VS.80).aspx
    T'as pourtant un exemple clair là, même s'il n'y a qu'une feuille d'inclue.

  20. #20
    Débutant  
    Inscrit en
    Mars 2006
    Messages
    300
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 300
    Points : 60
    Points
    60
    Par défaut
    j'ai pas bien compris l'exemple et ça marche pas avec mon exemple !

Discussions similaires

  1. Une requête en JOINTURE qui renvoi plusieurs arrays
    Par Magnat dans le forum Requêtes
    Réponses: 7
    Dernier message: 11/05/2010, 00h03
  2. Réponses: 1
    Dernier message: 20/11/2008, 03h17
  3. application qui comprend plusieur aplication avec flash
    Par piratack007 dans le forum Flash
    Réponses: 2
    Dernier message: 18/02/2008, 12h24
  4. compilation d'une appli qui comprend plusieurs projets
    Par r0d dans le forum Code::Blocks
    Réponses: 7
    Dernier message: 17/01/2008, 13h40
  5. Réponses: 1
    Dernier message: 15/04/2007, 21h09

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