Outils pour utilisateurs

Outils du site


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.1 (jun. 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.1352459875.txt.gz · Dernière modification : 2012/11/09 11:17 de bruno