Salut , SVP 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?
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
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/>
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 :
Mais en XSLT 1.0, il n'y a pas moyen...
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>
La seule solution est d'utiliser un template nommé récursif.
Exemple : pour transformer
En
Code : Sélectionner tout - Visualiser dans une fenêtre à part <fruits>Des pommes-des poires-des scoubidous</fruits>
On peut faire :
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>
Y a pas tellement plus simple, à moins que le moteur XSLT gère EXSLT ou les extensions natives...
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>
N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager