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 :

Suppression d'une balise avec condition


Sujet :

XSL/XSLT/XPATH XML

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Responsable d'un système d'information métier
    Inscrit en
    Mai 2019
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Responsable d'un système d'information métier
    Secteur : Santé

    Informations forums :
    Inscription : Mai 2019
    Messages : 5
    Par défaut Suppression d'une balise avec condition
    Bonjour,

    Je dois faire une transformation XSL et je n'en ai jamais fait auparavant.
    J'ai lu un peu le forum et le Web pour réussir a sortir un premier fichier, mais je ne sais pas comment ajouter une condition et donc je fais appel a vous.

    J'ai des fichiers qui contiennent un certain nombre d'acte (medicaux) qui est de la forme suivante :
    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
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    <?xml version="1.0" encoding="UTF-8"?>
    <evenementsServeurActes acquittementAttendu="oui" identifiantAttendu="non" version="2.00">
    	<evenementServeurActe>
    		<actesNGAP>
    			<acteNGAP action="création" executionDimancheJourFerie="non" executionNuit="non" facturable="oui" gratuit="non" porteeCle="l" valide="oui">
    				<identifiant>
    					<emetteur>275449488</emetteur>
    				</identifiant>
    				<lettreCle>FTPU</lettreCle>
    				<coefficient>1</coefficient>
    				<denombrement>1</denombrement>
    				<quantite>1</quantite>
    				<execute>
    					<date>2019-05-29</date>
    					<heure>12:00:00</heure>
    				</execute>
    				<prestataire>
    					<medecins>
    						<medecin lien="prsc">
    							<numeroAdeli>123456789</numeroAdeli>
    							<personne>
    								<nomUsuel>MEDECIN1</nomUsuel>
    								<prenoms>
    									<prenom>PrenomMed1</prenom>
    								</prenoms>
    							</personne>
    						</medecin>
    					</medecins>
    					<uniteFonctionnelle>
    						<code>5000</code>
    						<libelle>IMAGERIE MEDICALE</libelle>
    						<dictionnaire>r2i</dictionnaire>
    					</uniteFonctionnelle>
    				</prestataire>
    				<minorMajor>
    					<minoration>
    						<pourcentage>85</pourcentage>
    						<coefficient>0.85</coefficient>
    					</minoration>
    				</minorMajor>
    				<montant liberal="non">
    					<montantTotal>14.03</montantTotal>
    					<numeroForfaitTechnique>4141</numeroForfaitTechnique>
    					<numeroAgrementAppareil>83779</numeroAgrementAppareil>
    					<quantite>1</quantite>
    					<numeroFacture>1392541419</numeroFacture>
    				</montant>
    			</acteNGAP>
    		</actesNGAP>
    	</evenementServeurActe>
    </evenementsServeurActes>
    j'ai besoin pour les actes dont la balise 'lettreCle' est égale à FTPU ou IFTP de supprimer la balise 'pourcentage' avec sa valeur associé dans le cas ou elle est présente.

    J'ai donc écrit ma toute première transformation qui fonctionne correctement sur mes premiers tests :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    	<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="no"/>
    	<xsl:template match="node() | @*">
    		<xsl:copy>
    			<xsl:apply-templates select="@* | node()"/>
    		</xsl:copy>
    	</xsl:template>
    	<xsl:template match="//minorMajor/minoration/pourcentage" />
    </xsl:stylesheet>
    Mais je ne sais pas comment l'appliquer uniquement au balise 'lettreCle' égale à 'FTPU' ou 'IFTP'.

    Merci à ceux qui pourront me venir en 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,

    le plus simple est de se servir d'un prédicat :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <xsl:template match="//acteNGAP[lettreCle = 'FTPU' or lettreCle = 'IFTP']/minorMajor/minoration/pourcentage">
      <!-- volontairement vide -->
    </xsl:template>
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre Expert Avatar de tsuji
    Inscrit en
    Octobre 2011
    Messages
    1 558
    Détails du profil
    Informations forums :
    Inscription : Octobre 2011
    Messages : 1 558
    Par défaut
    Comme ça ?
    Code xslt : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <xsl:template match="pourcentage[
        normalize-space(preceding::lettreCle[1])='FTPU' 
        or
        normalize-space(preceding::lettreCle[1])='IFTP'
        ]"
    />
    Pour tester sur text(), plus que souvent, utiliser normalize-space() en plus rend le prédicat beaucoup plus solid, sinon pas toujours nécessaire.

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    Responsable d'un système d'information métier
    Inscrit en
    Mai 2019
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Responsable d'un système d'information métier
    Secteur : Santé

    Informations forums :
    Inscription : Mai 2019
    Messages : 5
    Par défaut
    Bonjour,

    Citation Envoyé par thelvin Voir le message
    le plus simple est de se servir d'un prédicat :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <xsl:template match="//acteNGAP[lettreCle = 'FTPU' or lettreCle = 'IFTP']/minorMajor/minoration/pourcentage">
      <!-- volontairement vide -->
    </xsl:template>
    Je viens de tester sur un lot de 400 actes et cela me semble parfaitement fonctionner.

    J'ose la question subsidiaire du néophite, si j'ai un second type de ligne à supprimer, il faut que je refasse une transformation et que je l'applique ensuite ou puis-je rajouter un "xsl:template match" à la suite du premier (après la balise fermante cela s'entend) ?

    Et le petit supplément pour finir, un bon bouquin ou site a conseiller pour maitriser le XSLT ?

    Merci,
    Bonne journée

  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
    Tu peux simplement rajouter un nouveau template.

    Hélas, je ne me souviens plus du titre du bouquin avec lequel j'ai appris. Je ne sais quoi dire comme ressource pour apprendre.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  6. #6
    Membre Expert Avatar de tsuji
    Inscrit en
    Octobre 2011
    Messages
    1 558
    Détails du profil
    Informations forums :
    Inscription : Octobre 2011
    Messages : 1 558
    Par défaut
    Et le petit supplément pour finir, un bon bouquin ou site a conseiller pour maitriser le XSLT ?
    Je peux avancer sans réserve
    1) Micheal Van Otegem, Sams Teach Yourself XSLT in 21 Days (1st Edition), Sams Publishing, 2002.
    2) Micheal Kay, XSLT 2.0 and XPath 2.0 Programmer's Reference (4th Edition), Wrox, 2008. (ou plus à jour, si il y en a)
    Le 1) peut vous surprise comme trop élémentaire, non, c'est même le meilleur à mon sens, pour le niveau et au delà.
    Et puis, je pense, si on veut, que ceci puisse être consulté avec profit pour certains
    3) Sal Mangano, XSLT Cookbook: Solutions and Examples for XML and XSLT Developers (2nd Edition), O'Reilly, 2005.
    Voilà !

  7. #7
    Nouveau membre du Club
    Homme Profil pro
    Responsable d'un système d'information métier
    Inscrit en
    Mai 2019
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Responsable d'un système d'information métier
    Secteur : Santé

    Informations forums :
    Inscription : Mai 2019
    Messages : 5
    Par défaut
    Citation Envoyé par tsuji Voir le message
    Je peux avancer sans réserve
    1) Micheal Van Otegem, Sams Teach Yourself XSLT in 21 Days (1st Edition), Sams Publishing, 2002.
    2) Micheal Kay, XSLT 2.0 and XPath 2.0 Programmer's Reference (4th Edition), Wrox, 2008. (ou plus à jour, si il y en a)
    Le 1) peut vous surprise comme trop élémentaire, non, c'est même le meilleur à mon sens, pour le niveau et au delà.
    Et puis, je pense, si on veut, que ceci puisse être consulté avec profit pour certains
    3) Sal Mangano, XSLT Cookbook: Solutions and Examples for XML and XSLT Developers (2nd Edition), O'Reilly, 2005.
    Voilà !
    Merci beaucoup pour ces références.
    Je vais chercher ça

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

Discussions similaires

  1. Suppression d'une ligne avec une condition
    Par étudiant11 dans le forum SAS Base
    Réponses: 4
    Dernier message: 04/03/2015, 12h11
  2. Afficher valeur d'une balise avec condition
    Par mejdi.mohamed dans le forum XSL/XSLT/XPATH
    Réponses: 7
    Dernier message: 26/02/2015, 11h25
  3. [JDOM] Insérer une balise dans une autre balise avec condition
    Par maya dans le forum Format d'échange (XML, JSON...)
    Réponses: 3
    Dernier message: 06/10/2009, 12h28
  4. Calculs dans une requete avec conditions multiples
    Par Sha1966 dans le forum Access
    Réponses: 3
    Dernier message: 13/01/2006, 15h18
  5. Réponses: 7
    Dernier message: 17/09/2005, 23h38

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