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

XML/XSL et SOAP Discussion :

Un xml déja préformaté.. que faire ?


Sujet :

XML/XSL et SOAP

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 4
    Points : 2
    Points
    2
    Par défaut Un xml déja préformaté.. que faire ?
    Bonjour,
    je sui pas vraiment ce qu'on pourait appeler un pro (lol) en XML/XSL mais je me dépatouille en général tout seul sans trop de mal pour les choses simples.

    Par contre depuis peu je reçois un fichier XML de ce genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    <root>
    <texte>
        <titre>Edito</titre>
        blabla blabla blabla blabla
        <lien href="index.htm">blabla</lien>
       blabla blabla <rouge>blabla</rouge> blabla blabla
       <signature>M. X<signature>
    </texte>
    </root>
    à l'affichage on dois avoir :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <h1>Edito</h1>
    <p> blabla blabla blabla blabla <a href="index.htm">blabla</a> blabla blabla <span class="rouge">blabla</span> blabla blabla </p>
    <p>M. X</p>
    Bon d'ordinaire je ne fait aps ds le compliqué car je maitrise peu, dc j'affiche le tout sans formatage de toute sorte .. mais on me fait bien comprendre que c'est pas suffisant..

    comment puis je faire pour définir des style (css) sur c'est balises? sachant que je ne sais ni combien ni ou seront les liens et les couleurs (pour le titre et la signature je peux encore m'arranger)

    J'ai bien essayer des template.. mais ça implque (pour moi) de connaitre l'emplacement et le nombre précis d'occurence (liens et couleur).

    Je ne peux malheureusement pas changer le code xml source (il viens d'une autre boite) et si possible j'aimerais eviter de devoir le modifier avant traitement.

    Merci de vos réponses.
    Sco

  2. #2
    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 Re: Un xml déja préformaté.. que faire ?
    Citation Envoyé par Scolopendre
    comment puis je faire pour définir des style (css) sur c'est balises? sachant que je ne sais ni combien ni ou seront les liens et les couleurs (pour le titre et la signature je peux encore m'arranger)

    J'ai bien essayer des template.. mais ça implque (pour moi) de connaitre l'emplacement et le nombre précis d'occurence (liens et couleur).
    Je comprends pas du tout cette partie

    1) tu parles des <a> ? Quels couleurs? quels conditions ?
    2)Pour les templates comprends pas.C'est plutot quand on ne connait pas les emplacements et le nombre d'occurences qu'on les utilise (plutot qu'un for-each)?

    Tu pourrais expliquer un peu plus?
    merci

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    Je m'explique :

    avec le ficher xml cité plus haut, je veux faire le fichier html qui se trouve en dessous.

    sachant que le fichier xml poura etre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <root> 
    <texte> 
        <titre>Edito</titre> 
        blabla <lien href="index.htm">blabla</lien> 
       blabla blabla <rouge>blabla</rouge> blabla <lien href="truc.htm">blabla</lien> 
       <signature>M. X</signature> 
    </texte> 
    </root>
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <root> 
    <texte> 
        <titre>Edito</titre> 
        blabla blabla <rouge>blabla</rouge> blabla <rouge>blabla</rouge> blabla blabla 
       <signature>M. X</signature> 
    </texte> 
    </root>
    ou

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <root> 
    <texte> 
        <titre>Edito</titre> 
        blabla <lien href="index.htm">blabla</lien> 
       <lien href="truc.htm">blabla</lien>  blabla <rouge>blabla</rouge> blabla <rouge>blabla</rouge>
       <signature>M. X</signature> 
    </texte> 
    </root>
    etc


    en gros remplacer toutes les occurence de noeud <lien> par <a href="@href"> ... </a> et et toutes les occurences à <rouge> par <span class="rouge">...</span>

    tout en concervant la structure du texte

    dans mes trois exemple ça donnerait en sortie :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
        <h1>Edito</h1> 
        blabla <a href="index.htm">blabla</a> 
       blabla blabla <span class="rouge">blabla</span> blabla <a href="truc.htm">blabla</a> 
       <span class="signature">M. X</span>
    ou

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
        <h1>Edito</h1> 
        blabla blabla <span class="rouge">blabla</span> blabla <span class="rouge">blabla</span> blabla blabla 
       <span class="signature">M. X</span>
    ou

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
        <h1>Edito</h1> 
        blabla <a href="index.htm">blabla</a> 
       <a href="truc.htm">blabla</a>  blabla <span class="rouge">blabla</span> blabla <span class="rouge">blabla</span>
       <span class="signature">M. X</span>
    Pour le titre et la signature ça n'est pas un pb, ils sont respectivement tjrs en haut et en bas mais pour le corps du texte (le texte de la balise texte seule) en spageti avec les autres balises (lien et rouge) je ne vois pas comment faire..

    Voila .. si tu veux d'autre eclaississement je suis a ta disposition

    merci de ton aide

  4. #4
    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
    Bonjour,

    l'astuce est d'utiliser la fonction XPath name() et <xsl:apply-templates> sans attribut select :

    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
    <?xml version="1.0" encoding="UTF-8"?>
    <xsl&#58;stylesheet version="1.0" xmlns&#58;xsl="http&#58;//www.w3.org/1999/XSL/Transform">
    	<xsl&#58;output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
     
    	<xsl&#58;template match="/root">
    		<xsl&#58;for-each select="texte">
    			<xsl&#58;copy>
    				<xsl&#58;apply-templates/>
    			</xsl&#58;copy>
    		</xsl&#58;for-each>
    	</xsl&#58;template>
     
    	<xsl&#58;template match="texte">
    		<xsl&#58;apply-templates/>
    	</xsl&#58;template>
     
    	<xsl&#58;template match="titre">
    		<h1>
    			<xsl&#58;apply-templates/>
    		</h1>
    	</xsl&#58;template>
     
    	<xsl&#58;template match="lien">
    		<a href="&#123;@href&#125;">
    			<xsl&#58;apply-templates/>
    		</a>
    	</xsl&#58;template>
     
    	<xsl&#58;template match="signature">
    		<span class="signature">
    			<xsl&#58;apply-templates/>
    		</span>
    	</xsl&#58;template>
     
    	<xsl&#58;template match="*">
    		<span class="&#123;name&#40;&#41;&#125;">
    			<xsl&#58;apply-templates/>
    		</span>
    	</xsl&#58;template>
    </xsl&#58;stylesheet>
    Ca continuera à fonctionner sans modification si on t'ajoute des balises <bleu>, <vert>, <jaune>, etc.
    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

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    Tout d'abord un grand merci, ça marche à merveille.

    Je me permet de te poser qd même quelques questions car j'aime pas ne pas comprendre le code que je tape ^^

    je en maitrise pas du tout le xsl et c subtilité (et je tente de m'améliorer ^^)
    tout d'abord :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
       <xsl&#58;template match="*"> 
          <span class="&#123;name&#40;&#41;&#125;"> 
             <xsl&#58;apply-templates/> 
          </span> 
       </xsl&#58;template>
    Je ne comprend pas l'utilisation de* dans ton Xpath, je ne l'ai jamais utilisé, est ce que ça a une sigbnfication identique a celle du shell?
    (désolé si ça fait newbe lol)

    merci pour l'eclairsissement, et encore un grand merci pour ta reponse (plus que rapide)

    Sco

  6. #6
    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
    Citation Envoyé par Scolopendre
    Je ne comprend pas l'utilisation de* dans ton Xpath, je ne l'ai jamais utilisé, est ce que ça a une sigbnfication identique a celle du shell?
    Oui, en quelque sorte. Ce template sera exécuté pour tous les éléments qui ne sont pas pris en charge par les autres templates de la feuille de style. Si j'avais mis match="rouge", ça aurait donné le même résultat pour les exemples de sources XML que tu as données. Mais en utilisant le caractère joker * qui signifie en gros "n'importe quel élément", tu es prêt à gérer les éventuels nouveaux éléments comme <bleu>, <jaune>, etc.
    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

  7. #7
    Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    Oki j'ai compris, merci de l'info

    Je marque le sujet comme resolu.

    encore merci.
    Sco

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

Discussions similaires

  1. Les PC sont de plus en plus bruyants que faire
    Par plichtal dans le forum Ordinateurs
    Réponses: 260
    Dernier message: 23/12/2011, 13h28
  2. [XML] Compatibilité FF-IE... Que faire ?; Merci Erwy...
    Par FremyCompany dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 20/05/2006, 12h25
  3. xml/xmi Que choisir, que faire? demande d'infos
    Par critok dans le forum XML/XSL et SOAP
    Réponses: 2
    Dernier message: 01/03/2006, 16h35
  4. [DirectDraw] Que faire pour optimiser le rendu ???
    Par mat.M dans le forum DirectX
    Réponses: 8
    Dernier message: 12/12/2003, 19h02
  5. [maintenance][performance] Que faire comme maintenance ?
    Par woodwai dans le forum PostgreSQL
    Réponses: 5
    Dernier message: 06/11/2003, 16h39

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