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

  1. #1
    Candidat au 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
    Points : 3
    Points
    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 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    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
    Candidat au 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
    Points : 3
    Points
    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 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    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
    Candidat au 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
    Points : 3
    Points
    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