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 :

Comment reconnaitre le vrai parent ? [XSLT 1.0]


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Août 2009
    Messages
    186
    Détails du profil
    Informations personnelles :
    Âge : 60
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 186
    Points : 80
    Points
    80
    Par défaut Comment reconnaitre le vrai parent ?
    Bonjour,
    Je viens vous exposer ma situation présente :
    * Je voudrais, à travers un test, détecter si la balise parent (ici : "<r code="111" t="titre1">") est de type <regroupement>...
    Bon, dans le cas présent, comme vous pouvez le constater, c'est un <r> (donc, selon "ma" théorie, le message proposé ne devrait pas apparaitre... Eh bien si !)

    * 1 - Comment se fait-il donc que, ici, le test en vienne à détecter un <regroupement> ? (En fait, c'est le <regroupement> "frère du parent" qui est détecté ici)
    * 2 - Comment faire pour que le test porte vraiment sur le vrai parent ?

    En vous remerciant par avance pour toute suggestion de votre part... et pour votre intérêt !

    Fichier XML:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <?xml version="1.0" encoding="UTF-8"?>
     
    <enregistrements>
     
    	<r code="111" t="titre1">
    		<r code="333" t="Titre recherché"/>
    	</r>
    	<regroupement code="222">titre2
    	</regroupement>
     
    </enregistrements>

    Fichier 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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
     
    <xsl:output method="html" 
    encoding="utf-8" 
    doctype-public="-//W3C//DTD HTML 4.01 Transitional//EN" 
    doctype-system="http://www.w3.org/TR/html4/loose.dtd"/>
     
    <xsl:template match="/">
     
    	<html>
    	<head>
    	<title></title>
    	</head>
    	<body bgcolor="#FFFFFF">
     
    	<xsl:apply-templates select="//r[@code='333']" />
     
    	</body>
    	</html>
     
    </xsl:template>
     
    <xsl:template match="r">
     
    	<!-- <xsl:if test="parent::*/parent::*/regroupement"> -->
    	<xsl:if test="../../regroupement">
     
    		<span id="Titre1">
    			regroupement détecté... Pourquoi ?
    		</span>
     
    	</xsl:if>
     
    </xsl:template>
    </xsl:stylesheet>

  2. #2
    Membre émérite Avatar de tsuji
    Inscrit en
    Octobre 2011
    Messages
    1 558
    Détails du profil
    Informations forums :
    Inscription : Octobre 2011
    Messages : 1 558
    Points : 2 736
    Points
    2 736
    Par défaut
    <xsl:if test="../../regroupement">
    Ceci veut dire le grand-parent du noede en contexte a une balise regroupement comme son enfant: ce qui est litéralement vrai mais ce n'est pas un teste pertinent.

    Pour tester si son parent est un r aussi, c'est fait comme ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <xsl:if test="parent::r">
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <xsl:if test="parent::*[name()='r']">
    ou encore des variants possibles.

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Août 2009
    Messages
    186
    Détails du profil
    Informations personnelles :
    Âge : 60
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 186
    Points : 80
    Points
    80
    Par défaut
    Bonsoir Tsuji,
    Selon ta suggestion, je viens de remplacer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <xsl:if test="../../regroupement">
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <xsl:if test="parent::*[name()='r']">
    mais le message "regroupement détecté..." s'affiche toujours !
    -> Est-ce que quelqu'un pourrait faire le test de mon code, de son coté, pour me dire ce qu'il en pense ? (en utilisant par exemple cette page-test)

    en vous remerciant !

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Août 2009
    Messages
    186
    Détails du profil
    Informations personnelles :
    Âge : 60
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 186
    Points : 80
    Points
    80
    Par défaut
    Euh, très peu pour moi... en fait, il me faut mettre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <xsl:if test="parent::*[name()='regroupement']">
    Hum, passons !
    Je fais quelques essais... et je reviens !

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Août 2009
    Messages
    186
    Détails du profil
    Informations personnelles :
    Âge : 60
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 186
    Points : 80
    Points
    80
    Par défaut
    Bon eh bien c'est cool tout cela... Effectivement, en rectifiant le code, ça marche super ! Grand Merci à toi !

    Bonne continuation !

    Ps :Rézolu !

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

Discussions similaires

  1. Comment savoir le menu parent d'un menuItem?
    Par bellout dans le forum AWT/Swing
    Réponses: 11
    Dernier message: 21/03/2006, 19h27
  2. Comment reconnaitre l'encodage d'un fichier à l'ouverture
    Par Kczav dans le forum Général Python
    Réponses: 3
    Dernier message: 03/01/2006, 09h32
  3. Comment reconnaitre un fichier texte
    Par Shin no Noir dans le forum C
    Réponses: 11
    Dernier message: 19/12/2005, 22h13
  4. Comment avoir des fenêtres parentes et enfants
    Par Invité dans le forum Agents de placement/Fenêtres
    Réponses: 6
    Dernier message: 20/09/2005, 12h53
  5. Comment reloader la frame parent?
    Par mythtvtalk.com dans le forum ASP
    Réponses: 3
    Dernier message: 27/08/2003, 12h40

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