Rappel de XML (Extended Markup Language):
XML Base de données Programmation Orienté Objet
Xml Schema Table Structure Class
Xml Document Table Data Instance (Object)
Un schéma ou fichier .xsd permet de définir la structure du contenu d'un document XML. Il existe différentes approches: DTD (Document Type definition), XSD, XDR
DTD: compliqué et pas basé sur XML
XDR: propriété de Microsoft (on oublie)
XSD : relativement répandu et sera notre choix:
caractéristiques:
- xml based
- support inheritance
- ability to define its own type (Complex-type)
- specify data types for element & attributes
1) Schema : Pour pouvoir utiliser un document pour valider d'autre document il faut qu'il soit lui même validé !
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
...
</xsd:schema>
Notre document devra donc suivre la structure et les types décrits dans www.w3.org/2001/XMLSchema
2) Element: spécifie le type d'informations
argument :
@name : nom de l'info ex: name="RESPONSE"
@type : refère à un type simple ou complexe
@minoccurs : par défaut 0 mais peut forcer 1 ou n occurrence de l'élément pour que le doc xml soit valide
@maxoccurs : nombre d'occurence max, pour dire que c'est indéfini ou utilise maxoccurs="unbound"
@ref : allows to refer an element defined in an othr xsd don't forget
3) Complex Type
ATTENTION les simpleType ou complexType peuvent être globaux ou locaux.
Element containing other child elements or attributes
spécifie l'ordre dans lequel doivent se suivrent les éléments apparaissant dans le doc XML. Si l'ordre n'est pas respecté le validateur va gueuler.
<xsd:sequence>
</xsd:sequence>
spécifie l'ordre dans lequel doivent se suivrent les éléments apparaissant dans le doc XML. Si l'ordre n'est pas respecté le validateur va gueuler.
<xsd:complexType>
<xsd:extension base="xsd:Employee"> <!-- permet de faire un véritable héritage d'élement -->
</xsd:complexType>
4) Simple Type
User Defined type: crée à partir d'un type de base:
Principaux types de base (primitve types) supporté par XSD
- xsd:string
- xsd:int
- xsd:date
- xsd:datetime
- xsd:boolean
- xsd:float
- xsd:double
Il est possible de créer un "simple type" sur base d'un type primitif et de lui ajouter des restrictions (ex: valeur interdites via une regexp)
<xsd:simpleType name="ssnumber"> <xsd:restriction base="xsd:string"> <!-- hérite de xsd:string--> <xsd:length value="11" /> <xsd:pattern value="\d{3}\-\d{2}-\d{4} /< <!-- securité sociale --> </xsd:restriction> </xsd:simpleType>ou
<xsd:simpleType name="emp-type"< >xsd:restriction base="xsd:string"> <!-- hérite de xsd:string--< <xsd:enumeration value = "fulltime"/> <xsd:enumeration value = "parttime"/> </xsd:restriction> </xsd:simpleType> En XSD on appelle les différentes restrictions: "enumeration, length, pattern" sur un type de base, des "Facets"
5) Documenter un schéma:
<xsd:annotation> <xsd:documentation> <!-- donne des infos sur les fonctionalités pour lesquelles les éléments sont définis --> </xsd:documentation> <xsd:appInfo> <!-- donne des infos sur l'application qui utilise les éléments--> </xsd:appInfo> </xsd:annotation>
- valider un document XML par rapport à son xsd
- concevoir directement des classes java à partir d'un xsd
Aucun commentaire:
Enregistrer un commentaire