XSLT (opérations avancées) : Numérotation et ordonnancement

Numérotation d'une structure arborescente complexe

Structure complexe

Dans cet exercice, nous souhaitons gérer la numérotation d'un document possédant plusieurs divisions hiérarchiques (Document -> Sections ->Parties -> Sous-parties ->Figures).

XML source :

CTRL+C pour copier, CTRL+V pour coller
1
<?xml version="1.0" encoding="UTF-8"?>
2
<Document>
3
    <Section><titre>1ère section</titre>
4
        <Partie><titre>1ère partie - 1ère section</titre>
5
            <Sous-partie>
6
                <titre>1ère sous-partie - 1ère partie - 1ère section</titre>
7
                <figure>1ère figure du document</figure>
8
            </Sous-partie>
9
            <Sous-partie>
10
                <titre>2ème sous-partie - 1ère partie - 1ère section</titre>
11
            </Sous-partie>
12
            <Sous-partie>
13
                <titre>3ème sous-partie - 1ère partie - 1ère section</titre>
14
                <figure>2ème figure du document</figure>
15
                <figure>3ème figure du document</figure>
16
                <figure>4ème figure du document</figure>
17
            </Sous-partie>
18
        </Partie>
19
    </Section>
20
    <Section><titre>2ème section</titre>
21
        <Partie><titre>1ère partie - 2ème section</titre>
22
            <Sous-partie>
23
                <titre>1ère sous-partie - 1ère partie - 2ème section</titre>
24
            </Sous-partie>
25
            <Sous-partie>
26
                <titre>2ème sous-partie - 1ère partie - 2ème section</titre>
27
                <figure>5ème figure du document</figure>
28
            </Sous-partie>
29
            <Sous-partie>
30
                <titre>3ème sous-partie - 1ère partie - 2ème section</titre>
31
            </Sous-partie>
32
        </Partie>
33
        <Partie><titre>2ème partie - 2ème section</titre>
34
            <Sous-partie>
35
                <titre>1ère sous-partie - 2ème partie - 2ème section</titre>
36
                <figure>6ème figure du document</figure>
37
            </Sous-partie>
38
            <Sous-partie>
39
                <titre>2ème sous-partie - 2ème partie - 2ème section</titre>
40
            </Sous-partie>
41
            <Sous-partie>
42
                <titre>3ème sous-partie - 2ème partie - 2ème section</titre>
43
                <figure>7ème figure du document</figure>
44
                <figure>8ème figure du document</figure>
45
            </Sous-partie>
46
        </Partie>
47
    </Section>
48
</Document>
49
<?xml version="1.0" encoding="UTF-8"?>
<Document>
    <Section><titre>1ère section</titre>
        <Partie><titre>1ère partie - 1ère section</titre>
            <Sous-partie>
                <titre>1ère sous-partie - 1ère partie - 1ère section</titre>
                <figure>1ère figure du document</figure>
            </Sous-partie>
            <Sous-partie>
                <titre>2ème sous-partie - 1ère partie - 1ère section</titre>
            </Sous-partie>
            <Sous-partie>
                <titre>3ème sous-partie - 1ère partie - 1ère section</titre>
                <figure>2ème figure du document</figure>
                <figure>3ème figure du document</figure>
                <figure>4ème figure du document</figure>
            </Sous-partie>
        </Partie>
    </Section>
    <Section><titre>2ème section</titre>
        <Partie><titre>1ère partie - 2ème section</titre>
            <Sous-partie>
                <titre>1ère sous-partie - 1ère partie - 2ème section</titre>
            </Sous-partie>
            <Sous-partie>
                <titre>2ème sous-partie - 1ère partie - 2ème section</titre>
                <figure>5ème figure du document</figure>
            </Sous-partie>
            <Sous-partie>
                <titre>3ème sous-partie - 1ère partie - 2ème section</titre>
            </Sous-partie>
        </Partie>
        <Partie><titre>2ème partie - 2ème section</titre>
            <Sous-partie>
                <titre>1ère sous-partie - 2ème partie - 2ème section</titre>
                <figure>6ème figure du document</figure>
            </Sous-partie>
            <Sous-partie>
                <titre>2ème sous-partie - 2ème partie - 2ème section</titre>
            </Sous-partie>
            <Sous-partie>
                <titre>3ème sous-partie - 2ème partie - 2ème section</titre>
                <figure>7ème figure du document</figure>
                <figure>8ème figure du document</figure>
            </Sous-partie>
        </Partie>
    </Section>
