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 :

Numéroter une arborescence profonde [XSLT 1.0]


Sujet :

XSL/XSLT/XPATH XML

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Invité
    Invité(e)
    Par défaut Numéroter une arborescence profonde
    Bonjour à tous,

    Pardonnez-moi si je pose une question qui a déjà été posée, cependant je n'arrive pas à adapter les éléments de réponses à mon problème

    Je voudrais pouvoir numéroter une arborescence de dossiers du style :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    section
      sous-section
      sous-section
        sous-sous-section
        sous-sous-section
          sous-sous-sous-section
            sous-sous-sous-sous-section
            sous-sous-sous-sous-section
        sous-sous-section
    section
    de façon à obtenir :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    1.section
      1.1.sous-section
      1.2.sous-section
        1.2.1.sous-sous-section
        1.2.2.sous-sous-section
          1.2.2.1.sous-sous-sous-section
            1.2.2.1.1.sous-sous-sous-sous-section
            1.2.2.1.2.sous-sous-sous-sous-section
        1.2.3.sous-sous-section
    2.section
    J'ai bien repéré "xsl:number" mais je n'arrive pas à faire descendre la numérotation suffisament profondément dans l'arborescence.

    Je ne suis pas à l'aise du tout avec XML et XSLT et j'ai du mal à comprendre la syntaxe de "xsl:number".

    De plus, je ne sais pas ce qui serait le plus judicieux dans le fichier XML. Utiliser des balises comme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <niveau1>section</niveau1>
      <niveau2>sous-section<niveau2>
      <niveau2>sous-section<niveau2>
    etc...
    Ou des paramètres :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <niveau profondeur="1">section</niveau>
      <niveau profondeur="2">sous-section</niveau>
      <niveau profondeur="2">sous-section</niveau>
    etc...
    Quelqu'un pourrait-il me mettre sur la voie ?

    Merci d'avance et excellente année à tous

    Marc
    Dernière modification par Erwy ; 27/01/2011 à 09h11.

  2. #2
    Rédacteur

    Avatar de Erwy
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2003
    Messages
    4 967
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2003
    Messages : 4 967
    Par défaut
    Citation Envoyé par marc93 Voir le message

    De plus, je ne sais pas ce qui serait le plus judicieux dans le fichier XML. Utiliser des balises comme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <niveau1>section</niveau1>
      <niveau2>sous-section<niveau2>
      <niveau2>sous-section<niveau2>
    etc...
    Ou des paramètres :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <niveau profondeur="1">section</niveau>
      <niveau profondeur="2">sous-section</niveau>
      <niveau profondeur="2">sous-section</niveau>
    etc...
    La solution 1 est pire que la 2 mais si c'est juste pour de la numérotation elles sont aussi inutiles l'une que l'autre
    voir :
    Modélisation de XML : choix de structures pour la représentation des données

    Un exemple d'utilisation de xsl:number

    le xml
    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
    <?xml version="1.0" encoding="UTF-8"?>
    <a>
    	<a>
    		<a>e</a>
    		<a>z</a>
    		<a>
    			<a>t</a>
    			<a>
    				<a>i</a>
    				<a>o</a>
    			</a>
    		</a>
    	</a>
    	<a>z</a>
    </a>
    le XSLT
    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
    <?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" version="1.0" encoding="UTF-8" indent="yes"/>
    	<xsl:template match="/">
    		<xsl:apply-templates select="*"/>
    	</xsl:template>
    	<xsl:template match="*">
    		<xsl:copy>
    		<xsl:attribute name="niveau"><xsl:number    format="1" grouping-separator="." level="multiple" count="a"/></xsl:attribute>
    			<xsl:apply-templates select="node()"/>
    		</xsl:copy>
    	</xsl:template>
    	<xsl:template match="text()">
    		<xsl:value-of select="."/>
    	</xsl:template>
    </xsl:stylesheet>
    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
    <?xml version="1.0" encoding="UTF-8"?>
    <a niveau="1">
    	<a niveau="1.1">
    		<a niveau="1.1.1">e</a>
    		<a niveau="1.1.2">z</a>
    		<a niveau="1.1.3">
    			<a niveau="1.1.3.1">t</a>
    			<a niveau="1.1.3.2">
    				<a niveau="1.1.3.2.1">i</a>
    				<a niveau="1.1.3.2.2">o</a>
    			</a>
    		</a>
    	</a>
    	<a niveau="1.2">z</a>
    </a>

  3. #3
    Invité
    Invité(e)
    Par défaut
    Merci pour ta réponse Erwy.

    Je suis désolé mais lorsque j'essaye ton fichier XML avec la feuille de style XSLT, je n'obtiens que :

    e z t i o z

    dans le navigateur (sans aucune numérotation).

    Je ne comprends pas non plus ce que tu entends par résultat :
    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
     
    <?xml version="1.0" encoding="UTF-8"?>
    <a niveau="1">
    	<a niveau="1.1">
    		<a niveau="1.1.1">e</a>
    		<a niveau="1.1.2">z</a>
    		<a niveau="1.1.3">
    			<a niveau="1.1.3.1">t</a>
    			<a niveau="1.1.3.2">
    				<a niveau="1.1.3.2.1">i</a>
    				<a niveau="1.1.3.2.2">o</a>
    			</a>
    		</a>
    	</a>
    	<a niveau="1.2">z</a>
    </a>
    Tout ce dont j'aurai besoin c'est juste de partir d'un fichier XML contenant quelque chose comme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    section
      sous-section
      sous-section
        sous-sous-section
        sous-sous-section
          sous-sous-sous-section
            sous-sous-sous-sous-section
            sous-sous-sous-sous-section
        sous-sous-section
    section
    qui, après traitement via XSLT, donnerait quelque chose comme celà dans un navigateur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    1.section
      1.1.sous-section
      1.2.sous-section
        1.2.1.sous-sous-section
        1.2.2.sous-sous-section
          1.2.2.1.sous-sous-sous-section
            1.2.2.1.1.sous-sous-sous-sous-section
            1.2.2.1.2.sous-sous-sous-sous-section
        1.2.3.sous-sous-section
    2.section
    Encore merci Erwy d'avoir pris le temps de me répondre...

    Marc

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

Discussions similaires

  1. Copier certains fichiers d'une arborescence ?
    Par narmataru dans le forum Linux
    Réponses: 4
    Dernier message: 27/04/2004, 12h15
  2. Suppression d'item dans une arborescence
    Par jonzuzu dans le forum MFC
    Réponses: 2
    Dernier message: 24/02/2004, 17h45
  3. Remonter une arborescence
    Par Gwipi dans le forum Requêtes
    Réponses: 4
    Dernier message: 26/11/2003, 18h04
  4. [VB6] parcourir une arborescence de repertoire
    Par pecheur dans le forum VB 6 et antérieur
    Réponses: 8
    Dernier message: 30/04/2003, 17h33
  5. créer une arborescence windows sous forme d'arbre java
    Par chupachoc dans le forum Composants
    Réponses: 3
    Dernier message: 01/10/2002, 16h48

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