Valid XHTML     Valid CSS2    

XML en M1 (2018), université d'Angers

    gilles.hunault@univ-angers.fr

 

T.P. numéro 1

 

Table des matières cliquable

  1. Rendre un document HTML valide pour la grammaire XHTML 1.0 Strict

  2. Passer de XHTML 1.0 Transitionnel à XHTML 1.0 Strict

  3. Créer un document XML qui respecte une grammaire DTD

  4. Créer un document XML qui respecte une grammaire XSD

  5. Créer des grammaires DTD et XSD

  6. Compter des éléments et des attributs

  7. Produire du XML avec MySQL

 

Il est possible d'afficher toutes les solutions via  ?solutions=1  et de les masquer via  ?solutions=0 .

 

1. Rendre un document HTML valide pour la grammaire XHTML 1.0 Strict

Ce n'est pas parce qu'un navigateur affiche un document qu'il est valide. Corriger le document HTML de l'archive m1xml_bad.zip pour qu'il soit valide pour la grammaire XHTML 1.0 Strict. On pourra utiliser des outils Web ou en ligne de commande.

Solution :  

 

2. Passer de XHTML 1.0 Transitionnel à XHTML 1.0 Strict

Quelles sont les principales différences entre les grammaires XHTML 1.0 Transitionnel et XHTML 1.0 Strict ?

Solution :  

 

3. Créer un document XML qui respecte une grammaire DTD

Nous admettrons pour ce qui suit qu'une molécule est définie par une liste d'atomes avec le nom des atomes, leur notation et le nombre de ces atomes fournis en attributs. Par exemple la molécule d'eau H2O est définie par l'atome de nom hydrogène, de notation H en nombre 2 et par l'atome de nom oxygène, de notation O et en nombre 1 (qui peut donc être omis). Après avoir lu soigneusement le fichier suivant nommé molecule.dtd, écrire un fichier eau.xml valide pour cette grammaire DTD. On utilisera un outil en ligne de commande pour vérifier cette validité. On pourra ignorer les accents.

Fichier molecule.dtd :


     <!ELEMENT molecule (atome)+ >
     <!ELEMENT atome    EMPTY    >
     
     <!ATTLIST atome    nom      CDATA  #REQUIRED >
     <!ATTLIST atome    lettre   CDATA  #REQUIRED >
     <!ATTLIST atome    nombre   CDATA  "1"       >
     

Est-ce que cette grammaire DTD autorise les chaines vides pour les noms, lettres et nombres ?

Est-ce qu'il faut respecter l'ordre des attributs tel qu'il est défini dans la grammaire DTD ?

Solution :  

 

4. Créer un document XML qui respecte une grammaire XSD

On décide maintenant d'utiliser la grammaire molecule.xsd suivante pour stocker les mêmes informations.

Fichier molecule.xsd :


     <?xml version="1.0" encoding="UTF-8"?>
     <xsd:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
     
       <xsd:element name="molecule">
         <xsd:complexType>
           <xsd:sequence>
             <xsd:element maxOccurs="unbounded" ref="atome"/>
           </xsd:sequence>
         </xsd:complexType>
       </xsd:element>
     
       <xsd:element name="atome">
         <xsd:complexType>
           <xsd:sequence>
             <xsd:element ref="nom"/>
             <xsd:element ref="nombre"/>
           </xsd:sequence>
         </xsd:complexType>
       </xsd:element>
     
       <xsd:element name="nom">
         <xsd:complexType>
            <xsd:simpleContent>
               <xsd:extension base="xsd:string">
                  <xsd:attribute name="lettre" use="required" type="xsd:string"/>
               </xsd:extension>
            </xsd:simpleContent>
         </xsd:complexType>
       </xsd:element>
     
       <xsd:element name="nombre" type="xsd:integer"/>
     
     </xsd:schema>
     

Ecrire un fichier eau2.xml valide pour cette grammaire XSD. On utilisera un outil en ligne de commande pour vérifier cette validité. Là encore, on pourra ignorer les accents.

Est-ce que cette grammaire XSD autorise les chaines vides pour les noms, lettres et nombres ?

Solution :  

 

5. Créer des grammaires DTD et XSD

Disons qu'un trajet ferroviaire est représenté schématiquement mais obligatoirement par un numéro identifiant de trajet, un type de train, un lieu de départ et un lieu d'arrivée. Ces informations sont éventuellement complétées, lorsqu'elles sont disponibles, par deux informations ts (pour time stamp en anglais) qui fournissent respectivement la date et heure de départ et la date et heure d'arrivée.

Voici un exemple de fichier XML regroupant deux trajets, nommé trajets.xml.

Fichier trajets.xml :


     <trajets>
       <trajet id="tr02436">
            <train>TGV </train>
            <depart>Angers</depart>
            <arrive>Paris Montparnasse</arrive>
       </trajet>
       <trajet id="tr5897">
            <train>Micheline </train>
            <depart ts="2016-09-08 13:00">Troyes</depart>
            <arrive ts="2016-09-08 17:08">Dijon</arrive>
       </trajet>
     </trajets>
     

Donner pour ce fichier trajets.xml une grammaire DTD minimale et raisonnable qui permet de décrire les trajets ferroviaires puis une grammaire XSD équivalente.

Solution :  

 

6. Compter des éléments et des attributs

Compter le nombre de lignes puis lister tous les éléments XML distincts utilisés dans le logo du renard ci-dessous, puis compter tous les éléments avec leurs attributs.

                              non su

Solution :  

 

7. Produire du XML avec MySQL

Comment produire des documents XML correspondant aux tables d'une base de données MySQL ?

Solution :  

 

Questions sans réponse affichée dans le navigateur (donc venez en TP !)

  • Que faut-il changer dans les fichiers XML et dans les grammaires DTD et XSD précédentes si on décide d'utiliser des accents, que ce soit avec un encodage latin1 ou UTF ?

  • Est-ce qu'un navigateur peut être validant c'est-à-dire refuser l'affichage d'un document XML s'il n'est pas valide pour la grammaire indiquée en début de document ?

  • Après avoir vérifié qu'un document DOCX ou ODT est une archive (lisible par exemple par zip), chercher comment on peut lister tous les espaces de noms associés. Où trouve-t-on les grammaires pour ces documents ?

 

Code-source php de cette page.

 

 

retour gH    Retour à la page principale de   (gH)