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

XSL/XSLT/XPATH XML Discussion :

Passage xml avec structure imbriquée en xml structure plate avec rupture [XSLT 2.0]


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 14
    Points : 15
    Points
    15
    Par défaut Passage xml avec structure imbriquée en xml structure plate avec rupture
    Bonjour,

    j'ai une transformation sur laquelle je sèche .

    J'ai la structure xml imbriqué suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <root>
    <p> blablabla1 <i>blabla1italique</i> suiteblalbla1</p>
    <p>blabla2 <i>blabla2italique</i> suiteblabla2<b>blabla2bold</b>resuiteblabla2</p>
    </root>
    la structure cible est la suivante :

    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
     
    <root>
    <p>
         <r>blablabla1</r>
         <i>blabla1italique</i>
         <r>suiteblalbla1</r>
    </p>
    <p>
        <r>blabla2 </r>
        <i>blabla2italique</i>
        <r>suiteblabla2</r>
        <b>blabla2bold</b>
        <r>resuiteblabla2</r>
    </p>
    </root>
    Malgré la simplicité de la demande , je sèche ! Quelqu'un a-t-il une idée ?

  2. #2
    Modérateur

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 552
    Points : 21 608
    Points
    21 608
    Par défaut
    En gros il faut repérer les nœuds textes qui sont directement sous les balises <p> et les encadrer de balises <r>, de sorte que les balises <p> ne contiennent plus de mixage texte/balises, mais seulement des balises.

    Tu devrais pouvoir t'en sortir avec ça :

    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
    <!-- Pour tous les éléments et tous les textes -->
    <xsl:template match="node()">
      <!-- les éléments : copier la balise et appliquer la transformation à son contenu. Les textes : les recopier tels que. -->
      <xsl:copy>
        <xsl:apply-templates/>
      </xsl:copy>
    </xsl:template>
     
    <!-- Cas particulier pour les textes enfants de <p> -->
    <xsl:template match="p/text()">
      <!-- recopier avec des <r> autour -->
      <r>
        <xsl:copy/>
      </r>
    </xsl:template>
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 14
    Points : 15
    Points
    15
    Par défaut
    merci pour ta réponse.
    En fait la nuit a porté conseil ... et j'ai aussi trouvé de mon coté ...

    En revenant au fondamental :Qu'est-ce que le XML ... tout noeud est constitué lui-même de noeud ...

    voici mon xsl

    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
     
    	<xsl:template match="/root">
    	<root>
    	<xsl:apply-templates/>
    	</root>
    	</xsl:template>
    	<xsl:template match="p">
    	<p>
    	<xsl:for-each select="./node()">
    	<xsl:choose>
    		<xsl:when test="name()='b'"><b><xsl:value-of select="."/></b></xsl:when>
    		<xsl:when test="name()='i'"><i><xsl:value-of select="."/></i></xsl:when>
    		<xsl:otherwise><r><xsl:value-of select="."/></r></xsl:otherwise>
    	</xsl:choose>
     
    	</xsl:for-each>
    	</p>
    	</xsl:template>
    </xsl:stylesheet>

  4. #4
    Modérateur

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 552
    Points : 21 608
    Points
    21 608
    Par défaut
    Félicitations .

    Je continue de penser que ma version se disperse moins et s'intéresse plus à résoudre le problème et rien d'autre -_-°.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

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

Discussions similaires

  1. Structure imbriqué dans une structure
    Par beb1982 dans le forum Débuter
    Réponses: 7
    Dernier message: 08/08/2007, 16h27
  2. [Structure] Structure d'index XML
    Par copin dans le forum XML/XSL et SOAP
    Réponses: 3
    Dernier message: 16/01/2007, 14h21
  3. [Conseils] Structure d'un XML de sérialization ?
    Par jbat dans le forum XML/XSL et SOAP
    Réponses: 3
    Dernier message: 13/07/2006, 18h03
  4. [DOM] Retourner la structure d'un XML
    Par mavvv dans le forum Format d'échange (XML, JSON...)
    Réponses: 1
    Dernier message: 08/02/2006, 16h51
  5. Transformation d'une structure(définie en xml) en formulaire
    Par boniface dans le forum XML/XSL et SOAP
    Réponses: 1
    Dernier message: 06/07/2005, 07h39

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