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 :

[XSL]Fonction pour Path [FAQ]


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 66
    Points : 51
    Points
    51
    Par défaut [XSL]Fonction pour Path
    Bonjour à tous

    Bin comme l'explique à moitier mon titre, je voudrai savoir si quelqu'un sait s'il existe une fonction qui retourne le Path de l'élément courant...

    Par exemple : (le xml)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    <test>
      <oui>
        OK
      </oui>
      <oui>
        DAC
      </oui>
      <oui>
         Biensur
      </oui>
    </test>

    Si je suis dans le 2ème <oui>, je cherche une fonction qui me retournerai /test/oui[2]
    Je suis à l'écoute.
    Merci
    --
    Zep3k!GnO

    On est des rangers mec, des rangers...

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

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

    la fonction, il faut l'écrire en 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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    <?xml version="1.0" encoding="UTF-8"?>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
     
    	<xsl:output method="text"/>
     
    	<xsl:template match="/">
    		<xsl:call-template name="affiche-xpath">
    			<xsl:with-param name="element" select="test/oui[2]"/>
    		</xsl:call-template>
    	</xsl:template>
     
    	<xsl:template name="affiche-xpath">
    		<xsl:param name="element"/>
    		<xsl:param name="xpath"/>
    		<xsl:choose>
    			<xsl:when test="$element/parent::node()">
    				<!-- Détermination du rang -->
    				<xsl:variable name="rang" select="count($element/preceding-sibling::*[name() = name($element)]) + 1"/>
    				<xsl:call-template name="affiche-xpath">
    					<xsl:with-param name="element" select="$element/parent::*"/>
    					<xsl:with-param name="xpath">
    						<xsl:value-of select="concat('/', name($element))"/>
    						<xsl:if test="$rang &gt; 1">
    							<xsl:value-of select="concat('[', $rang, ']')"/>
    						</xsl:if>
    						<xsl:value-of select="$xpath"/>
    					</xsl:with-param> 
    				</xsl:call-template>
    			</xsl:when>
    			<xsl:otherwise>
    				<xsl:value-of select="$xpath"/>
    			</xsl:otherwise>
    		</xsl:choose>
    	</xsl:template>
     
    </xsl:stylesheet>
    Cette fonction n'est pas assez générique pour afficher un chemin pour n'importe quel type de noeud, elle ne fonctionne que pour les éléments.
    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 du Club
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 66
    Points : 51
    Points
    51
    Par défaut
    Yep, SUPER, MERCI
    Je teste ca dès que j'ai terminé mon xsl en cours...
    En tous cas c'est sympa de ta part d'avoir pris du temps pour me faire partager ta fonction...
    J'avais vraiment pas pensé à le faire en xsl, je pensai au pire le faire avec un javascript grace à DOM, mais ta fonction à l'air tout à fait de ce que je cherche.
    Si j'ai un soucis j'te dirai..
    Encore merci

    Zep3k!GnO
    On est des rangers mec, des rangers...

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 66
    Points : 51
    Points
    51
    Par défaut
    Je viens de tester ta fonction et...<sound_effect>roulement de tambour</sound_effect>
    Ca fonctionne carrément top moumoute !
    J'ai réadapté un ou 2 trucs pour mes besoins mais ca marche nickel !
    alors encore MERCI.

    Zep3k!GnO
    On est de srangers mec, des rangers....

    P.s: sans vouloir faire de trop, mais c'est vachement bien écrit, j'comprend pourquoi t'es modo

    ++

Discussions similaires

  1. débutante : problème pour path fonction créée
    Par mainak29 dans le forum Octave
    Réponses: 0
    Dernier message: 01/03/2011, 06h22
  2. Réponses: 4
    Dernier message: 03/03/2008, 13h30
  3. [XSL-FO] xml vers xsl-fo (pour generation PDF ou RTF)
    Par dams50 dans le forum XSL/XSLT/XPATH
    Réponses: 5
    Dernier message: 13/12/2003, 21h07
  4. Détourner une fonction pour copier un fichier en mémoire
    Par Rodrigue dans le forum C++Builder
    Réponses: 6
    Dernier message: 12/11/2003, 08h29
  5. Fonction pour récuperer mon adresse IP
    Par néo333 dans le forum Web & réseau
    Réponses: 11
    Dernier message: 01/11/2003, 17h35

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