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 :

transformation xml via xslt


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Candidat au Club
    Inscrit en
    Mai 2005
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 9
    Points : 2
    Points
    2
    Par défaut transformation xml via xslt
    bonjour a tous
    j'ai un fichier xml :


    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
    <?xml version="1.0" encoding="UTF-8" standalone="yes" ?> 
    <?iview mediapro exportversion="1.0.0.a1" appversion="2.6" ?> 
     
    <CatalogType> 
        <Catalog>exemple</Catalog> 
        <MediaItemList> 
            <MediaItem> 
                <AnnotationFields> 
                    <Filename>aaa</Filename> 
                    <EventDate>bbb</EventDate> 
                    <City>ccc</City> 
                    <Copyright>ddd</Copyright> 
                    <Caption>eee</Caption> 
                </AnnotationFields> 
            </MediaItem> 
        </MediaItemList> 
    </CatalogType>
    et avec le xslt 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
    <?xml version='1.0' encoding='utf-8'?> 
    <xsl:stylesheet version='1.0' xmlns:xsl='http://www.w3.org/1999/XSL/Transform'> 
     
    <xsl:output method='html' version='1.0' encoding='utf-8' indent='no'/> 
     
    <xsl:template match="/"> 
     
        <structure> 
            <xsl:apply-templates/> 
        </structure> 
     
    </xsl:template > 
         
        <xsl:template match="AnnotationFields" > 
             
            <image> image="<xsl:value-of select="Filename"/>_img.png" thumb="<xsl:value-of select="Filename"/>_tmb.png" print="false" info1="<xsl:value-of select="Filename"/>" info2="<xsl:value-of select="City"/>" info3="<xsl:value-of select="EventDate"/>" info4="<xsl:value-of select="Copyright"/>" info5="<xsl:value-of select="Caption"/>" 
            </image> 
     
    </xsl:template > 
     
    </xsl:stylesheet>

    j'obtiens :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <structure> 
        exemple 
         
             
                <image> image="aaa_img.png" thumb="aaa_tmb.png" print="false" info1="aaa" info2="bbb" info3="ccc" info4="ddd" info5="eee" 
            </image> 
     
    </structure>
    est-il possible d'obtenir un code final du type :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <structure> 
    <image image="aaa_img.png" thumb="aaa_tmb.png" print="false" info1="aaa" info2="bbb" info3="ccc" info4="ddd" info5="eee"/> 
    </structure>

    merci

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

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

    c'est vrai que comme ca tu ne va pas y arriver... (ca me rapelle mes débuts )

    Ce qu'il faut faire c'est que quand tu déclare un attribut tu doit faire:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <tabalise><xsl:attribute name="lenomdelattribut"><xsl:value-of select="cequetuveuxmettrededans"/></xsl:attribute></tabalise>
    Et comme ca tout marchera beaucoup mieux!!!

    Bonne Chance

    Thierry
    "Life is short don't forget to inhale"
    Mais: "Mieux vaux arriver en retard dans ce monde... qu'en avance à l'autre."

  3. #3
    Candidat au Club
    Inscrit en
    Mai 2005
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 9
    Points : 2
    Points
    2
    Par défaut
    ok merci bcp ça m'a aidé
    j'ai maintenant ce code :

    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
     
    <?xml version='1.0' encoding='utf-8'?>
    <xsl:stylesheet version='1.0' xmlns:xsl='http://www.w3.org/1999/XSL/Transform'>
     
    <xsl:output method='html' version='1.0' encoding='utf-8' indent='no'/>
     
    <xsl:template match="/">
    <structure>
    	<image>
    		<xsl:attribute name="image">
    		<xsl:value-of select="Filename"/>_img.png" thumb="<xsl:value-of select="Filename"/>_tmb.png" print="false" info1="<xsl:value-of select="Filename"/>" info2="<xsl:value-of select="City"/>" info3="<xsl:value-of select="EventDate"/>" info4="<xsl:value-of select="Copyright"/>" info5="<xsl:value-of select="Caption"/>
     
    		</xsl:attribute>
    	</image>
    </structure>
    </xsl:template>
    </xsl:stylesheet>
    ce qui me donne au final :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <structure><image image="_img.png&quot; thumb=&quot;_tmb.png&quot; print=&quot;false&quot; info1=&quot;&quot; info2=&quot;&quot; info3=&quot;&quot; info4=&quot;&quot; info5=&quot;"></image></structure>
    je remarque qu'il ne récupere plus les données à afficher dans les champs correspondant, ce là vient surement du fait que je ne sait pas ou mettre cette ligne ?

    <xsl:template match="AnnotationFields" >

    désolé d'etre aussi newbie

    merci

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

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 625
    Points : 1 666
    Points
    1 666
    Par défaut
    Y pas a être désolé tout le monde a forcément été newbie.

    A part ca ton implémentation pas mal... (désolé mais j'avais jamais vu ca )

    Je t'ai pas assez bien expliqué pardon

    C'est comme ca qu'on fait:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <structure>
    <xsl:attribute name="image"><xsl:value-of select="concat(Filename, '_img.png')"/></xsl:attribute>
    <xsl:attribute name="thumb"><xsl:value-of select="concat(Filename, '_tmb.png')"/></xsl:attribute> 
    et ainsi de suite 
     
    </structure>
    Car si tu veux rajouter un plus de ton élément XML il faut utiliser concat

    Bon test

    ++
    Thierry
    "Life is short don't forget to inhale"
    Mais: "Mieux vaux arriver en retard dans ce monde... qu'en avance à l'autre."

  5. #5
    Candidat au Club
    Inscrit en
    Mai 2005
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 9
    Points : 2
    Points
    2
    Par défaut
    ça progresse mais c'est pas encore ça :

    je me retrouve avec en xml :

    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
    <?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
    <?iview mediapro exportversion="1.0.0.a1" appversion="2.6" ?>
     
    <CatalogType>
    	<Catalog>exemple</Catalog>
    	<MediaItemList>
    		<MediaItem>
    			<AnnotationFields>
    				<Filename>05035_002</Filename>
    				<EventDate>2005:03:17</EventDate>
    				<City>Noirmoutier en l&apos;Île  85330</City>
    				<Copyright>©Pascal Xicluna/Min.Agri.Fr.</Copyright>
    				<Caption>Proue de la maquette d&apos;un fileyeur de 12 mètres. CNB, groupe Bénéteau.</Caption>
    			</AnnotationFields>
    		</MediaItem>
    	</MediaItemList>
    </CatalogType>

    en xslt :

    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
    <?xml version='1.0' encoding='utf-8'?>
    <xsl:stylesheet version='1.0' xmlns:xsl='http://www.w3.org/1999/XSL/Transform'>
     
    <xsl:output method='html' version='1.0' encoding='utf-8' indent='no'/>
     
    <xsl:template match="/">
     
    <structure>
     
    	<image>
     
    		<xsl:attribute name="image"><xsl:value-of select="concat(Filename,'_img.png')"/></xsl:attribute>
    		<xsl:attribute name="thumb"><xsl:value-of select="concat(Filename,'_tmb.png')"/></xsl:attribute> print="false" 
    		<xsl:attribute name="info1"><xsl:value-of select="concat(Filename)"/></xsl:attribute> 
    		<xsl:attribute name="info2"><xsl:value-of select="concat(City)"/></xsl:attribute> 
    		<xsl:attribute name="info3"><xsl:value-of select="concat(EventDate)"/></xsl:attribute> 
    		<xsl:attribute name="info4"><xsl:value-of select="concat(Copyright)"/></xsl:attribute>
    		<xsl:attribute name="info5"><xsl:value-of select="concat(Caption)"/></xsl:attribute>
     
    </image>
    </structure>
    </xsl:template>
    </xsl:stylesheet>
    et j'obtiens...bah rien en fait il veut pas
    et je ne trouve pas les fautes
    j'ai l'impression qu'il ne récupère aucune info

    merci

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 19
    Points : 18
    Points
    18
    Par défaut
    Ils servent à quoi tes concat avec un seul argument ?
    Sinon c'est normal qu'il ne récupère pas, tu es dans le template de la racine ("/") et tu fais appel à des éléments qui ne sont pas des sous-éléments de la racine.
    Tu dois appeler un autre template, ou préciser le chemin complet.

  7. #7
    Candidat au Club
    Inscrit en
    Mai 2005
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 9
    Points : 2
    Points
    2
    Par défaut
    peux tu me le montrer concretement pour l'histoire de la racine stp ?
    et pour l'histoire des concat à un seul argumen j'ai suivi le conseil de virgul c'est pas ça ?

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

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 625
    Points : 1 666
    Points
    1 666
    Par défaut
    Première chose si tu utilise concat c'est que tu as deux élément a mettre ensemble sinon mais que par ex: Filename ou City


    Deuxièmement en XML tu navique toujours dans ton doc comme dans des dossiers sur windows alors quand tu fais:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <xsl:template match="/">
    tu te trouve avant la balise Catalogtype de ton XML

    Deux possibilité:

    soit navigue sur le template soit dans ton value-of

    ++

    Thierry
    "Life is short don't forget to inhale"
    Mais: "Mieux vaux arriver en retard dans ce monde... qu'en avance à l'autre."

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

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 625
    Points : 1 666
    Points
    1 666
    Par défaut
    comme ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <xsl:template match="/CatalogType/MediaItemList/MediaItem/AnnotationFields">
    ou comme ceci dans chaque value-of:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <xsl:value-of select="CatalogType/MediaItemList/MediaItem/AnnotationFields/Filename">
    mais faut mettre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <xsl:template match="/">
    obligatoire


    Perso je te conseil la version une elle est plus optimiser car tu te met dans le répertoire et tu prend chaque élément . et l'autre tu fait chaque fois tout l'arbre pour aller chercher ton élément

    Astuce: si tu veux revenir en arrière: ../ pour un répertoire ../../ pour deux et ainsi de suite

    ++

    Thierry
    "Life is short don't forget to inhale"
    Mais: "Mieux vaux arriver en retard dans ce monde... qu'en avance à l'autre."

  10. #10
    Candidat au Club
    Inscrit en
    Mai 2005
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 9
    Points : 2
    Points
    2
    Par défaut
    merci mais je n'ai pas très bien compris ...
    tout d'abord pour ce qui est des "value" la ligne suivante est elle correcte ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <xsl:attribute name="image"><xsl:value-of select="CatalogType/MediaItemList/MediaItem/AnnotationFields/Filename,'_img.png')"/></xsl:attribute>
    et ensuite je ne sait pas trop ou placer les deux lignes


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <xsl:template match="/CatalogType/MediaItemList/MediaItem/AnnotationFields">
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <xsl:template match="/">
    merci d'avance

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

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 625
    Points : 1 666
    Points
    1 666
    Par défaut
    comme je te le disait tu peux faire de 2 facon (pour ton cas la solution 1 et pour t'expliquer la solution2):

    Solution 1:
    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
    <?xml version='1.0' encoding='utf-8'?> 
    <xsl:stylesheet version='1.0' xmlns:xsl='http://www.w3.org/1999/XSL/Transform'> 
     
    <xsl:output method='html' version='1.0' encoding='utf-8' indent='no'/> 
     
    <xsl:template match="/CatalogType/MediaItemList/MediaItem/AnnotationFields">
     
    <structure> 
     
       <image> 
     
          <xsl:attribute name="image"><xsl:value-of select="concat(Filename,'_img.png')"/></xsl:attribute> 
          <xsl:attribute name="thumb"><xsl:value-of select="concat(Filename,'_tmb.png')"/></xsl:attribute> print="false" 
          <xsl:attribute name="info1"><xsl:value-of select="concat(Filename)"/></xsl:attribute> 
          <xsl:attribute name="info2"><xsl:value-of select="City"/></xsl:attribute> 
          <xsl:attribute name="info3"><xsl:value-of select="EventDate"/></xsl:attribute> 
          <xsl:attribute name="info4"><xsl:value-of select="Copyright"/></xsl:attribute> 
          <xsl:attribute name="info5"><xsl:value-of select="Caption"/></xsl:attribute> 
     
    </image> 
    </structure> 
    </xsl:template> 
    </xsl:stylesheet>
    Solution 2:

    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
    <xsl:stylesheet version='1.0' xmlns:xsl='http://www.w3.org/1999/XSL/Transform'> 
     
    <xsl:output method='html' version='1.0' encoding='utf-8' indent='no'/> 
     
    <xsl:template match="/"> 
     
    <structure> 
     
       <image> 
     
          <xsl:attribute name="image"><xsl:value-of select="concat(CatalogType/MediaItemList/MediaItem/AnnotationFields/Filename,'_img.png')"/></xsl:attribute> 
          <xsl:attribute name="thumb"><xsl:value-of select="concat(CatalogType/MediaItemList/MediaItem/AnnotationFields/Filename,'_tmb.png')"/></xsl:attribute> print="false" 
          <xsl:attribute name="info1"><xsl:value-of select="CatalogType/MediaItemList/MediaItem/AnnotationFields/Filename"/></xsl:attribute> 
          <xsl:attribute name="info2"><xsl:value-of select="CatalogType/MediaItemList/MediaItem/AnnotationFields/City"/></xsl:attribute> 
          <xsl:attribute name="info3"><xsl:value-of select="CatalogType/MediaItemList/MediaItem/AnnotationFields/EventDate"/></xsl:attribute> 
          <xsl:attribute name="info4"><xsl:value-of select="CatalogType/MediaItemList/MediaItem/AnnotationFields/Copyright"/></xsl:attribute> 
          <xsl:attribute name="info5"><xsl:value-of select="CatalogType/MediaItemList/MediaItem/AnnotationFields/Caption"/></xsl:attribute> 
     
    </image> 
    </structure> 
    </xsl:template> 
    </xsl:stylesheet>
    Et comme je te le disais concat ne sert que si tu as deux chose a mettre ensemble (tu pourrais aussi faire a la place du concat):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <xsl:attribute name="thumb"><xsl:value-of select="Filename"/>_tmb.png</xsl:attribute>
    ++

    Thierry
    "Life is short don't forget to inhale"
    Mais: "Mieux vaux arriver en retard dans ce monde... qu'en avance à l'autre."

  12. #12
    Candidat au Club
    Inscrit en
    Mai 2005
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 9
    Points : 2
    Points
    2
    Par défaut
    merci
    j'ai essayer de retenir vos conseils et trouver ça :

    voila mon xml du départ :
    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
    <?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
    <?iview mediapro exportversion="1.0.0.a1" appversion="2.6" ?>
     
    <CatalogType>
    	<Catalog>exemple</Catalog>
    	<MediaItemList>
    		<MediaItem>
    			<AnnotationFields>
    				<Filename>05035_002</Filename>
    				<EventDate>2005:03:17</EventDate>
    				<City>Noirmoutier en l&apos;Île  85330</City>
    				<Copyright>©Pascal Xicluna/Min.Agri.Fr.</Copyright>
    				<Caption>Proue de la maquette d&apos;un fileyeur de 12 mètres. CNB, groupe Bénéteau.</Caption>
    			</AnnotationFields>
    		</MediaItem>
     
    		<MediaItem>
    			<AnnotationFields>
    				<Filename>05035_005</Filename>
    				<EventDate>2005:03:17</EventDate>
    				<City>Noirmoutier en l&apos;Île  85330</City>
    				<Copyright>©Pascal Xicluna/Min.Agri.Fr.</Copyright>
    				<Caption>Pose de membrures dans une coque en composite verre et résine polyester d&apos;un chalutier de 12 mètres.
    Atelier de moulage de Bénéteau Pêche, CNB.
    Chantier de construction de bateaux de pêche.</Caption>
    			</AnnotationFields>
    		</MediaItem>
    	</MediaItemList>
    </CatalogType>
    ainsi que mon xslt :

    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
     
    <?xml version="1.0" encoding="ISO-8859-1"?>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output method='html' version='1.0' encoding='utf-8' indent='no'/>
     
    <xsl:template match="//AnnotationFields" >
     
    <structure>
     
    <image image="{./Filename}_img.png" thumb="{./Filename}_tmb.png" print="false" info1="{./Filename}" info2="{./City}" info3="{./EventDate}" info4="{./Copyright}" info5="{./Caption}" /></structure>
     
    </xsl:template >
     
     
    </xsl:stylesheet>
    et le résultat est :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
     
    	exemple
     
     
    			<structure><image image="05035_002_img.png" thumb="05035_002_tmb.png" print="false" info1="05035_002" info2="Noirmoutier en l'IÌ?le  85330" info3="2005:03:17" info4="©Pascal Xicluna/Min.Agri.Fr." info5="Proue de la maquette d'un fileyeur de 12 meÌ?tres. CNB, groupe BeÌ?neÌ?teau."></image></structure>
     
     
     
    			<structure><image image="05035_005_img.png" thumb="05035_005_tmb.png" print="false" info1="05035_005" info2="Noirmoutier en l'IÌ?le  85330" info3="2005:03:17" info4="©Pascal Xicluna/Min.Agri.Fr." info5="Pose de membrures dans une coque en composite verre et reÌ?sine polyester d'un chalutier de 12 meÌ?tres.
    Atelier de moulage de BeÌ?neÌ?teau PeÌ?che, CNB.
    Chantier de construction de bateaux de peÌ?che."></image></structure>
    mais j'ai quelques soucis


    1) je souhaiterais que la balise <structure>ne se repete pas avant chaque image mais juste en début et fin de toutes les images, je n'ai sait pas ainsi où placer cette balise...

    2)je desirerais enlever le mot "exemple" situé au départ

    3)est ce que qq1 saurait d'ou viennent ces caractères invalides du type : CNB.&#10


    merci d'avance pour vos réponses

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

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 625
    Points : 1 666
    Points
    1 666
    Par défaut
    OK!

    Dans ton xml de départ il faut remplacer utf-8 par ISO-8859-1 (celui que je te conseil) ou utf-16 comme dans le XSLT pour ne plus avoir de merde!

    Perso le ="//AnnotationFields" n'est pas très recommandé car assez lent si tu sais ou il se trouve ne lui demande pas de chercher indique lui le chemin c'est toujours plus rapide!

    Pour ne pas te casser le couilles avec cette exemple fait ton tout premier template qui match="/" remonte déjà un bout dans /CatalogType/MediaItemList et après pour avoir ton structure correct:


    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
     
    <?xml version="1.0" encoding="ISO-8859-1"?> 
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
    <xsl:output method='html' version='1.0' encoding='utf-8' indent='no'/> 
     
    <xsl:template match="/CatalogType/MediaItemList"> 
     
    <structure> 
     
    <xsl:for-each select="MediaItem/AnnotationFields">
    <image image="{./Filename}_img.png" thumb="{./Filename}_tmb.png" print="false" info1="{./Filename}" info2="{./City}" info3="{./EventDate}" info4="{./Copyright}" info5="{./Caption}" />
     
    </xsl:for-each>
    </structure> 
    </xsl:template > 
    </xsl:stylesheet>
    Le for-each est une boucle qui fait toute les occurence MediaItem/AnnotationFields qui se trouve dans /CatalogType/MediaItemList

    ++

    Thierry
    "Life is short don't forget to inhale"
    Mais: "Mieux vaux arriver en retard dans ce monde... qu'en avance à l'autre."

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

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 625
    Points : 1 666
    Points
    1 666
    Par défaut
    oublie pas de changer l'encoding aussi dans le xsl:output...

    et si tu veux plus le mot exemple au début procède ainsi(je me suis trompé avant):

    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
    <?xml version="1.0" encoding="ISO-8859-1"?> 
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
    <xsl:output method='xml' encoding='ISO-8859-1' /> 
    <xsl:template match="/">
    <xsl:apply-templates select="CatalogType/MediaItemList"/>
    </xsl:template>
    <xsl:template match="CatalogType/MediaItemList"> 
    <html>
    	<head>
    		<title></title>
    	</head>
    	<body><structure> 
     
    <xsl:for-each select="MediaItem/AnnotationFields"> 
    <image image="{./Filename}_img.png" thumb="{./Filename}_tmb.png" print="false" info1="{./Filename}" info2="{./City}" info3="{./EventDate}" info4="{./Copyright}" info5="{./Caption}" /> 
     
    </xsl:for-each> 
     
    </structure> </body>
    </html>
    </xsl:template > 
    </xsl:stylesheet>
    "Life is short don't forget to inhale"
    Mais: "Mieux vaux arriver en retard dans ce monde... qu'en avance à l'autre."

  15. #15
    Candidat au Club
    Inscrit en
    Mai 2005
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 9
    Points : 2
    Points
    2
    Par défaut
    merci ça fonctionne bien !!!
    mon xslt es donc 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
    <?xml version="1.0" encoding="ISO-8859-1"?> 
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
    <xsl:output method='xml' encoding='ISO-8859-1' /> 
     
     
    <xsl:template match="/"> 
    <xsl:apply-templates select="CatalogType/MediaItemList"/> 
    </xsl:template> 
    <xsl:template match="CatalogType/MediaItemList"> 
     
     
    <structure> 
     
    <xsl:for-each select="MediaItem/AnnotationFields"> 
     
    <image image="{./Filename}_img.png" thumb="{./Filename}_tmb.png" print="false" info1="{./Filename}" info2="{./City}" info3="{./EventDate}" info4="{./Copyright}" info5="{./Caption}" /> 
     
    </xsl:for-each> 
     
    </structure> 
    </xsl:template > 
    </xsl:stylesheet>

    et au final j'obtiens :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <?xml version="1.0" encoding="ISO-8859-1"?><structure><image image="05035_002_img.png" thumb="05035_002_tmb.png" print="false" info1="05035_002" info2="Noirmoutier en l'Île  85330" info3="2005:03:17" info4="©Pascal Xicluna/Min.Agri.Fr." info5="Proue de la maquette d'un fileyeur de 12 mètres. CNB, groupe Bénéteau."/><image image="05035_005_img.png" thumb="05035_005_tmb.png" print="false" info1="05035_005" info2="Noirmoutier en l'Île  85330" info3="2005:03:17" info4="©Pascal Xicluna/Min.Agri.Fr." info5="Pose de membrures dans une coque en composite verre et résine polyester d'un chalutier de 12 mètres.
    Atelier de moulage de Bénéteau Pêche, CNB.
    Chantier de construction de bateaux de pêche."/></structure>
    les seuls défauts que je n'arrive pas à modifier sont la ligne de la version du xml qui apparait...est elle genante ou necessaire ?

    je souhaiterai aussi espacer entre 2 images mais il veut pas...

  16. #16
    Candidat au Club
    Inscrit en
    Mai 2005
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 9
    Points : 2
    Points
    2
    Par défaut
    ouai je n'arrive pas à revenir à la ligne après chaque balise <image>
    si qq1 pourrait m'aider je serais ravi

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

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 625
    Points : 1 666
    Points
    1 666
    Par défaut
    les seuls défauts que je n'arrive pas à modifier sont la ligne de la version du xml qui apparait...est elle genante ou necessaire ?
    Ca ne dérange pas du tout mais si ca t'ennuye dans xsl:output change xml par html et elle disparaitra mais attention il fera du vrai html sans balise fermante et si tu veux récupérer le html en xml par la suite (pour une autre manip par ex) garde en output xml !

    je souhaiterai aussi espacer entre 2 images mais il veut pas...
    En html tu peux utiliser <br/> (retour a ligne) ou <xsl:text disable-output-escaping="yes">&amp;nbsp;</xsl:text> (espace insécable) met le juste (un des deux) avant la fin du for-each!!!


    ++

    Thierry
    "Life is short don't forget to inhale"
    Mais: "Mieux vaux arriver en retard dans ce monde... qu'en avance à l'autre."

  18. #18
    Candidat au Club
    Inscrit en
    Mai 2005
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 9
    Points : 2
    Points
    2
    Par défaut
    merci beaucoup virgul pour tes precieux conseils !!!
    j'ai pu finaliser mon projet grace a toi
    bonne journée et à bientot

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

Discussions similaires

  1. Supprimer des balises d'un fichier XML via XSLT
    Par LaBastoss dans le forum XSL/XSLT/XPATH
    Réponses: 8
    Dernier message: 17/12/2012, 20h44
  2. [XSLT] Parsage XML via XSLT, comment être valide W3C ?
    Par souffle56 dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 29/05/2010, 20h19
  3. transformation XML via Xpath
    Par mamat.Net dans le forum XML/XSL et SOAP
    Réponses: 4
    Dernier message: 25/06/2008, 11h51
  4. Transformation XML via un XSL
    Par dahu17 dans le forum C#
    Réponses: 3
    Dernier message: 11/06/2007, 10h56
  5. probleme de transformation d'un XML via XSLT
    Par nayron_1 dans le forum XSL/XSLT/XPATH
    Réponses: 6
    Dernier message: 08/11/2005, 14h19

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