Soit le schéma S1 ci-après.

CTRL+C pour copier, CTRL+V pour coller
1
<?xml version="1.0" encoding="UTF-8"?>
2
<grammar xmlns="http://relaxng.org/ns/structure/1.0" ns="http://utc.fr/nf29/S1">
3
    <start>
4
        <element name="book">
5
            <optional>
6
                <element name="info">
7
                    <element name="title">
8
                        <text/>
9
                    </element>
10
                    <optional>
11
                        <element name="author">
12
                            <element name="email">
13
                                <text/>
14
                            </element>
15
                        </element>
16
                    </optional>
17
                </element>
18
            </optional>
19
            <oneOrMore>
20
                <element name="part">
21
                    <ref name="Title"/>
22
                    <choice>
23
                        <ref name="Text"/>
24
                        <oneOrMore>
25
                            <element name="chapter">
26
                                <ref name="Title"/>
27
                                <ref name="Text"/>
28
                            </element>
29
                        </oneOrMore>
30
                    </choice>
31
                </element>
32
            </oneOrMore>
33
        </element>
34
    </start>
35
    <define name="Title">
36
        <element name="title">
37
            <text/>
38
        </element>
39
        <optional>
40
            <element name="subtitle">
41
                <text/>
42
            </element>
43
        </optional>
44
    </define>
45
    <define name="Text">
46
        <oneOrMore>
47
            <element name="para">
48
                <text/>
49
            </element>
50
        </oneOrMore>
51
    </define>
52
</grammar>
<?xml version="1.0" encoding="UTF-8"?>
<grammar xmlns="http://relaxng.org/ns/structure/1.0" ns="http://utc.fr/nf29/S1">
    <start>
        <element name="book">
            <optional>
                <element name="info">
                    <element name="title">
                        <text/>
                    </element>
                    <optional>
                        <element name="author">
                            <element name="email">
                                <text/>
                            </element>
                        </element>
                    </optional>
                </element>
            </optional>
            <oneOrMore>
                <element name="part">
                    <ref name="Title"/>
                    <choice>
                        <ref name="Text"/>
                        <oneOrMore>
                            <element name="chapter">
                                <ref name="Title"/>
                                <ref name="Text"/>
                            </element>
                        </oneOrMore>
                    </choice>
                </element>
            </oneOrMore>
        </element>
    </start>
    <define name="Title">
        <element name="title">
            <text/>
        </element>
        <optional>
            <element name="subtitle">
                <text/>
            </element>
        </optional>
    </define>
    <define name="Text">
        <oneOrMore>
            <element name="para">
                <text/>
            </element>
        </oneOrMore>
    </define>
</grammar>

Question

Produisez le plus petit document XML valide possible.

Solution

Question

Produisez le plus petit document XML valide contenant tous les éléments.

Solution