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 :

[XSLT] template pour tout sauf


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Membre éprouvé
    Inscrit en
    Septembre 2005
    Messages
    147
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 147
    Par défaut [XSLT] template pour tout sauf
    Bonjour,

    J'aimerai écrire une feuille de style qui génère du texte en sortie.
    Cette feuille de style doit concaténer les textes de toutes les balises sauf pour les balises choice qui contiennent un élément reg ou il faut alors ne mettre que le reg.

    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <persName>
    Mr le Comte <choice><orig>Fouce</orig><reg>Fouché</reg></choice> de <geoName>Paris</geoName></persName>
    doit être transformé en :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Mr le Comte Fouché de Paris
    Le problème c'est que ma feuille de style originale catpure toutes les balises avec match="*". Les autres templates sont ignorés, quelque soit leur ordre dans le document.

    Comment faut t'il faire ?

  2. #2
    Expert confirmé
    Avatar de GrandFather
    Inscrit en
    Mai 2004
    Messages
    4 587
    Détails du profil
    Informations personnelles :
    Âge : 55

    Informations forums :
    Inscription : Mai 2004
    Messages : 4 587
    Par défaut
    Bonjour,

    si j'ai bien saisi, cela devrait être possible avec ces 2 templates :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <xsl:template match="*">
      <xsl:apply-templates />
    </xsl:template>
    <xsl:template match="choice">
      <xsl:apply-templates select="reg" />
    </xsl:template>
    FAQ XML
    ------------
    « Le moyen le plus sûr de cacher aux autres les limites de son savoir est de ne jamais les dépasser »
    Giacomo Leopardi

  3. #3
    Membre éprouvé
    Inscrit en
    Septembre 2005
    Messages
    147
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 147
    Par défaut
    Merci pour ta réponse mais cela ne règle pas mon problème.
    En fait, j'utilise une template match="text()" pour afficher tous les textes.
    Ce n'est surement pas la bonne méthode.
    En effet, seule cette template est appliquée.

    Mon xslt :
    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
    <?xml version="1.0" encoding="ISO-8859-1"?>
    <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
    				xmlns:tei="http://www.tei-c.org/ns/1.0"
    				version="1.0">
    	<xsl:output method="text" encoding="UTF-8"/>
    	<xsl:template match="*">
    	  <xsl:apply-templates />
    	</xsl:template>
    	<xsl:template match="choice">
    	  <xsl:apply-templates select="reg" />
    	</xsl:template>
    	<xsl:template match="text()">
    	  <xsl:value-of select="." />
    	</xsl:template>
    </xsl:stylesheet>
    Source :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <address><addrLine><choice><orig>Arsenl</orig><reg>Arsenal</reg></choice></addrLine></address>
    Sortie :

  4. #4
    Membre émérite
    Profil pro
    Responsable Dev
    Inscrit en
    Décembre 2003
    Messages
    788
    Détails du profil
    Informations personnelles :
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Responsable Dev

    Informations forums :
    Inscription : Décembre 2003
    Messages : 788
    Par défaut
    et pourquoi tu n'utilises pas un template qui ne fait rien pour les choise contenant reg
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <xsl:template match="choise[.//reg]"/>
    ?
    a mon avis si tu ajoutes cela à ton code tout va fonctionner

Discussions similaires

  1. [WEB + CSS] Un template pour tout le site
    Par MaxLaMenaX dans le forum Développement Web en Java
    Réponses: 1
    Dernier message: 21/03/2011, 17h33
  2. [XSLT] Apply-templates tout sauf un
    Par cris83500 dans le forum XSL/XSLT/XPATH
    Réponses: 6
    Dernier message: 07/01/2011, 08h47
  3. [XSLT] Variable pour tout le fichier
    Par Mimoza dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 16/10/2007, 10h00
  4. Réponses: 1
    Dernier message: 10/01/2007, 21h52
  5. [XSLT] template unique pour 2 utilisations différentes
    Par sozie9372 dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 27/04/2006, 15h24

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