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 :

transformation XML XSLT


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    août 2012
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : août 2012
    Messages : 12
    Points : 7
    Points
    7
    Par défaut transformation XML XSLT
    Bonjour

    J'ai un code XML suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <string>
      <substringss>abcd</substringss>
      <substringss>efgh</substringss>
      <substringss>ijkl</substringss>
    </string>
    et je voudrais ce résultat :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <string>
    <substringss>aabbccdd</substringss>
      <substringss>eeffgghh</substringss>
      <substringss>iijjkkll</substringss>
      <substringss>aabbccdd</substringss>
      <substringss>eeffgghh</substringss>
      <substringss>iijjkkll</substringss>
    </string>
    Si quelqu'un peut m'aider !
    Merci

  2. #2
    Modérateur

    Profil pro
    Inscrit en
    septembre 2004
    Messages
    11 815
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : septembre 2004
    Messages : 11 815
    Points : 20 038
    Points
    20 038
    Par défaut
    Hello,

    il y a plusieurs approches. En voici une.

    pour répéter les éléments deux fois :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
        <xsl:template match="/*">
            <xsl:copy> <!-- copier la racine -->
                <xsl:apply-templates/> <!-- Traiter son contenu deux fois à l'identique -->
                <xsl:apply-templates/>
            </xsl:copy>
        </xsl:template>
     
        <xsl:template match="substringss">
            <xsl:copy> <!-- juste copier l'élément et son contenu -->
                <xsl:value-of select="."/>
            </xsl:copy>
        </xsl:template>
    Pour doubler les lettres des éléments <substringss>, remplacer le template par ceci :

    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
     
        <xsl:template match="substringss">
            <xsl:copy>
                <xsl:call-template name="doubler-lettres"/>
            </xsl:copy>
        </xsl:template>
     
        <!-- template nommé récursif. Un appel écrit une lettre deux fois, puis fait un nouvel appel pour la lettre suivante -->
        <xsl:template name="doubler-lettres">
            <xsl:param name="index" select="1"/> <!-- les strings commencent à l'index 1. Quand on appelle sans préciser on choisit 1 pour doubler la string entière -->
     
            <xsl:if test="string-length(.) >= $index"> <!-- on ne continue le traitement que tant qu'on a pas dépassé la taille de la string -->
                <xsl:variable name="lettre" select="substring(., $index, 1)"/>
                <xsl:value-of select="$lettre"/>
                <xsl:value-of select="$lettre"/>
                <xsl:call-template name="doubler-lettres">
                    <xsl:with-param name="index" select="$index+1"/>
                </xsl:call-template>
            </xsl:if>
        </xsl:template>
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    août 2012
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : août 2012
    Messages : 12
    Points : 7
    Points
    7
    Par défaut
    Merci beaucoup !

    Je bloquais sur cette partie là :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <xsl:if test="string-length(.) >= $index"> <!-- on ne continue le traitement que tant qu'on a pas dépassé la taille de la string -->
          <xsl:variable name="lettre" select="substring(., $index, 1)"/>

Discussions similaires

  1. Transformation XML - XSLT
    Par mOscar007 dans le forum XML/XSL et SOAP
    Réponses: 2
    Dernier message: 06/03/2015, 20h59
  2. Transformation XML - XSLT
    Par mOscar007 dans le forum XML/XSL et SOAP
    Réponses: 6
    Dernier message: 06/03/2015, 18h08
  3. Transformation XML/XSLT: Problème avec le &
    Par bobic dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 26/01/2009, 17h16
  4. [XSLT] transformation XML->XML en php
    Par amellouki dans le forum XSL/XSLT/XPATH
    Réponses: 5
    Dernier message: 03/03/2005, 12h32
  5. [XSLT] [XML->HTML] transformation XML -> HTML via XSL
    Par Great Sayaman dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 11/12/2004, 22h12

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