</Document>

Résultat final attendu :

CTRL+C pour copier, CTRL+V pour coller
1
<?xml version="1.0" encoding="iso-8859-1"?>
2
    1 1ère section
3
        1.1 1ère partie - 1ère section
4
            
5
                1.1.1 1ère sous-partie - 1ère partie - 1ère section
6
                1 1ère figure du document
7
            
8
            
9
                1.1.2 2ème sous-partie - 1ère partie - 1ère section
10
            
11
            
12
                1.1.3 3ème sous-partie - 1ère partie - 1ère section
13
                2 2ème figure du document
14
                3 3ème figure du document
15
                4 4ème figure du document
16
            
17
        
18
    
19
    ii 2ème section
20
        ii.i 1ère partie - 2ème section
21
            
22
                ii.i.i 1ère sous-partie - 1ère partie - 2ème section
23
            
24
            
25
                ii.i.ii 2ème sous-partie - 1ère partie - 2ème section
26
                1 5ème figure du document
27
            
28
            
29
                ii.i.iii 3ème sous-partie - 1ère partie - 2ème section
30
            
31
        
32
        ii.ii 2ème partie - 2ème section
33
            
34
                ii.ii.i 1ère sous-partie - 2ème partie - 2ème section
35
                2 6ème figure du document
36
            
37
            
38
                ii.ii.ii 2ème sous-partie - 2ème partie - 2ème section
39
            
40
            
41
                ii.ii.iii 3ème sous-partie - 2ème partie - 2ème section
42
                3 7ème figure du document
43
                4 8ème figure du document
44
            
45
        
46
    
47
<?xml version="1.0" encoding="iso-8859-1"?>
    1 1ère section
        1.1 1ère partie - 1ère section
            
                1.1.1 1ère sous-partie - 1ère partie - 1ère section
                1 1ère figure du document
            
            
                1.1.2 2ème sous-partie - 1ère partie - 1ère section
            
            
                1.1.3 3ème sous-partie - 1ère partie - 1ère section
                2 2ème figure du document
                3 3ème figure du document
                4 4ème figure du document
            
        
    
    ii 2ème section
        ii.i 1ère partie - 2ème section
            
                ii.i.i 1ère sous-partie - 1ère partie - 2ème section
            
            
                ii.i.ii 2ème sous-partie - 1ère partie - 2ème section
                1 5ème figure du document
            
            
                ii.i.iii 3ème sous-partie - 1ère partie - 2ème section
            
        
        ii.ii 2ème partie - 2ème section
            
                ii.ii.i 1ère sous-partie - 2ème partie - 2ème section
                2 6ème figure du document
            
            
                ii.ii.ii 2ème sous-partie - 2ème partie - 2ème section
            
            
                ii.ii.iii 3ème sous-partie - 2ème partie - 2ème section
                3 7ème figure du document
                4 8ème figure du document
            
        
    

Question

Dans un premier temps, numérotez l'ensemble des titres du document (les figures ne doivent pas être numérotées).

Question

Faites en sorte que la numérotation de la deuxième section respecte un format différent (ici : romain).

Question

Numérotez les figures de sorte qu'on puisse dire qu'une figure est la n-ième du document.

Question

Finalement, on souhaite que la numérotation des figures recommence à chaque nouvelle section. Proposez une solution.

PrécédentPrécédentSuivantSuivant
AccueilAccueilImprimerImprimer Benoît Villain, Thibault Brocheton, Lucas Charrier, Félix Motot, 2013-2016 (Contributions : Stéphane Crozat, les étudiants de l'UTC) Paternité - Partage des Conditions Initiales à l'IdentiqueRéalisé avec Scenari (nouvelle fenêtre)