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] Elaguer des noeuds en fonction des petits-fils


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 13
    Points : 7
    Points
    7
    Par défaut [XSLT] Elaguer des noeuds en fonction des petits-fils
    Bonjour à tous,

    je possède un fichier xml du type :

    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
    <?xml version="1.0" encoding="utf-8"?>
    <A xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
      <B1>
        <C1>xx</C1>
        <C2>yy</C2>
      </B1>
      <B2>
        <C3>dsfhizu</C3>
        <C4>
          <D1>zoibvd</D1>
          <D2>0</D2>
        </C4>
      </B2>
      <B2>
        <C3>ii</C3>
        <C4>
          <D1>fazoifbvza</D1>
          <D2>0</D2>
        </C4>
      </B2>
      <B2>
        <C3>mliohszaz</C3>
        <C4>
          <D1>cvkjbsdhzpz</D1>
          <D2>1</D2>
        </C4>
      </B2>
    </A>
    Et je souhaiterais enlever tous les éléments B2 pour lesquels la balise D2 est à 1, et garder le reste des informations identiques.

    J'ai un peu de mal à trouver la syntaxe XSL correspondante. Si quelqu'un pouvait m'aiguiller...

    Merci d'avance !

  2. #2
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 13
    Points : 7
    Points
    7
    Par défaut
    J'ai essayé comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output method="xml" indent="yes"/>
    <xsl:strip-space elements="*"/>
    <xsl:template match="/">
      <xsl:element name="A">
      <xsl:for-each select="/A/B1">
        <xsl:copy-of select="."/>
      </xsl:for-each>
      <xsl:for-each select="/A/B2[C4/D2=0]">
        <xsl:copy-of select="."/>
      </xsl:for-each>
      </xsl:element>
    </xsl:template>
    </xsl:stylesheet>
    Mais le namespace se met alors sur les éléments B1 et B2 au lieu de se mettre sur A...

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Février 2009
    Messages
    155
    Détails du profil
    Informations personnelles :
    Localisation : France, Indre et Loire (Centre)

    Informations forums :
    Inscription : Février 2009
    Messages : 155
    Points : 231
    Points
    231
    Par défaut
    Bonjour,

    Essaye ça :
    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="UTF-8"?>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    	<xsl:output method="xml" indent="yes"/>
    	<xsl:strip-space elements="*"/>
     
    	<xsl:template match="//B2[*/D2=1]">
    	</xsl:template>
     
    	<!-- recopie tout -->
    	<xsl:template match="child::node() | attribute::*" priority="-10">
    		<xsl:copy>
    			<xsl:apply-templates select="attribute::*" />
    			<xsl:apply-templates select="child::node()" />
    		</xsl:copy>
    	</xsl:template>
     
    </xsl:stylesheet>

Discussions similaires

  1. XSLT - Trier/regrouper des noeuds en fonction de leur position
    Par Rackamm dans le forum XSL/XSLT/XPATH
    Réponses: 6
    Dernier message: 10/03/2014, 15h58
  2. Treview et noeuds en fonction des utilisateurs
    Par Michelk12 dans le forum ASP.NET
    Réponses: 2
    Dernier message: 30/10/2007, 09h52
  3. Recherche des enregistrements en fonction des paramètres
    Par infoctet dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 10/01/2007, 09h51
  4. conception des liste en fonction des piles
    Par sino dans le forum C++Builder
    Réponses: 4
    Dernier message: 15/06/2006, 21h08
  5. sélection des bd en fonction des utilisateurs (pg_hba.conf)
    Par Bouboubou dans le forum PostgreSQL
    Réponses: 9
    Dernier message: 18/03/2004, 18h34

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