Académique Documents
Professionnel Documents
Culture Documents
1ER DAMEL
Tâche 4
Langage de marque
DTD
ET
XML
SCH
EMA
1
1 Une entreprise utilise des fichiers XML pour inventorier, entre autres, les
imprimantes. Pour chaque imprimante, vous devez enregistrer son numéro de série, sa
marque, son modèle, son poids, les formats de papier qu'elle peut utiliser, la cartouche
qu'elle utilise, le type, l'année d'achat et si elle est en réseau ou non.
<imprimeurs>.
<printer numSeries="i245" type="laser" purchase="2010">
<brand>Epson</brand>.
<modèle>EPL300</modèle>.
<weight>4.52</weight>.
<size>A4</size>.
<size>A5</size>.
</cartouche>C-123BV</cartouche>.
<réseau/>
</printer>.
<printer numSerie="i246" type="dot matrix">
<brand>HP</brand>.
<modèle>LaserJet 2410</modèle>.
<weight>3.2</weight>.
<size>A4</size>.
</cartouche>C-456P</cartouche>.
</printer>.
</printers>.
Rédigez un schéma XML pour ces fichiers, en choisissant les types de données les plus
appropriés et en gardant à l'esprit ce qui suit :
SCHEMA XML
L'élément parent est <xs:schema> et doit contenir des déclarations pour tous les
éléments trouvés dans le xml.
Dans le schéma XML, nous n'avons aucun moyen de définir l'élément racine
d'une manière spéciale, nous l'indiquerons avec <xs:element name="root"> , que
nous définirons comme un type complexe s'il a plus d'éléments à l'intérieur et la
balise xs:sequence pour ajouter les différents éléments qui le forment et ses
restrictions. Nous nous retrouvons donc avec un schéma xml imbriqué.
Les attributs doivent être déclarés après la balise de séquence qui définit les
éléments racines.
<printer xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="Document1.xsd"> <!--link with relative path
to validate against xsd-->
3
<brand>Epson</brand>.
<modèle>EPL300</modèle>.
<weight>4.52</weight>.
<size>A4</size>.
<size>A5</size>.
</cartouche>C-123BV</cartouche>.
<réseau/>
</printer>.
<brand>HP</brand>.
<modèle>LaserJet 2410</modèle>.
<weight>3.2</weight>.
<size>A4</size>.
</cartouche>C-456P</cartouche>.
</printer>.
</printers>.
J'ai ajouté des commentaires comme celui-ci:< ! > Bien que les commentaires
formulés de cette manière soient préférables car ils peuvent être structurés et faire
l'objet d'une action :
<xs:annotation>
<xs:documentation>
Définir une liste d'imprimantes Pilar Alonso Suela Tâche 04.1 DAMEL
</xs:documentation>
</xs:annotation>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified">
<xs:element name="printers">
<xs:complexType>
<xs:sequence>
<Ici, nous faisons référence à l'élément printer, les références sont un moyen
de rendre le schéma XML plus lisible, il y aura des données pour une ou plusieurs
imprimantes.
</xs:sequence>
5
</xs:complexType>
</xs:element>
<xs:element name="printer">
<xs:complexType>
<xs:séquence>
<!--le poids doit être un nombre positif avec deux décimales au maximum
et doit être déclaré à l'intérieur de xs:restriction-->
<xs:minInclusive value="1"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType>
<xs:restriction base="xs:string">
6
<xs:pattern value="[C][\-][0-9][0-9][0-9][A-Z]{1,2}"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
</xs:sequence>
<!--attributs -->
<xs:simpleType>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<L'attribut type doit être obligatoire et ne doit contenir que les valeurs : dot
matrix, laser et ink-->.
<xs:enumeration value="laser"/>
7
<xs:enumeration value="ink"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:complexType>
</xs:element>
</xs:schema>
2 - Une association de joueurs de mus utilise des fichiers XML pour stocker les
informations des tournois qu'elle organise. Pour chaque tournoi, vous souhaitez
enregistrer l'année au cours de laquelle le tournoi s'est déroulé, le vainqueur précédent
(son identifiant) et les informations relatives aux participants. Pour les participants, nous
voulons stocker leur identifiant, l'identifiant de leur partenaire, leur nom complet, leur
âge, leur pays, ainsi que le fait qu'ils aient été sélectionnés ou non.
<serialHead/>
</participant>.
<participant idP="j02" couple="j01">
<prénom>Manuel Gómez</prénom>.
<âge>25</âge>.
<pays>Espagne</pays>.
</participant>.
<participant idP="j03" couple="j04">
<first name>Ana Puertas</first name>.
<âge>22</âge>.
<country>E5spain</country>.
<serialHead/>
</participant>.
<participant idP="j04" couple="j03">
<first name>Paco Fraile</first name>.
8
<âge>45</âge>.
<pays>Espagne</pays>.
</participant>.
</tournoi>.
Rédiger une DTD appropriée pour ces fichiers, en gardant à l'esprit que :
DTD
Une DTD est un document portant l'extension .dtd et est chargée de veiller à ce que les
données XML respectent les contraintes imposées dans la DTD.
Dans ce cas, je l'ai déclaré en interne dans le fichier xml, mais il est également possible
de le déclarer en externe sous la forme d'un document en texte brut avec une
extension .dtd.
Les éléments terminaux (ne contenant aucun élément) sont déclarés comme suit : <!
ELEMENT nom_du_type_de_données>.
Nous créerons également des entités pour travailler avec des valeurs constantes.
Comme le tournoi doit avoir des participants, nous utilisons > + pour fixer un minimum
de 1 ou plus dans la cardinalité de l'élément du tournoi.
Dans l'élément participant, nous constatons que tous les éléments contenus doivent avoir
au moins une occurrence (+) et que l'élément headOfSeries est facultatif ; j'utilise donc >
?
Comme idP doit être un identifiant > nous ajouterons ID pour déclarer l'attribut comme
un identifiant.
L'attribut partenaire doit faire référence à l'IDP d'un autre participant ; à cette fin,
j'utiliserai IDREF.
<!DOCTYPE tournoi [
]>
<Âge>23</âge>.
<pays> Espagne</pays>.
1
0
<serialHead/>
</participant>.
<prénom>Manuel Gómez</prénom>.
<âge>25</âge>.
<pays>Espagne</pays>.
</participant>.
<âge>22</âge>.
<country>E5spain</country>.
<serialHead/>
</participant>.
<âge>45</âge>.
<pays>Espagne</pays>.
</participant>.
</tournoi>.