HTML Tutorials |
|
XML Tutorials |
|
Browser Scripting |
|
Server Scripting |
|
.NET (dotnet) |
|
Multimedia |
|
Web Building |
|
Java Tutorials |
|
Programming Langauges |
|
Soft Skills |
|
Database Tutorials |
|
Operating System |
|
Software Testing |
|
SAP Module |
|
Networking Programming |
|
Microsoft Office |
|
Accounting |
|
|
Ce chapitre d�montrera comment �crire des sch�mas d'un XML. Vous apprendrez �galement qu'un sch�ma de xml peut �tre �crit dans diff�rentes mani�res.
|
Un document de XML
|
Allons voir des documents de ce XML appel�s les � shiporder.xml � :
|
<?xml version="1.0" encoding="ISO-8859-1"?>
<shiporder orderid="889923"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="shiporder.xsd">
<orderperson>John Smith</orderperson>
<shipto>
<name>Ola Nordmann</name>
<address>Langgt 23</address>
<city>4000 Stavanger</city>
<country>Norway</country>
</shipto>
<item>
<title>Empire Burlesque</title>
<note>Special Edition</note>
<quantity>1</quantity>
<price>10.90</price>
</item>
<item>
<title>Hide your heart</title>
<quantity>1</quantity>
<price>9.90</price>
</item>
</shiporder>
|
|
Le document de XML ci-dessus se composent d'un �l�ment de racine, le � shiporder �, qui contient un attribut exig� appel� le � orderid �. L'�l�ment de � shiporder � contiennent trois �l�ments diff�rents d'enfant : � orderperson �, � shipto � et � article �. L'�l�ment de � article � apparaissent deux fois, et il contient � titre �, un �l�ment facultatif de � note �, � quantit� �, et un �l�ment des � prix �.
La ligne ci-dessus : xmlns : le xsi= " http://www.w3.org/2001/XMLSchema-instance � indique � l'analyseur de XML que ceci documente devrait �tre valid� contre un sch�ma. La ligne : xsi : le noNamespaceSchemaLocation= " shiporder.xsd � indiquent O� le sch�ma r�side (ici il est dans la m�me chemise que � shiporder.xml �).
|
Cr�er un sch�ma de XML
|
Maintenant nous voulons cr�er un sch�ma pour le document de XML ci-dessus.
Nous commen�ons par ouvrir un nouveau dossier que nous appellerons en tant que � shiporder.xsd �. Pour cr�er le sch�ma nous pourrions simplement suivre la structure dans les documents de XML et d�finir chaque �l�ment comme nous le trouvons. Nous commencerons par la d�claration standard de XML suivie des xs : �l�ment de sch�ma qui d�finissent un sch�ma :
|
<?xml version="1.0" encoding="ISO-8859-1" ?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
...
...
</xs:schema>
|
|
Dans le sch�ma ci-dessus nous employons le namespace standard (xs), et l'URI li� � ce namespace est la d�finition de langue de sch�ma, qui a la valeur standard de http://www.w3.org/2001/XMLSchemas.
Apr�s, nous devons d�finir l'�l�ment de � shiporder �. Cet �l�ment fait contenir un attribut et lui d'autres �l�ments, donc nous le consid�rons comme type complexe. L'�l�ment d'enfant de l'�l�ment de � shiporder � est entour� par des xs : ordonnancer l'�l�ment qui d�finit un ordre command� des sous-�l�ments :
|
<xs:element name="shiporder">
<xs:complexType>
<xs:sequence>
...
...
</xs:sequence>
...
</xs:complexType>
</xs:element>
|
|
Alors nous devons d�finir l'�l�ment de � orderperson � en tant que type simple (parce qu'il ne contient aucun attribut ou d'autres �l�ments). Le type (xs : de la corde) est mise en t�te avec le pr�fixe de namespace li� aux sch�mas de XML qui indique un type de donn�es pr�d�fini de sch�ma :
|
<xs:element name="orderperson" type="xs:string"/>
|
|
Apr�s, nous devons d�finit deux �l�ments qui sont du type complexe : � shipto � et � article �. Nous commen�ons par d�finir l'�l�ment de � shipto � comme suit :
|
<xs:element name="shipto">
<xs:complexType>
<xs:sequence>
<xs:element name="name" type="xs:string"/>
<xs:element name="address" type="xs:string"/>
<xs:element name="city" type="xs:string"/>
<xs:element name="country" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
|
|
Avec le sch�ma nous pouvons d�finir le nombre d'occurrences possibles pour un �l�ment avec les maxOccurs et les attributs de minOccurs. les maxOccurs indiquent le nombre maximum des occurrences pour un �l�ment et les minOccurs indique le nombre minimum d'occurrences pour un �l�ment. La valeur par d�faut pour les deux maxOccurs et minOccurs est toujours 1 !
Maintenant nous pouvons d�finir l'�l�ment de � article �. Cet �l�ment peut appara�tre des p�riodes multiples � l'int�rieur de l'�l�ment de � shiporder �. Ceci est indiqu� en pla�ant l'attribut de maxOccurs de l'�l�ment de � article � � illimit� � qui signifient qu'il peut y avoir autant d'occurrences de l'�l�ment de � article � comme l'auteur souhaite. Noter que l'�l�ment de � note � est facultatif ici. Nous avons indiqu� ceci en pla�ant l'attribut de minOccurs pour �tre z�ro :
|
<xs:element name="item" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="title" type="xs:string"/>
<xs:element name="note" type="xs:string" minOccurs="0"/>
<xs:element name="quantity" type="xs:positiveInteger"/>
<xs:element name="price" type="xs:decimal"/>
</xs:sequence>
</xs:complexType>
</xs:element>
|
|
Nous pouvons maintenant d�clarer l'attribut de l'�l�ment de � shiporder �. Puisque c'est un attribut exig� nous indiquons l'use= " pri� �.
Note : La d�claration d'attribut doit toujours venir pour la derni�re fois :
|
<xs:attribute name="orderid" type="xs:string" use="required"/>
|
|
Voici la liste compl�te du dossier de sch�ma appel� le � shiporder.xsd � :
|
<?xml version="1.0" encoding="ISO-8859-1" ?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="shiporder">
<xs:complexType>
<xs:sequence>
<xs:element name="orderperson" type="xs:string"/>
<xs:element name="shipto">
<xs:complexType>
<xs:sequence>
<xs:element name="name" type="xs:string"/>
<xs:element name="address" type="xs:string"/>
<xs:element name="city" type="xs:string"/>
<xs:element name="country" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="item" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="title" type="xs:string"/>
<xs:element name="note" type="xs:string" minOccurs="0"/>
<xs:element name="quantity" type="xs:positiveInteger"/>
<xs:element name="price" type="xs:decimal"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="orderid" type="xs:string" use="required"/>
</xs:complexType>
</xs:element>
</xs:schema>
|
|
Diviser le sch�ma
|
La m�thode de conception pr�c�dente est tr�s simple, mais peut �tre difficile de lire et maintenir quand le document sont complexe.
La prochaine m�thode de conception est bas�e sur d�finir tous les �l�ments et attributs d'abord, et se rapporter ensuite � eux employant les attributs de r�f�rence.
Voici la nouvelle conception du dossier de sch�ma (� shiporder.xsd �) :
|
< ? encoding= " ISO-8859-1 " du version= " 1.0 " de xml ? > <xs : xmlns de sch�ma : xs= " http://www.w3.org/2001/XMLSchema " > < ! -- d�finition des �l�ments simples --> <xs : xs de type= " de " orderperson de name= " d'�l�ment : corde "/> <xs : xs de type= " de " nom de name= " d'�l�ment : corde "/> <xs : xs de type= " de " adresse de name= " d'�l�ment : corde "/> <xs : xs de type= " de " ville de name= " d'�l�ment : corde "/> <xs : xs de type= " de " pays de name= " d'�l�ment : corde "/> <xs : xs de type= " de " titre de name= " d'�l�ment : corde "/> <xs : xs de type= " de " note de name= " d'�l�ment : corde "/> <xs : xs de type= " de " quantit� de name= " d'�l�ment : positiveInteger "/> <xs : xs de type= " des " prix de name= " d'�l�ment : "/> d�cimal < ! -- d�finition des attributs --> <xs : xs de type= " de " orderid de name= " d'attribut : corde "/> < ! -- d�finition des �l�ments complexes --> <xs : name= " shipto " d'�l�ment > <xs : complexType> <xs : sequence> <xs : ref= " nom "/> d'�l�ment <xs : ref= " adresse "/> d'�l�ment <xs : ref= " ville "/> d'�l�ment <xs : ref= " pays "/> d'�l�ment </xs : sequence> </xs : complexType> </xs : element> <xs : name= " article " d'�l�ment > <xs : complexType> <xs : sequence> <xs : ref= " titre "/> d'�l�ment <xs : minOccurs= " de " note de ref= " d'�l�ment 0 "/> <xs : ref= " quantit� "/> d'�l�ment <xs : ref= " prix "/> d'�l�ment </xs : sequence> </xs : complexType> </xs : element>
<xs : name= " shiporder " d'�l�ment > <xs : complexType> <xs : sequence> <xs : ref= " orderperson "/> d'�l�ment <xs : ref= " shipto "/> d'�l�ment <xs : maxOccurs=/> " illimit� " de " article " de ref= d'�l�ment </xs : sequence> <xs : use=/> " requis " de " orderid " de ref= d'attribut </xs : complexType> </xs : element> </xs : schema>
|
|
Employer Types appel�
|
La troisi�me m�thode de conception d�finissent des classes ou les types, celui nous permet de r�utiliser des d�finitions d'�l�ment. Ceci est fait en appelant les simpleTypes et l'�l�ment de complexTypes, et puis se dirige � eux par le type attribut de l'�l�ment.
Voici la troisi�me conception du dossier de sch�mas (� shiporder.xsd �) :
|
< ? encoding= " ISO-8859-1 " du version= " 1.0 " de xml ? > <xs : xmlns de sch�ma : xs= " http://www.w3.org/2001/XMLSchema " > <xs : name= " stringtype " de simpleType > <xs : xs de base= de restriction " : corde "/> </xs : simpleType> <xs : name= " inttype " de simpleType > <xs : xs de base= de restriction " : positiveInteger "/> </xs : simpleType> <xs : name= " dectype " de simpleType > <xs : xs de base= de restriction " : "/> d�cimal </xs : simpleType> <xs : name= " orderidtype " de simpleType > <xs : xs de base= de restriction " : corde " > <xs : value= de mod�le " [0-9] {6} � /> </xs : restriction> </xs : simpleType> <xs : name= " shiptotype " de complexType > <xs : sequence> <xs : type= " stringtype "/> de " nom " de name= d'�l�ment <xs : type= " stringtype "/> de " adresse " de name= d'�l�ment <xs : type= " stringtype "/> de " ville " de name= d'�l�ment <xs : type= " stringtype "/> de " pays " de name= d'�l�ment </xs : sequence> </xs : complexType> <xs : name= " itemtype " de complexType > <xs : sequence> <xs : type= " stringtype "/> de " titre " de name= d'�l�ment <xs : minOccurs= " de " stringtype de type= " de " note " de name= d'�l�ment 0 "/> <xs : type= " inttype "/> de " quantit� " de name= d'�l�ment <xs : type= " dectype "/> des " prix " de name= d'�l�ment </xs : sequence> </xs : complexType> <xs : name= " shipordertype " de complexType > <xs : sequence> <xs : type= " stringtype "/> de " orderperson " de name= d'�l�ment <xs : type= " shiptotype "/> de " shipto " de name= d'�l�ment <xs : type= " de " article " de name= d'�l�ment illimit� " " itemtype "/> de maxOccurs= </xs : sequence> <xs : use=/> " requis " de " orderidtype " de type= de " orderid " de name= d'attribut </xs : complexType> <xs : type= " shipordertype "/> de " shiporder " de name= d'�l�ment </xs : schema>
|
|
L'�l�ment de restriction indiquent que le datatype est d�riv� d'un datatype de namespace de sch�ma de W3C XML. Ainsi, le moyen suivant de fragment que la valeur de l'�l�ment ou de l'attribut doit �tre une valeur de corde :
|
<xs : xs de base= de restriction " : corde " >
|
|
L'�l�ment de restriction est plus employ� souvent pour s'appliquer la restriction aux �l�ments. Regarder la ligne suivante du sch�ma ci-dessus :
|
<xs : name= " orderidtype " de simpleType > <xs : xs de base= de restriction " : corde " > <xs : value= de mod�le " [0-9] {6} � /> </xs : restriction> </xs : simpleType>
|
|
Ceci indiquent que la valeur de l'�l�ment ou de l'attribut doit �tre une corde, il doit �tre exactement six caract�res dans une rang�e, et ces caract�res doivent �tre un nombre de 0 � 9.
|
|
|
Keywords:
xsd tutorial,xsd xml,xsd dtd,xsd examples,xsd validator,xsd specification,sample xsd,xsd tools,xsd example,xsd editor,xsd syntax,xslt xsd,xsd format,cdata xsd,xml element.
|
|
HTML Quizes |
|
XML Quizes |
|
Browser Scripting Quizes |
|
Server Scripting Quizes |
|
.NET (dotnet) Quizes |
|
Multimedia Quizes |
|
Web Building Quizes |
|
Java Quizes |
|
Programming Langauges Quizes |
|
Soft Skills Quizes |
|
Database Quizes |
|
Operating System Quizes |
|
Software Testing Quizes |
|
SAP Module Quizes |
|
Networking Programming Quizes |
|
Microsoft Office Quizes |
|
Accounting Quizes |
|
|