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 :

Besoin astuce : application recursive


Sujet :

XSL/XSLT/XPATH XML

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Juillet 2007
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 39
    Par défaut Besoin astuce : application recursive
    Bonjour,

    Mon but est d'écrire dans mon fichier XML des balises HTML, pour qu'elles soient ensuite interprétées par mon brower.

    Mon fichier XML ressemblerait à :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <text>
         Ceci est un <b>texte</b> qui provient du <u><i><b>fichier XML</b></i></u> que je voudrais presque recopier sauf qu'il y a des balises <tag>etrangeres</tag> à interpréter au milieu...
    </text>
    Je n'arrive pas à écrire le XSL qui gère la récursivité des balises : cela marche sur les balises de premier niveau, mais pas lorsqu'elles sont imbriquées.

    Pourriez vous m'aider ? Merci

  2. #2
    Membre Expert Avatar de alain.couthures
    Profil pro
    Gérant
    Inscrit en
    Avril 2007
    Messages
    902
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Gérant

    Informations forums :
    Inscription : Avril 2007
    Messages : 902
    Par défaut
    La profondeur variable d'éléments se gère en XSLT au moyen de templates que l'on déclenche à un niveau par un ordre <xsl:apply-templates>

  3. #3
    Membre averti
    Inscrit en
    Juillet 2007
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 39
    Par défaut
    Le problème qu'il y a c'est que je dois appliquer les templates dans l'ordre où ils apparaissent à l'endroit où ils apparaissent comme dans l'exemple ci dessus

  4. #4
    Membre Expert
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    1 466
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 466
    Par défaut
    un <xsl:apply-templates select="*"> déclanchera les templates définis dans le xsl-t dans l'ordre d'apparition dans le xml source.
    Si chaque template fait lui même des apply-templates, pas de pb de récursivité.

  5. #5
    Membre averti
    Inscrit en
    Juillet 2007
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 39
    Par défaut
    oui mais le problème qu'il y a est que je voudrais appliquer des <xsl:value-of select="."/> au milieu sans savoir quand je dois les mettre et quand je dois faire des apply-templates...

    tu comprends ?

    <xsl:apply-templates select="*"/> applique effectivement tous les templates dans leur ordre d'apparition mais il me manque la possibilité de juste recopier le contenu.

    une idée ?

  6. #6
    Membre Expert
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    1 466
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 466
    Par défaut
    Bon voila un xsl qui recopie la source xml en entrée :
    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
    23
    24
    25
    <?xml version="1.0" encoding="UTF-8"?>
    <xsl:stylesheet version="1.0" 
    	xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
    	>
    	
    	<xsl:template match="/"> 
    		<xsl:copy> 
    			<xsl:apply-templates select="comment() | processing-instruction() | * | comment() | text()"/> 
    		</xsl:copy>		
    	</xsl:template>
    
           <xsl:template match="toto"> 
    		<titi> 
    			<xsl:value-of select="."/> 
    		<titi>		
    	</xsl:template>
    	
    			
    	<xsl:template match="@* | * | comment() | processing-instruction() | text()"> 
    		<xsl:copy> 
    			<xsl:apply-templates select="@* | * | comment() | processing-instruction() | text()"/> 
    		</xsl:copy> 
    	</xsl:template> 
      
     </xsl:stylesheet>
    La partie en gras, prendra la priorité sur la recopie et changera toute balise "toto" en "titi" contenant éventuellement du texte, et cela, quelque soit son niveau dans le xml source.

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

Discussions similaires

  1. [VB6]besoin d'aide pour modifier une application
    Par mister perfect dans le forum VB 6 et antérieur
    Réponses: 18
    Dernier message: 19/05/2006, 11h46
  2. Réponses: 19
    Dernier message: 10/05/2006, 09h40
  3. Besoin de conseils sur une application
    Par Jim_Nastiq dans le forum Langage
    Réponses: 12
    Dernier message: 12/04/2006, 12h43
  4. Application à réparer... besoin d'infos...
    Par charleshbo dans le forum Access
    Réponses: 6
    Dernier message: 17/03/2006, 07h09
  5. Besoin de conseils pour une application
    Par peredodu dans le forum Access
    Réponses: 9
    Dernier message: 05/03/2006, 11h18

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