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 > 30]/nom
Testez vos propositions avec un éditeur XML validant.