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] enfants du noeud racine


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Membre à l'essai
    Inscrit en
    Avril 2004
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 23
    Points : 14
    Points
    14
    Par défaut [XSLT] enfants du noeud racine
    Bonjour, voila je dois recuperer els enfants du noeud racine pour pouvoir les encapsuler dans une autre balise, mais le resultat ne correspond pas a ce que j'attendais. si vous pouvez m'aider ce serait super! merci d'avance

    Voici le fichier a traiter:

    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
    <?xml version="1.0" encoding="ISO-8859-1"?>
    <rdf:RDF  
       xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#'
       xmlns:lv='http://www.inria.fr/acacia/2003/lv#'
       xmlns:rdfs='http://www.w3.org/2000/01/rdf-schema#'>
    <lv:SAMYG rdf:about='lv:SAMYG'>
       <rdfs:label>s</rdfs:label>
    	<lv:hasDoctor rdf:resource="Dr_EEEE_obstétricien|s|"/>
       <lv:Due_to>
          <lv:FIMP1 rdf:about='lv:FIMP1'>
             <rdfs:label>a</rdfs:label>
    	<lv:hasDoctor rdf:resource="Dr_EEEE_obstétricien|s|"/>
          </lv:FIMP1> 
       </lv:Due_to>
    </lv:SAMYG> 
    <lv:PKAPL rdf:about='lv:PKAPL'>
       <rdfs:label>p</rdfs:label>
    	<lv:hasDoctor rdf:resource="Dr_EEEE_obstétricien|s|"/>
    </lv:PKAPL> 
    </rdf:RDF>
    ici en loccurence jai deux noeuds enfants

    Voici ma transformation 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
    <?xml version="1.0" encoding="ISO-8859-1"?>
    <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:lv="http://www.inria.fr/acacia/2003/lv" 
        xmlns:xsd="http://www.w3.org/2001/XMLSchema#"
        version="1.0">
        <xsl:output method="xml" encoding="ISO-8859-1"/>
        <xsl:template match="/">
     
     
            <xsl:for-each select="/child::*">
               <xsl:text>&lt;lv:hasConcept&gt;</xsl:text>
                <xsl:copy-of select="node()"/>
     
                <xsl:text>&lt;/lv:hasConcept&gt;</xsl:text>
     
     
            </xsl:for-each>
     
        </xsl:template>
     
    </xsl:stylesheet>
    et voici le resultat :

    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="ISO-8859-1"?>&lt;lv:hasConcept&gt;
    <lv:SAMYG xmlns:lv="http://www.inria.fr/acacia/2003/lv#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#" rdf:about="lv:SAMYG">
     
       <rdfs:label>s</rdfs:label>
     
       <lv:hasDoctor rdf:resource="Dr_EEEE_obstétricien|s|"/>
     
       <lv:Due_to>
     
          <lv:FIMP1 rdf:about="lv:FIMP1">
     
             <rdfs:label>a</rdfs:label>
     
             <lv:hasDoctor rdf:resource="Dr_EEEE_obstétricien|s|"/>
     
          </lv:FIMP1> 
     
       </lv:Due_to>
     
    </lv:SAMYG> 
     
    <lv:PKAPL xmlns:lv="http://www.inria.fr/acacia/2003/lv#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#" rdf:about="lv:PKAPL">
     
       <rdfs:label>p</rdfs:label>
     
       <lv:hasDoctor rdf:resource="Dr_EEEE_obstétricien|s|"/>
     
    </lv:PKAPL> 
    &lt;/lv:hasConcept&gt;
    Alors que moi je voudrais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <lv:hasConcept>
    le noeud 
    </lv:hasConcept>
    <lv:hasConcept>
    le noeud
    </lv:hasConcept>
    etc

  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,

    Le résultat que tu recherches n'est pas correct : il faut un seul élément racine en sortie.

    Au fait, quand tu postes du code, utilise les balises [CODE] plutôt que gras et italique, merci.

  3. #3
    Membre à l'essai
    Inscrit en
    Avril 2004
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 23
    Points : 14
    Points
    14
    Par défaut
    C'est a dire? il fauudrait un truc d style :
    <root>
    <hasCOncept>
    ....
    </hasConcept>
    <hasCOncept>
    ....
    </hasConcept>
    </root>

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 34
    Points : 39
    Points
    39
    Par défaut
    Oui, pour que celà soit un fichier XML correct une balise racine est nécessaire.

    Voici le code que je propose pour résoudre ton problème :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <?xml version="1.0" encoding="ISO-8859-1"?>
    <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:lv="http://www.inria.fr/acacia/2003/lv" xmlns:xsd="http://www.w3.org/2001/XMLSchema#" version="1.0">
    	<xsl:output method="xml" encoding="ISO-8859-1"/>
    	<xsl:template match="/*">
    		<xsl:element name="root">
    			<xsl:for-each select="child::*">
    				<xsl:element name="hasConcept">
    					<xsl:copy-of select="node()"/>
    				</xsl:element>
    			</xsl:for-each>
    		</xsl:element>
    	</xsl:template>
    </xsl:stylesheet>
    NB : pour créer un nouveau tag en sortie il existe xsl:element qui est plus simple que d'écrire ses balises à la main

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 18/02/2011, 14h01
  2. XSLT retrouver des noeuds qui n'ont pas un enfant d'un certain type.
    Par Goldenkiller dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 25/08/2008, 11h25
  3. [XSLT] Transformer les noeuds enfants en attribut du premier noeud
    Par le_chomeur dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 22/02/2008, 13h57
  4. [XSLT] Nombre de noeuds enfants
    Par Oberown dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 03/10/2006, 16h58
  5. [JTreeTable] sans noeud racine
    Par seiryujay dans le forum Composants
    Réponses: 8
    Dernier message: 27/07/2005, 16h51

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