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 :

XML -> XSL <- XML


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Août 2004
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 15
    Points : 6
    Points
    6
    Par défaut XML -> XSL <- XML
    A ma droite un fichier XML,
    A ma gauce un autre fichier XML,
    Au milieu, je dois faire le XSL qui prend l'un pour generer l'autre.

    A la main, c'est un peu fastidieux. N'y a t-il pas un moyen d'obtenir au moins la structure XSL qui generera une structure XML vide, apres il n'y aurait plus qu'à indiquer dans le XSL ou aller chercher les datas, formater 2-3 boucles et hop c'est fini ?

  2. #2
    Membre du Club
    Inscrit en
    Décembre 2003
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 52
    Points : 54
    Points
    54
    Par défaut
    Si tu trouves un joyau pareil, fais-le nous savoir!!!

  3. #3
    Expert éminent
    Avatar de GrandFather
    Inscrit en
    Mai 2004
    Messages
    4 587
    Détails du profil
    Informations personnelles :
    Âge : 54

    Informations forums :
    Inscription : Mai 2004
    Messages : 4 587
    Points : 7 103
    Points
    7 103
    Par défaut
    Tu peux créer un XSL qui te génére un autre XSL qui te génére un XML vide mais il faudra toujours l'écrire à la main...

    Non, sérieusement, comment veux-tu qu'un outil quelconque puisse deviner ce que tu veux comme structure XML en sortie ? Ou alors j'ai pas compris la demande, et tu devrais préciser.
    FAQ XML
    ------------
    « Le moyen le plus sûr de cacher aux autres les limites de son savoir est de ne jamais les dépasser »
    Giacomo Leopardi

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Août 2004
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 15
    Points : 6
    Points
    6
    Par défaut
    Citation Envoyé par schnecke
    Si tu trouves un joyau pareil, fais-le nous savoir!!!
    J'explique :

    Fichier d'origine :

    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
     
    <ARTICLES>
    	<ARTICLE_CLE>4</ARTICLE_CLE>
    	<FOURNISSEURS>
    		<FOURNISSEUR_CLE>52</FOURNISSEUR_CLE>
    		<FOURNISSEUR_RESPONSABLE></FOURNISSEUR_RESPONSABLE>
     
    		<ADRESSES>
    			<ADRESSE_CLE>86</ADRESSE_CLE>
    			<LOCALISATIONS>
    				<LOCALISATION_CLE>25</LOCALISATION_CLE>
    				<LOCALISATION_CODE_POSTAL></LOCALISATION_CODE_POSTAL>
    				<LOCALISATION_VILLE></LOCALISATION_VILLE>
    				<LOCALISATION_PAYS></LOCALISATION_PAYS>
    			</LOCALISATIONS>
    			<FOURNISSEUR_CLE>52</FOURNISSEUR_CLE>
    			<ARTICLES/>
    			<ACTIVITES_CLIENTS/>
    			<ADRESSE_LIGNE_1></ADRESSE_LIGNE_1>
    		</ADRESSES>
    	</FOURNISSEURS>
    </ARTICLES>
    Fichier a creer :

    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
    		<DetailContact xml:lang="" libelle="" type="" idref="" id="">
    			<RaisonSociale/>
    			<Sigle/>
    			<Adresse idref="" id="">
    				<Adr1/>
    				<Adr2/>
    				<Adr3/>
    				<CodePostal/>
    				<Commune code=""/>
    				<commune></commune>
    				<BureauDistrib></BureauDistrib>
    				<Cedex/>
    				<ProvinceEtat/>
    				<Pays xml:lang="" code=""/>
    				<Geolocalisation>
    					<Zone xml:lang="" libelle="" type="" idref="" id=""/>
    					<Zone></Zone>
    					<Nom xml:lang="" code=""/>
    					<Nom></Nom>
    				</Geolocalisation>
    			</Adresse>
    			<MoyensCommunications/>
    		</DetailContact>
    Je voudrais donc un moyen de comprendre qu'il me faut une structure de base du genre :

    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
    	<xsl:template match="/">
    		<xsl:element name="Contacts">
    			<xsl:element name="DetailContact">
    				<xsl:attribute name="id">
    				</xsl:attribute>
    				<xsl:attribute name="idref">
    				</xsl:attribute>
    				<xsl:attribute name="type">
    				</xsl:attribute>
    				<xsl:attribute name="libelle">
    				</xsl:attribute>
    				<xsl:attribute name="xml:lang">
    				</xsl:attribute>
    				<xsl:element name="RaisonSociale">
    			</xsl:element>
    				<xsl:element name="Sigle">
    			</xsl:element>
    				<xsl:element name="Adresse">
    					<xsl:attribute name="id">
    				</xsl:attribute>
    					<xsl:attribute name="idref">
    				</xsl:attribute>
    					<xsl:element name="Adr1">
    			</xsl:element>
    					<xsl:element name="Adr2">
    			</xsl:element>
    					<xsl:element name="Adr3">
    			</xsl:element>
    					<xsl:element name="CodePostal">
    			</xsl:element>
    					<xsl:element name="Commune">
    			</xsl:element>
    					<xsl:attribute name="code">
    				</xsl:attribute>
    				</xsl:element>
    				<xsl:element name="BureauDistrib">
    			</xsl:element>
    				<xsl:element name="Cedex">
    			</xsl:element>
    				<xsl:element name="ProvinceEtat">
    			</xsl:element>
    				<xsl:element name="Pays">
    					<xsl:attribute name="code">
    				</xsl:attribute>
    				</xsl:element>
    				<xsl:element name="Geolocalisation">
    			</xsl:element>
    				<xsl:element name="Personne">
    					<xsl:attribute name="id">
    				</xsl:attribute>
    					<xsl:attribute name="idref">
    				</xsl:attribute>
    					<xsl:attribute name="type">
    				</xsl:attribute>
    					<xsl:attribute name="xml:lang">
    				</xsl:attribute>
    				</xsl:element>
     
    			</xsl:element>
    		</xsl:element>
    	</xsl:template>
    Pour qu'en suite je reprenne ce XSL en lui ajoutant des trucs du style

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <xsl:value-of select="ARTICLES/FOURNISSEURS/FOURNISSEUR_NOM"/>
    Pour remplire les cases....

    Evidement je ne vais pas savoir TOUT remplir, mais au moins tout renseignement concordant je pourrais. Et si parfois je dois faire des boucle j'ajoute ensuite..

    C'est plus clair ?

  5. #5
    Expert éminent
    Avatar de GrandFather
    Inscrit en
    Mai 2004
    Messages
    4 587
    Détails du profil
    Informations personnelles :
    Âge : 54

    Informations forums :
    Inscription : Mai 2004
    Messages : 4 587
    Points : 7 103
    Points
    7 103
    Par défaut
    Bon, on va essayer d'y voir plus clair : si j'ai bien compris ton problème, le fichier XML de sortie est le même que celui d'entrée, à l'exception de certains éléments qui subissent un traitement particulier, c'est celà ?
    FAQ XML
    ------------
    « Le moyen le plus sûr de cacher aux autres les limites de son savoir est de ne jamais les dépasser »
    Giacomo Leopardi

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Août 2004
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 15
    Points : 6
    Points
    6
    Par défaut
    Citation Envoyé par GrandFather
    Bon, on va essayer d'y voir plus clair : si j'ai bien compris ton problème, le fichier XML de sortie est le même que celui d'entrée, à l'exception de certains éléments qui subissent un traitement particulier, c'est celà ?
    J'ai Edité et ajouter des explications dans mon message précédent pour que vous puissiez mieux comprendre mon besoin et ma question...

  7. #7
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 234
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 234
    Points : 15 531
    Points
    15 531
    Par défaut
    à vue de nez ca m'a l'air faisable de passer du XML vide au XSL que tu as montré mais ensuite je ne vois pas du tout comment définir quelles informations doivent être prise du 1er XML

  8. #8
    Futur Membre du Club
    Profil pro
    Inscrit en
    Août 2004
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 15
    Points : 6
    Points
    6
    Par défaut
    Citation Envoyé par mathix
    à vue de nez ca m'a l'air faisable de passer du XML vide au XSL que tu as montré mais ensuite je ne vois pas du tout comment définir quelles informations doivent être prise du 1er XML
    Effectivement je suis bien d'accord avec toi, et la deuxieme étape j'entend bien le faire à la main, mais ne serait-ce que taper la structure du XSL en bon informaticien paresseux je me dis que la machine doit bien pouvoir le faire !!!

  9. #9
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 234
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 234
    Points : 15 531
    Points
    15 531
    Par défaut
    ah ok

    prend comme base de départ un XSL "indentité" qui recopie en sortie le XML d'entrée
    http://www.dcs.napier.ac.uk/~andrew/xml/xsl/x4.htm

    ensuite modifie le petit à petit pour avoir ton xsl prêt à être rempli

  10. #10
    Expert éminent
    Avatar de GrandFather
    Inscrit en
    Mai 2004
    Messages
    4 587
    Détails du profil
    Informations personnelles :
    Âge : 54

    Informations forums :
    Inscription : Mai 2004
    Messages : 4 587
    Points : 7 103
    Points
    7 103
    Par défaut
    Informaticien paresseux, j'ai entendu ta complainte . Voici la solution à ton problème (enfin je crois), un XSL qui génère un autre XSL à partir de ton gabarit XML vide :
    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
    <?xml version="1.0"?>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
     
      <xsl:output method="xml" indent="yes"/>
     
      <xsl:template match="/">
        <xsl:element name="xsl:stylesheet">
          <xsl:attribute name="version">1.0</xsl:attribute>
          <xsl:element name="xsl:template">
            <xsl:attribute name="match">/</xsl:attribute>
            <xsl:apply-templates select="*"/>
          </xsl:element> 
        </xsl:element>
      </xsl:template>
     
      <xsl:template match="*">
        <xsl:element name="xsl:element">
          <xsl:attribute name="name"><xsl:value-of select="name()"/></xsl:attribute>
          <xsl:apply-templates select="@*"/>
          <xsl:apply-templates select="*"/>
        </xsl:element>
      </xsl:template>
     
      <xsl:template match="@*">
        <xsl:element name="xsl:attribute">
          <xsl:attribute name="name"><xsl:value-of select="name()"/></xsl:attribute>
        </xsl:element>
      </xsl:template>
     
    </xsl:stylesheet>
    Tu n'as plus qu'à modifier le xsl généré.
    Gregory >> Ca aurait pu faire l'objet d'un défi, non ?
    FAQ XML
    ------------
    « Le moyen le plus sûr de cacher aux autres les limites de son savoir est de ne jamais les dépasser »
    Giacomo Leopardi

  11. #11
    Futur Membre du Club
    Profil pro
    Inscrit en
    Août 2004
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 15
    Points : 6
    Points
    6
    Par défaut
    Citation Envoyé par GrandFather
    Informaticien paresseux, j'ai entendu ta complainte
    cooooll.. je vais regarder ça.

    Qu'utilisez vous comme éditeur ? j'ai XMLSpy à l'essai là... chez IBM ya pas un freeware sympa ? ou autre ?

  12. #12
    Rédacteur

    Avatar de Erwy
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2003
    Messages
    4 967
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2003
    Messages : 4 967
    Points : 10 927
    Points
    10 927
    Par défaut
    Citation Envoyé par GrandFather
    Gregory >> Ca aurait pu faire l'objet d'un défi, non ?
    Un peu facile non

  13. #13
    Expert éminent
    Avatar de GrandFather
    Inscrit en
    Mai 2004
    Messages
    4 587
    Détails du profil
    Informations personnelles :
    Âge : 54

    Informations forums :
    Inscription : Mai 2004
    Messages : 4 587
    Points : 7 103
    Points
    7 103
    Par défaut
    Un peu facile non
    eh ben t'avais qu'à le poster, si c'est si facile !
    FAQ XML
    ------------
    « Le moyen le plus sûr de cacher aux autres les limites de son savoir est de ne jamais les dépasser »
    Giacomo Leopardi

  14. #14
    Futur Membre du Club
    Profil pro
    Inscrit en
    Août 2004
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 15
    Points : 6
    Points
    6
    Par défaut
    Citation Envoyé par GrandFather
    Un peu facile non
    eh ben t'avais qu'à le poster, si c'est si facile !
    Bravo ca marche nickel, merci !

  15. #15
    Rédacteur

    Avatar de Erwy
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2003
    Messages
    4 967
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2003
    Messages : 4 967
    Points : 10 927
    Points
    10 927
    Par défaut
    Citation Envoyé par GrandFather
    eh ben t'avais qu'à le poster, si c'est si facile !
    Pfeu ,t'as eu les infos pour le faire et tu l'a ecris alors que j'etais dans le RER, facile de frimer sans concurrence
    (puis le firewall du poste de mon boulot n'aime pas trop developper ces temps ci et comme je ne peut pas le configurer)

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

Discussions similaires

  1. Mise en page XML avec XSL et XML externe
    Par snopims dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 03/08/2011, 15h57
  2. Réponses: 2
    Dernier message: 06/07/2006, 08h47
  3. [XSL-FO] xml vers xsl-fo (pour generation PDF ou RTF)
    Par dams50 dans le forum XSL/XSLT/XPATH
    Réponses: 5
    Dernier message: 13/12/2003, 21h07
  4. Tree View avec XML et XSL
    Par Drooxy dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 22/04/2003, 10h21
  5. 1 XML & X XSL ?
    Par kendo dans le forum XSL/XSLT/XPATH
    Réponses: 5
    Dernier message: 25/03/2003, 10h57

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