rech:these:prive:pmdlexsd
Ceci est une ancienne révision du document !
PMDLe XML schema
Version: 1.14 Date: 5/11/2012
<?xml version="1.0" encoding="UTF-8"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> <!-- XML Schema for PMDLe TODO: annotations + documentation Bruno Mascret v1.14 (oct. 2012) PROBLEMES: 1) élément texte et attribut commentaire? Redondant 2) ajout de nom à l'échelle (attr.id) 3) à quoi sert niveau dans arbre des composantes: c'est calculable => redondant ; En plus, c'est limité à 3 niveaux de récursivité, pourquoi? + erreur dans la DTD d'origine 4) dans arbre encore, passer cumul en xs:boolean plutôt que vrai/faux, + erreur dans la DTD d'origine; Je défini donc un type booleanFr pour rester compatible 5) pareil pour pondération, comme cumul 6) dans composante, passage de nomabrege en camelCase: nomAbrege 7) dans composante, typage de poids en xs:decimal 8) valeur n'est pas correctement défini dans la dtd: il manque les attributs echelle et num (je sais pas à quoi correspond ce num) et il n'est pas dit non plus que valeur a un fils evaluation 9) evaluation n'est pas définie dans la dtd 10) les formats des dates ne sont pas les mêmes dans les fichiers xml... tantôt YYYY/MM/DD, tantôt MM/DD/YYYY, tantôt DD/MM/YYYY; Je vais utiliser le standard w3c:YYYY-MM-DD 11) pour brique, commentaires n'est pas dans la dtd, c'est texte => je préfère commentaires, je change 12) je passe l'attribut nom en optional dans attr.id (pb avec echelle notamment) --> <!-- ************************************************** Attributes types *************************************** --> <xs:simpleType name = "int123"> <xs:restriction base = "xs:integer"> <xs:minInclusive value = "1"/> <xs:maxInclusive value = "3"/> </xs:restriction> </xs:simpleType> <xs:simpleType name = "dateFr"> <xs:restriction base = "xs:date"> <!--<xs:pattern value = "[0-3][0-9]/[0-1][0-9]/[0-9][0-9][0-9][0-9]"/>--> </xs:restriction> </xs:simpleType> <xs:simpleType name = "booleanFr"> <xs:restriction base = "xs:boolean"> <!--<xs:pattern value = "vrai|faux"/>--> </xs:restriction> </xs:simpleType> <!-- ************************************************** Attribute Groups **************************************** --> <xs:attributeGroup name="attr.id"> <xs:attribute name="id" type="xs:integer" use="required"/><!-- identifiant unique de l'élément--> <xs:attribute name="nom" type="xs:string" use="optional"/><!-- nom de l'élément --> </xs:attributeGroup> <xs:attributeGroup name="attr.valeur"> <xs:attribute name="id_echelle" type="xs:integer" use="required"/> <xs:attribute name="num" type="xs:integer" use="required"/><!-- TODO je sais pas à quoi ça correspond --> </xs:attributeGroup> <xs:attributeGroup name="attr.eval"> <xs:attribute name="date" type="dateFr" use="required"/> <xs:attribute name="source" type="xs:string" use="optional"/> </xs:attributeGroup> <xs:attributeGroup name="attr.eleve"> <xs:attribute name="prenom_eleve" type="xs:string" use="required"/><!-- prénom de l'eleve --> <xs:attribute name="nom_eleve" type="xs:string" use="required"/><!-- nom de l'eleve --> </xs:attributeGroup> <xs:attributeGroup name="attr.structureDate"> <xs:attribute name="createur" type="xs:string" use="required"/><!-- createur/proprietaire de la structure --> <xs:attribute name="date_creation" type="dateFr" use="required"/><!-- date de création de la structure--> <xs:attribute name="date_derniere_modif" type="dateFr" use="required"/><!-- date de la dernière modification --> </xs:attributeGroup> <xs:attributeGroup name="attr.evaluation"> <xs:attribute name="date_evaluation" type="dateFr" use="required"/><!-- TODO --> <xs:attribute name="evaluation_source" type="xs:string" use="required"/><!-- TODO --> <xs:attribute name="nbquestions" type="xs:string" use="optional"/><!-- nombre total de questions TODO --> <xs:attribute name="commentaire" type="xs:string" use="optional"/><!-- TODO --> </xs:attributeGroup> <xs:attributeGroup name="attr.arbre"> <xs:attribute name="niveaux" type="int123" use="optional"/><!-- TODO Ca sert à rien --> <xs:attribute name="cumul" type="booleanFr" use="optional"/><!-- TODO boolean, pas vrai faux --> <xs:attribute name="ponderation" type="booleanFr" use="optional"/><!-- TODO boolean, pas vrai faux --> </xs:attributeGroup> <xs:attributeGroup name="attr.composante"> <xs:attribute name="nom" type="xs:string" use="required"/><!-- nom de la composante --> <xs:attribute name="nomAbrege" type="xs:string" use="required"/><!-- nom de la composante --> <xs:attribute name="poids" type="xs:decimal" use="optional"/><!-- poids de la composante --> <xs:attribute name="commentaire" type="xs:string" use="optional"/><!-- TODO même remarque sur texte et commentaire --> </xs:attributeGroup> <xs:attributeGroup name="attr.commentaire"> <xs:attribute name="date" type="dateFr" use="required"/> <xs:attribute name="source" type="xs:string" use="optional"/><!-- TODO c'est quoi? --> </xs:attributeGroup> <!-- ************************************************** TYPES **************************************** --> <xs:simpleType name = "texte"> <xs:restriction base = "xs:string"/> </xs:simpleType> <xs:complexType name = "commentaires"> <xs:sequence> <xs:element type="commentaire" name="commentaire" minOccurs="1" maxOccurs="unbounded"/> </xs:sequence> </xs:complexType> <xs:complexType name="commentaire"> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attributeGroup ref="attr.commentaire" /> </xs:extension> </xs:simpleContent> </xs:complexType> <xs:complexType name="evaluation"> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attributeGroup ref="attr.eval" /> </xs:extension> </xs:simpleContent> </xs:complexType> <xs:complexType name = "valeur"> <xs:sequence> <xs:element name="evaluation" type="evaluation" minOccurs="1" maxOccurs="unbounded"/> </xs:sequence> <xs:attributeGroup ref="attr.valeur"/> </xs:complexType> <xs:complexType name="echelle"> <xs:attributeGroup ref="attr.id"/> <xs:attribute name="unite" type="xs:string" use="optional"/> </xs:complexType> <xs:complexType name="infos_echelle"> <xs:sequence> <xs:element name="echelle" type="echelle" minOccurs="1" maxOccurs="unbounded"/> </xs:sequence> </xs:complexType> <xs:complexType name="composante"> <xs:choice> <xs:sequence> <xs:element type="composante" name="composante" minOccurs="1" maxOccurs="unbounded"/> </xs:sequence> <xs:sequence> <xs:element type="valeur" name="valeur" minOccurs="1" maxOccurs="unbounded"/> </xs:sequence> </xs:choice> <xs:attributeGroup ref="attr.arbre"/> </xs:complexType> <xs:complexType name="arbre_des_composantes"> <xs:sequence> <xs:element type="composante" name="composante" minOccurs="1" maxOccurs="unbounded"/> </xs:sequence> <xs:attributeGroup ref="attr.arbre"/> </xs:complexType> <xs:complexType name="structure"> <xs:sequence> <xs:element name="brique" type="brique" minOccurs="0" maxOccurs="unbounded"/><!-- briques de la structure --> </xs:sequence> <xs:attributeGroup ref="attr.id"/> <xs:attributeGroup ref="attr.eleve"/> <xs:attributeGroup ref="attr.structureDate"/> </xs:complexType> <xs:complexType name="brique"> <xs:sequence> <xs:element type="commentaires" name="commentaires" minOccurs="0" maxOccurs="1"/> <xs:element type="texte" name="texte" minOccurs="0" maxOccurs="1"/><!-- TODO il y a redondance avec commentaires --> <xs:element type="infos_echelle" name="infos_echelle" minOccurs="0" maxOccurs="1"/> <xs:element type="arbre_des_composantes" name="arbre_des_composantes" minOccurs="0" maxOccurs="1"/> </xs:sequence> <xs:attributeGroup ref="attr.id"/> <xs:attribute name="type" type="xs:integer" use="required"/><!-- type de la brique (TODO je sais pas ce que c'est)--> <xs:attribute name="logiciel_externe" type="xs:string" use="optional"/><!-- TODO --> <xs:attribute name="indice" type="xs:integer" use="optional"/><!-- position de la brique dnas la structure TODO je sais pas à quoi ça sert, c'est calculable--> </xs:complexType> <!-- ************************************************** ELEMENTS **************************************** --> <xs:element name="structure" type ="structure"/> </xs:schema>
rech/these/prive/pmdlexsd.1352459827.txt.gz · Dernière modification : 2012/11/09 11:17 de bruno