Mon nom est personne

Modélisation XML

45 min

Écrivez un document XML bien formé permettant de représenter des personnes, avec leur nom, leur prénom et leur age.

On représentera deux personnes.

<?xml version="1.0" encoding="UTF-8"?>
<personnes>
    <personne>
        <nom>Personne</nom>
        <prenom>Terence</prenom>
    </personne>
    <personne>
        <nom>Trinita</nom>
        <prenom>Terence</prenom>
        <age>40</age>
    </personne>
</personnes>

Écrivez un schéma au format DTD permettant de valider le document précédent, sachant que le nom et le prénom sont obligatoires, mais pas l'age.

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE personnes SYSTEM "pers.dtd">
<personnes>
    <personne>
        <nom>Personne</nom>
        <prenom>Terence</prenom>
    </personne>
    <personne>
        <nom>Trinita</nom>
        <prenom>Terence</prenom>
        <age>40</age>
    </personne>
</personnes>
<!ELEMENT personnes (personne+) >
<!ELEMENT personne (nom, prenom, age?) >
<!ELEMENT nom (#PCDATA)>
<!ELEMENT prenom (#PCDATA)>
<!ELEMENT age (#PCDATA)>

Écrivez à nouveau le schéma, mais au formalisme RelaxNG, en utilisant le typage des données pour représenter l'age comme un integer.

<grammar 
    xmlns="http://relaxng.org/ns/structure/1.0" 
    datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
    <start>
        <element name="personnes">
            <oneOrMore>
                <element name="personne">
                    <element name="nom"><text/></element>
                    <element name="prenom"><text/></element>
                    <optional>
                        <element name="age"><data type="integer"/></element>                        
                    </optional>
                </element>
            </oneOrMore>
        </element>
    </start>
</grammar>

Écrivez des expressions XPath permettant de sélectionner :

  • les noms des personnes, c'est à dire les éléments nom qui appartiennent à des éléments personne, qui appartiennent à l'élément personnes qui est à la racine.

  • le nom de la seconde personne

  • les noms des personnes dont l'age est renseigné

  • les noms des personnes qui ont plus de 30 ans

  • /personnes/personne/nom

  • /personnes/personne[2]/nom

  • /personnes/personne[age]/nom

  • /personnes/personne[age &gt; 30]/nom

Testez vos propositions avec un éditeur XML validant.

AccueilModélisation logique arborescente en XML > Exercice > Exercice : Mon nom est personne< PrécédentSuivant >