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 :

Extraction balise en fonction d'une autre de même niveau [XPATH 1.0]


Sujet :

XSL/XSLT/XPATH XML

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 71
    Par défaut Extraction balise en fonction d'une autre de même niveau
    Bonjour,
    cas simple mais dont je n'arrive pas à trouver l'issue :

    fichier :
    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
     
    <PID.12.1>2 RUE DU REFUGE</PID.12.1>
    <PID.12.2/>
    <PID.12.3>PARIS</PID.12.3>
    <PID.12.4/>
    <PID.12.5>75005</PID.12.5>
    <PID.12.6>FRA</PID.12.6>
    <PID.12.7>H</PID.12.7>
    <PID.12.1/>
    <PID.12.2/>
    <PID.12.3>MARSEILLE</PID.12.3>
    <PID.12.4/>
    <PID.12.5>13001</PID.12.5>
    <PID.12.6>FRA</PID.12.6>
    <PID.12.7>BDL</PID.12.7>
    requête XPATH pour obtenir la valeur de PID.12.5 si PID.12.7 = 'F' :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    //PID.12.5[../PID.12.7/text()='H']/text()
    Merci de votre aide

  2. #2
    Modérateur

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    Hello,

    en même temps c'est complètement pourri comme format XML, il n'y a donc aucune raison que le problème soit "simple."

    Enfin, tu peux t'en sortir avec following::

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    //machin[following::truc[1] = 'Bidule']
    Les text() ne sont pas nécessaires.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 71
    Par défaut
    Pourri ou pas, c'est un fichier xmlisé par un EAI.

    En tout cas merci pour tout aide.
    ça marche

  4. #4
    Expert confirmé Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    Mars 2009
    Messages
    2 986
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Justicier interdimensionnel

    Informations forums :
    Inscription : Mars 2009
    Messages : 2 986
    Par défaut
    Attention à bien préciser l'item concerné ([1]) dans la condition pour être sûr de cibler uniquement l'élément PID.12.7 suivant (et pas celui à l'autre bout du fichier).

  5. #5
    Modérateur

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    Effectivement, merci.

    Vu que l'erreur est facile à faire et pas à voir, je modifie mon code pour la corriger.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 71
    Par défaut
    Bonjour,
    Autre question toujours sur ce même fichier : via XSLT, je voudrais modifier la valeur de PID.12.5 si PID.12.7='H'
    J'ai essayé ce code en passant en paramètre nom_Element =PID.12.5 et Valeur_Cible la valeur que je veux placer, mais ma condition est complètement ignorée : les deux balises PID.12.5 sont modifiées avec la valeur de Valeur_Cible passée en paramètre

    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
    <?xml version="1.0" encoding="iso-8859-1"?>
    <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
    	<xsl:output encoding="UTF-8" indent="yes" method="xml" version="1.0"/>
    	<xsl:param name="nomElement">Nom_Element</xsl:param>
    	<xsl:param name="valCible">Valeur Cible</xsl:param>
    	<xsl:template match="node() | @*">
    		<xsl:copy>
    			<xsl:choose>
    				<xsl:when test="name()=$nomElement">
    				<xsl:if test="//PID.12.7='H'"><xsl:value-of select="$valCible"></xsl:value-of></xsl:if></xsl:when>
    				<xsl:otherwise>
    					<xsl:apply-templates select="@* | node()"/>
    				</xsl:otherwise>	
    			</xsl:choose>
    		</xsl:copy>
    	</xsl:template>
    </xsl:stylesheet>

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

Discussions similaires

  1. Extraction d'une chaine en fonction d'une autre
    Par Erlen dans le forum Shell et commandes GNU
    Réponses: 16
    Dernier message: 19/04/2012, 15h26
  2. [MySQL] Liste déroulante en fonction d'une autre sur même page
    Par michel81 dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 08/11/2008, 11h41
  3. Probleme d'apel de fonction dans une autre classe
    Par freecell31 dans le forum MFC
    Réponses: 24
    Dernier message: 13/05/2006, 11h34
  4. Modifier la valeur d'un champ en fonction d'une autre...
    Par venividivici dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 25/08/2005, 14h28
  5. Contraite NULL sur une colonne en fonction d'une autre colon
    Par speedy1496 dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 25/04/2004, 19h29

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