Bulletins météo

Soit le fichier f1.smi suivant (très proche de la syntaxe SMIL) :

CTRL+C pour copier, CTRL+V pour coller
1
<?xml version="1.0" encoding="UTF-8"?>
2
<smil>
3
    <body>
4
        <seq>
5
            <par>
6
                <text dur="1">Île de France</text>
7
            </par>
8
            <par>
9
                <text dur="1">8 janvier 2010</text>
10
            </par>
11
            <par>
12
                <text dur="3">5 cm de neige en moyenne sur la région</text>
13
            </par>
14
            <par>
15
                <text dur="3">Jusqu'à 10cm de neige sur le sud de la région</text>
16
            </par>
17
        </seq>
18
    </body>
19
</smil>
<?xml version="1.0" encoding="UTF-8"?>
<smil>
    <body>
        <seq>
            <par>
                <text dur="1">Île de France</text>
            </par>
            <par>
                <text dur="1">8 janvier 2010</text>
            </par>
            <par>
                <text dur="3">5 cm de neige en moyenne sur la région</text>
            </par>
            <par>
                <text dur="3">Jusqu'à 10cm de neige sur le sud de la région</text>
            </par>
        </seq>
    </body>
</smil>

Pour rappel :

  • seq décrit une séquence de parties par, contenant du contenu affiché pendant une durée dur.

  • les par d'une seq sont présentes en même temps à l'écran (pour simplifier dans notre cas, les unes en dessous des autres)

Question

Ce fichier est-il un fichier XML bien formé (justifier) ?

Solution

Question

Soit la DTD smilSuperLight.dtd suivante  :

CTRL+C pour copier, CTRL+V pour coller
1
<!ELEMENT smil (meta*, body)>
2
<!ATTLIST meta
3
  name (title) #REQUIRED
4
  content CDATA #REQUIRED>
5
<!ELEMENT body (seq)>
6
<!ELEMENT seq (par+)>
7
<!ELEMENT par (text)>
8
<!ELEMENT text (#PCDATA)>
9
<!ATTLIST text
10
  dur CDATA #REQUIRED>
<!ELEMENT smil (meta*, body)>
<!ATTLIST meta
  name (title) #REQUIRED
  content CDATA #REQUIRED>
<!ELEMENT body (seq)>
<!ELEMENT seq (par+)>
<!ELEMENT par (text)>
<!ELEMENT text (#PCDATA)>
<!ATTLIST text
  dur CDATA #REQUIRED>

Le fichier f1.smi est-il valide par rapport à cette DTD (justifier) ?

Solution

Question

Si smilSuperLight.dtd est un sous-ensemble du schéma SMIL officiel du W3C, le fichier XML f1.smi est-il valide par rapport à la DTD SMIL du W3C (expliquer) ?

Solution

Question

Pourquoi le fichier f2.smi n'est-il pas valide par rapport à la DTD smilSuperLight.dtd ?

CTRL+C pour copier, CTRL+V pour coller
1
<?xml version="1.0" encoding="UTF-8"?>
2
<smil>
3
    <body>
4
        <seq>
5
            <par>
6
                <text dur="1">Champagne</text>
7
                <text dur="1">8 janvier 2010</text>
8
            </par>
9
            <par>
10
                <text dur="3">Brouillard dominant et éclaircies en fin de matinée</text>
11
            </par>
12
        </seq>
13
    </body>
14
</smil>
<?xml version="1.0" encoding="UTF-8"?>
<smil>
    <body>
        <seq>
            <par>
                <text dur="1">Champagne</text>
                <text dur="1">8 janvier 2010</text>
            </par>
            <par>
                <text dur="3">Brouillard dominant et éclaircies en fin de matinée</text>
            </par>
        </seq>
    </body>
</smil>

Solution

Question

Modifier smilSuperLight.dtd afin que f2.smi soit à présent valide par rapport à une nouvelle DTD smilSuperLight2.dtd

Solution

Soit les deux fichiers XML suivants, structurés selon une sémantique métier :

CTRL+C pour copier, CTRL+V pour coller
1
<?xml version="1.0"?>
2
<meteo>
3
    <region>Picardie</region>
4
    <date>8 janvier 2010</date>
5
    <phenomene>Pluie et brouillard sur toute la région</phenomene>
6
    <temperature>
7
        <matin>-5</matin>
8
        <soir>-3</soir>
9
    </temperature>
10
</meteo>
<?xml version="1.0"?>
<meteo>
    <region>Picardie</region>
    <date>8 janvier 2010</date>
    <phenomene>Pluie et brouillard sur toute la région</phenomene>
    <temperature>
        <matin>-5</matin>
        <soir>-3</soir>
    </temperature>
</meteo>
CTRL+C pour copier, CTRL+V pour coller
1
<?xml version="1.0"?>
2
<meteo>
3
    <region>Nord</region>
4
    <date>8 janvier 2010</date>
5
    <phenomene>Brouillard et neige sur le nord de la région</phenomene>
6
    <phenomene>Vents violents sur le bord de mer</phenomene>
7
    <phenomene>Verglas sur toute la région</phenomene>
8
</meteo>
<?xml version="1.0"?>
<meteo>
    <region>Nord</region>
    <date>8 janvier 2010</date>
    <phenomene>Brouillard et neige sur le nord de la région</phenomene>
    <phenomene>Vents violents sur le bord de mer</phenomene>
    <phenomene>Verglas sur toute la région</phenomene>
</meteo>

Question

Proposer un schéma XML meteo.dtd selon le formalisme des DTD de telle façon que ces deux fichiers soient valides par rapport à ce schéma.

Solution

Question

Proposer un programme XSLT permettant de transformer les fichiers de type meteo en smilSuperLight2, en affichant séquentiellement :

  • la région avec la date dans une même première partie (1 seconde chacune, donc 2 secondes en tout),

  • puis chaque phénomène (les températures ne sont pas affichées) pendant 3 secondes chaque.

Indice

Indice

Solution