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 :

Comment choisir une partie précise d'un contenu d'une balise d'un fichier XML en utilisant XSLT


Sujet :

XML/XSL et SOAP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2015
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2015
    Messages : 3
    Par défaut Comment choisir une partie précise d'un contenu d'une balise d'un fichier XML en utilisant XSLT
    Salut , SVP Comment choisir une partie précise d'un contenu d'une balise d'un fichier XML en utilisant XSLT?

  2. #2
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 585
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 585
    Par défaut
    Bonjour,

    Contrairement à de nombreuses idées reçues, donner des exemples concrets et précis permet en fait une meilleure communication, pas moins bonne.

    Exemple : en utilisant select.
    C'est une réponse dans le sujet et probablement correcte, mais il y a des chances que tu ne sois pas plus avancé.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2015
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2015
    Messages : 3
    Par défaut
    Voici une partie de mon code 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
    18
    19
    <Folder>
    			<name>Caidat.xlsx</name>
    			<Placemark>
    				<styleUrl>#icon-503-DB4436</styleUrl>
    				<name>Caïdats TAMRI</name>
    				<ExtendedData>
    					<Data name='Latitude'>
    						<value>30.698140</value>
    					</Data>
    					<Data name='Longitude'>
    						<value>-9.825026</value>
    					</Data>
    				</ExtendedData>
    				<description><![CDATA[Latitude: 30.698140
    Longitude:  -9.825026<br><br>Latitude: 30.698140<br>Longitude: -9.825026]]></description>
    				<Point>
    					<coordinates>-9.825026,30.69814,0.0</coordinates>
    				</Point>
    			</Placemark>


    Et voilaa une autre partie du code XSLT correspondant :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <xsl:for-each select="/Document/Folder[position()=1]/Placemark">
    					<tr>
    						<td><xsl:value-of  select="name"  /></td>
    						<td><xsl:value-of  select="description"  /></td>

    Ce que je veux faire par la suite c'est d'extraire les 3 champs - séparés au dessus par virgule - de la balise <coordinates/> chacun dans une <td/>

  4. #4
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 585
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 585
    Par défaut
    Ah, du coup, si pour ton malheur tu es coincé en XSLT 1.0, non, ce n'est pas avec select.

    En XSLT 2.0 ça se ferait comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <xsl:for-each select="tokenize(Point/coordinates, ',')">
      <td><xsl:value-of select="."/></td>
    </xsl:for-each>
    Mais en XSLT 1.0, il n'y a pas moyen...

    La seule solution est d'utiliser un template nommé récursif.
    Exemple : pour transformer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <fruits>Des pommes-des poires-des scoubidous</fruits>
    En

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <tr>
      <td>Des pommes</td>
      <td>des poires</td>
      <td>des scoubidous</td>
    </tr>
    On peut faire :

    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:template match="fuits">
      <tr>
        <xsl:call-template name="liste-fruits">
          <xsl:with-param name="liste" select="."/>
        </xsl:call-template>
      </tr>
    </xsl:template>
     
    <xsl:template name="liste-fruits">
      <xsl:param name="liste"/>
      <xsl:choose>
        <xsl:when test="contains($liste, '-')">
          <td><xsl:value-of select="substring-before($liste, '-')"/></td>
          <xsl:call-template name="liste-fruits">
            <xsl:with-param name="liste" select="substring-after($liste, '-')"/>
          </xsl:call-template>
        </xsl:when>
        <xsl:otherwise>
          <td><xsl:value-of select="$liste"/></td>
        </xsl:otherwise>
      </xsl:choose>
    </xsl:template>
    Y a pas tellement plus simple, à moins que le moteur XSLT gère EXSLT ou les extensions natives...
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2015
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2015
    Messages : 3
    Par défaut
    Merci infiniment

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 04/07/2015, 22h46
  2. Réponses: 2
    Dernier message: 21/09/2009, 17h17
  3. Réponses: 1
    Dernier message: 20/04/2007, 14h10
  4. Réponses: 3
    Dernier message: 31/10/2006, 12h20
  5. Réponses: 1
    Dernier message: 14/05/2006, 19h52

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