eXtensible
Markup Language
XML
Najet ZOUBEIR
2023-2024
Agenda
Présentation et
01 Historique 02 intérêt
03 Syntaxe 04 DTD
05 Schéma XML 06 Conclusion
01
Historique
Historique
1986 : SGML 1991 : HTML
Représentation des Version très simplifiée de
documentations techniques SGML
Notations trop complexes Utilisation très ciblée
1998 : XML
Éviter la complexité de SGML
Utilisation généraliste et universelle
02
Présentation
et intérêt
Présentation de XML
• eXtensible Markup Language
• Méta-langage de balisage extensible
• Développé par le World Wide Web Consortium : W3C
• Conçu à l'origine pour relever les défis de la publication
électronique à grande échelle
• Devenu un standard pour l’échange de diverses données
sur le web
Intérêt de XML
Caractéristiques
• Simplicité, universalité et extensibilité
• Représentation indépendante de l’application
• Séparation stricte entre contenu et présentation
• Format texte avec gestion des caractères spéciaux
• Langage strict : Syntaxe rigoureuse et structuration forte
• Format libre
Intérêt de XML
Une famille de langages apparentés
• DTD, XSD : Validité des documents XML
• XPATH : Navigation dans un document XML
• XQUERY : Interrogation d’un document XML
• XSL : Publication
• XSLT : Transformation
• XSLFO : Formatage
• …
03
Syntaxe
Structure d’un document XML
Balise ouvrante de
Entête { l’élément racine
Balises
Attribut
Corps
Valeur
Balise fermante de
l’élément racine
<!-- Fichier : [Link] -->
Commentaire
Entête : Déclaration XML
• A la première ligne d’un document XML : facultative
• Identifier un document comme étant un document XML
• <?xml version= "1.0" encoding= "UTF-8 " standalone="no" ?>
• version : Numéro de la version de XML (1.0 ou 1.1)
• encoding : Encodage (jeu de caractères) : US-ASCII, ISO-8859-1,
UTF-8, et UTF-16
• standalone : indique si le fichier est autonome, c'est-à-dire s'il existe
des déclarations externes qui affectent le document. Sa valeur par
défaut est « no »
Corps : Les balises (1)
• Un élément constitutif d’un document XML constitué par un nom
et un contenu : appelé balise ou élément
• Le contenu d’un élément est compris entre une balise ouvrante et
une balise fermante :
• <nom_balise> Contenu de la balise </nom_balise>
• Exemple : <pays> Tunisie </pays>
• Une balise peut être vide :
• <nom_balise> </nom_balise>
• Ou bien <nom_balise/> : balise contractée
Corps : Les balises (2)
• Contrairement à HTML, la balise de fermeture est nécessaire
dans XML
• Une balise peut contenir du texte, d’autres éléments, des
commentaires, …
Les noms des balises (1)
• Des noms XML quelconques
• Les caractères autorisés dans les identificateurs : tous les
caractères alphanumériques :
• Les lettres minuscules [a-z],
• Les lettres majuscules [A-Z],
• Les chiffres [0-9]
• Le tiret '-', le point '.', les deux points ':' et le tiret souligné ‘_’.
• Un nom de balise doit commencer par une lettre (majuscule ou
minuscule) ou par le tiret souligné ‘_’
Les noms des balises (2)
• Sensibles à la casse : <employe> ≠ <Employe>
• Peuvent contenir des caractères spéciaux (> + é à ù ï ç)
• À éviter!
• Ne peuvent pas contenir des espaces
• Les noms de balises commençant par la chaine “xml” (en
majuscule ou en minuscule) sont reservés aux usages internes de
XML
• Les caractères interdits sont : ? $ ! < &
Imbrication des éléments (1)
• Chaque document XML peut être représenté sous la forme d’une
arborescence
• Il doit contenir un et un seul élément racine
• La fermeture de l’élément racine indique la fin du document XML
• Chaque balise peut contenir zéro ou plusieurs autres balises
• L’imbrication des balises implique l’existence d’un contenu
commun
• Il faut respecter l’ordre de fermeture des balises
Imbrication des éléments (2)
Racine
Élément père
Élément fils
Les attributs
• Associer des informations complémentaires aux éléments.
• <montant monnaie= "DT" > 24 </montant>
• Mêmes règles de nomenclature que les noms de balises
• Un élément peut posséder un ou plusieurs attributs associés à
des valeurs dans la balise d’ouverture
• Le nom de l’attribut est unique pour un élément donné
• La valeur de l’attribut doit obligatoirement être entre " " ou ‘ ’.
Les attributs : Exemples
HTML :
<body background='yellow'>
XSD :
<xsd:element
name="bibliography"
type="Bibliography">
XSLT :
<xsl:template match="div">
Document bien formé (1)
• Un document XML bien formé (well formed) est un document
XML syntaxiquement correct :
• Contient une déclaration XML
• Contient un ou plusieurs éléments (Non vide)
• Contient une seule racine encapsulant tous les autres éléments et
attributs
• Structure hiérarchique
Document bien formé (2)
• A chaque balise d’ouverture est associée une balise de fermeture.
• Imbrication correcte : Pas de croisement entre balises
• Respect de la casse
• Les valeurs des attributs sont quottées (" " ou ‘ ’)
• Caractères spéciaux :
< <
& &
> >
" &aquot
Exemple
Document Type Definition (DTD)
• Définir précisément la structure d’un document XML.
• Une grammaire qui décrit la façon de construire les fichiers XML.
• Une DTD définit les contraintes suivantes sur les éléments :
• Quelle est la racine du document ?
• Qui doit/peut avoir quels fils ? Et dans quel ordre ?
• Quels sont les éléments obligatoires et ceux optionnels ?
• Combien d’enfants possède un élément ?
• Quels éléments peuvent contenir du texte ?
• Quelles sont les types des valeurs des attributs ?
À retenir …
• Un document XML bien formé :
• Respecte la syntaxe XML
• Un document XML valide :
• Est un document bien formé
• Fait référence à une DTD
• Est conforme à la DTD référencée
Exercice 1
• Créer un fichier XML qui contient les données d’un
ensemble de voitures, à savoir le numéro
d’immatriculation de chaque voiture, la marque, le
modèle, la couleur et le kilométrage.
Exercice 2
• Interpréter le
document
XML suivant :
04
DTD
Document Type Definition
Premier exemple : « [Link] »
1
2
3
4
Document Type Definition
Premier exemple : Interprétation
1. Déclaration de l'élément bibliography devant contenir une suite
non vide d'éléments book
2. Déclaration de l'élément book devant contenir les éléments title,
author, …, isbn et url
3. Déclarations des attributs obligatoires key et lang de l'élément
book
4. Déclaration de l'élément title devant contenir uniquement du texte.
Déclaration d’une DTD
• Déclaration interne :
<!DOCTYPE root-element [ declarations ]>
• Déclaration externe : dans un fichier séparé
<!DOCTYPE root-element SYSTEM "url">
Contenu d’une DTD
Entité
Une DTD peut contenir
Déclaration Déclaration
Commentaires
d’élément d’attribut
<!-- <!ELEMENT <!ATTLIST
--> > >
Déclaration des éléments (1)
• Déclaration de chaque balise qui apparaît à l’intérieur d’un
fichier XML.
• <!ELEMENT nom_élément(règle)>
• nom_élément obéit aux règles syntaxiques concernant la
nomenclature des balises XML.
• règle définit le contenu de l’élément déclaré
Déclaration des éléments (2)
• Contenu textuel :
• L’élément peut uniquement contenir du texte
• <!ELEMENT nom_élément (#PCDATA)>
<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE texts [
<!ELEMENT texts (text)*>
<!ELEMENT text (#PCDATA)>
]>
<texts>
<text>Bonjour</text>
<text>Tout le monde</text>
</texts>
Déclaration des éléments (3)
• Contenu vide : <?xml version="1.0"
encoding="iso-8859-1"?>
• L’élément peut uniquement avoir
des attributs <!DOCTYPE sommes[
<!ELEMENT
• Il est obligatoirement vide sommes(montant)>
<!ELEMENT montant EMPTY>
• <!ELEMENT nom_élément EMPTY>
]>
• Un élément vide contient en <sommes>
<montant valeur=‘’50’’
général des attributs devise=‘‘DT’’/>
• Contraction recommandée des </sommes>
balises vides
Déclaration des éléments (4)
• Contenu pur d’éléments :
• Le contenu d'un élément est pur lorsqu'il ne contient aucun texte
• Constitué uniquement par des éléments fils
• <!ELEMENT nom_élément (règle)>
• Les éléments fils peuvent avoir divers contenus
• règle décrit les suites autorisées d'enfants dans le contenu de
l'élément
Déclaration des éléments (5)
• Contenu pur d’éléments (suite) :
Opérateur Signification Exemple
, Séquence ordonnée <!ELEMENT date(mois,annee)>
| Séquence non ordonnée <!ELEMENT date (mois|annee)>
& Séquence non ordonnée <!ELEMENT date (mois&annee)>
? 0 ou 1 occurrence <!ELEMENT elem (elem1, elem2?)>
* 0 ou plusieurs occurrences <!ELEMENT texts (text)*>
+ Une ou plusieurs <!ELEMENT livre (titre,auteur+)>
occurrences
Déclaration des éléments (6)
• Contenu mixte :
• Le contenu d'un élément est mixte lorsqu’il peut contenir du texte et
d’autres éléments
• <!ELEMENT nom_élément (#PCDATA | elem1 | ... | elemN)*>,
• Aucun contrôle sur le nombre d’occurrences des éléments
elem1…elemN
• #PCDATA doit apparaitre en premier
Déclaration des éléments (7)
• Contenu mixte : exemple
<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE book [
<!ELEMENT book (#PCDATA | em | cite)*>
<!ELEMENT em (#PCDATA)>
<!ELEMENT cite (#PCDATA)>
]>
<book>
Du <em>texte</em>, une <cite>citation</cite> et encore du <em>texte</em>
</book>
Déclaration des éléments (8)
• Contenu libre :
• Aucune contrainte n’est imposée sur le contenu de la balise
• Il doit être bien formé
• <!ELEMENT nom_élément ANY>,
• Utilisé pour les DTDs en cours de mise au point
• Déconseillé pour les DTDs terminées ou en production
Déclaration d’attribut (1)
• Tout attribut présent dans la balise ouvrante d'un élément doit
être déclaré
• <!ATTLIST element attribut type default>
• element : la balise pour laquelle on précise la liste des attributs
• attribut : le nom de l’attribut à définir
• type : le type de l’attribut à définir
• default : valeur par défaut ou contrainte sur la valeur de l’attribut
Déclaration d’attribut (2)
• Les types d’attributs :
CDATA Une chaine quelconque de caractères
(value-1 | value-2 | ... | value-N) Énumération
ID Un identifiant unique
IDREF Une référence à un identifiant unique
IDREFS Multiples références (séparées par des
espaces) sur des identifiants uniques.
Déclaration d’attribut (3)
• Les contraintes sur les valeurs des attributs peuvent être :
#REQUIRED L’attribut doit être spécifié.
#IMPLIED L’attribut est optionnel.
#FIXED ‘‘val’’ La valeur de l’attribut est fixé et ne doit pas être
changée.
‘‘val’’ La valeur par défaut
Déclaration d’attribut (4)
• Exemples :
• <!ATTLIST personne nom CDATA #REQUIRED>
• <!ATTLIST personne age CDATA #IMPLIED>
• <!ATTLIST date annee CDATA #FIXED "2023">
• <!ATTLIST machine etat CDATA "neuf">
• <!ATTLIST rectangle largeur CDATA "0">
• <!ATTLIST personne situation (célibataire|mariée|divorcée) #IMPLIED>
<?xml version="1.0" encoding="iso-8859-1" standalone="yes"?>
<!DOCTYPE book [
<!ELEMENT book (section)*>
<!ELEMENT section (#PCDATA | ref | refs)*>
<!ATTLIST section id ID #IMPLIED>
<!ELEMENT ref EMPTY>
<!ATTLIST ref idref IDREF #REQUIRED>
<!ELEMENT refs EMPTY>
<!ATTLIST refs idrefs IDREFS #REQUIRED>
]>
<book>
<section id="sec0">Une référence <ref idref="sec1"/></section>
<section id="sec1">Des références <refs idrefs="sec0 sec2"/></section>
<section id="sec2">Section sans référence</section>
<section id="sec3">Une auto-référence <refs idrefs="sec3"/></section>
</book>
DTD : avantages et inconvénients
Notations simples
Notations différentes de XML
Pas d’espaces de nom
Typage de données limité
DTD : Exercice
Écrire un fichier XML
<! DOCTYPE inscriptions [ valide par rapport à cette
<! ELEMENT inscriptions ( ue + , etudiant *) > DTD
<! ELEMENT ue ( titre , resume , inscrit *) >
<! ATTLIST ue code ID # REQUIRED niveau CDATA # REQUIRED >
<! ELEMENT titre (# PCDATA ) >
<! ELEMENT resume (# PCDATA ) >
<! ELEMENT inscrit EMPTY >
<! ATTLIST inscrit num IDREF # REQUIRED semestre CDATA # REQUIRED >
<! ELEMENT etudiant ( nom , adresse ) >
<! ATTLIST etudiant num ID # REQUIRED >
<! ELEMENT nom (# PCDATA ) >
<! ELEMENT adresse (# PCDATA ) >
]>
DTD : Solution
<? xml version = " 1.0 " ? >
<! DOCTYPE inscriptions SYSTEM " inscriptions . dtd " >
< inscriptions >
< ue code = " BDAV " niveau = " 4 " >
< titre > Bases de donnees avancees </ titre >
< resume >
XML , Datalog , Securite
</ resume >
< inscrit num = " 123456 " semestre = " 2010/ Automne " / >
</ ue >
< etudiant num = " 123456 " >
< nom > Toto </ nom >
< adresse > Villeurbanne </ adresse >
</ etudiant >
</ inscriptions >
05
XSD
XML Schema Definition (XSD)
• Un schéma XML : langage basé sur XML qui permet la définition
de schémas (structure + type de données) des documents XML.
• Éléments et leurs attributs,
• Imbrication des éléments,
• Ordre d’apparition des éléments,
• Et plus
• Un document XSD est un document XML.
• Le vocabulaire de XSD est composé d’environ 30 éléments et
attributs.
DTD vs XSD
DTD XSD
N’est pas une syntaxe XML Basé sur la syntaxe XML
Difficile à étendre Facilement extensible
Données textuelles non typées Supporte les types de données
Ne permet pas de spécifier Permet de spécifier
exactement le nombre exactement le nombre
d’occurrences d’un élément d’occurrences d’un élément
Ne supporte pas les espaces de Supporte les espaces de noms
noms
XML XSD
<?xml version="1.0"?> <?xml version="1.0"?>
<note> <xs:schema
<to>Me</to> xmlns:xs="[Link]
<from>My Friend</from>
<xs:element name="note">
<heading>Reminder</heading>
<body>Don't forget me this <xs:complexType>
weekend</body> <xs:sequence>
</note> <xs:element name="to" type="xs:string"/>
<xs:element name="from" type="xs:string"/>
DTD <xs:element name="heading" type="xs:string"/>
<!ELEMENT note (to, from, <xs:element name="body" type="xs:string"/>
heading, body)> </xs:sequence>
<!ELEMENT to (#PCDATA)> </xs:complexType>
<!ELEMENT from (#PCDATA)> </xs:element>
<!ELEMENT heading (#PCDATA)> </xs:schema>
<!ELEMENT body (#PCDATA)>
Déclaration d’un schéma XML
• L'espace de noms des schémas XML est identifié par l'URI
[Link]
• Il est généralement associé au préfixe xsd ou à xs.
• Tout le schéma est inclus dans l'élément xsd:schema (qui peut
contenir d’autres attributs) :
<?xml version="1.0" encoding="iso-8859-1"?>
<xsd:schema xmlns:xsd="[Link]
<!-- Déclarations d'éléments, d'attributs et définitions de types -->
...
</xsd:schema>
Référence à un schéma XML
• Dans l’élément racine du document XML, en utilisant l’un de ces
deux attributs :
• schemaLocation : si on a utilisé l’attribut targetNamespace dans la
balise xsd:schema du schéma XML
• noNamespaceSchemaLocation : sinon
<?xml version="1.0" encoding="iso-8859-1"?>
<note
xmlns:xsi='[Link]
xsi:noNamespaceSchemaLocation=‘[Link]'>
…
</note>
Déclaration d’élément
• Syntaxe :
<xsd:element name="element_name" type="element_type">
</xsd:element>
• element_name : le nom de l’élément
• element_type : le type de l’element :
• Élément Complexe : Éléments contenant des éléments fils ou des
attributs.
• Élément Simple : Éléments ne contenant des éléments fils ni des
attributs.
Déclaration d’élément
Les éléments simples (1)
• Élément de type simple ou élément simple : contenu textuel dont
le type est prédéfini
• Type par défaut : xsd:anyType
• Les types prédéfinis les plus utilisés dans un schéma XML :
• xsd:string • xsd:boolean • xsd:ID
• xsd:decimal • xsd:date • xsd:IDREF
• xsd:integer • xsd:time • xsd:IDREFS
• Valeur par défaut : default Réservés aux
attributs
• Valeur fixe : fixed
Déclaration d’élément
Les éléments simples (2)
• <xs:element name="lastname" type="xs:string"/>
• <xs:element name="age" type="xs:integer"/>
• <xs:element name="dateborn" type="xs:date"/>
• <xs:element name="color" type="xs:string" default="red"/>
• <xs:element name="company" type="xs:string"
fixed=“Microsoft"/>
Déclaration d’attribut
• Considéré comme un élément simple
• Syntaxe :
<xsd:attribute name=“att_name" type=“att_type">
</xsd:attribute>
• att_name : le nom de l’attribut
• att_type : le type de l’attribut : type simple ou prédéfini
• Un attribut peut avoir une valeur fixe ou une valeur par défaut :
• <xs:attribute name="genre" type="xs:string" default="female"/>
• <xs:attribute name="lang" type="xs:string" fixed="EN"/>
Restriction (1)
• Sous-ensemble d’un type prédéfini
• Définition des valeurs acceptables pour les éléments ou les
attributs XML
• Définition de contraintes supplémentaires sur un type prédéfini :
<xsd:simpleType name="nom_type">
<xsd:restriction base="type_prédéfini">
…
</xsd:restriction>
</xsd:simpleType>
Restriction (2)
• Restriction sur les valeurs • Restriction sur un ensemble
de valeurs
<xs:element name="age"> <xs:element name="car">
<xs:simpleType> <xs:simpleType>
<xs:restriction base="xs:integer"> <xs:restriction base="xs:string">
<xs:minInclusive value="0"/> <xs:enumeration value="Audi"/>
<xs:maxInclusive value="120"/> <xs:enumeration value="Golf"/>
</xs:restriction> <xs:enumeration value="BMW"/>
</xs:simpleType> </xs:restriction>
</xs:element> </xs:simpleType>
</xs:element>
Restriction (3)
• Restriction sur une série Expressions possibles :
de valeurs <xs:pattern value="[A-Z][A-Z][A-Z]"/>
<xs:element name="letter"> <xs:pattern value="[a-zA-Z][a-zA-Z][a-zA-Z]"/>
<xs:simpleType> <xs:pattern value="[xyz]"/>
<xs:restriction base="xs:string">
<xs:pattern value="[0-9][0-9][0-9][0-9][0-9]"/>
<xs:pattern value="[a-z]"/>
</xs:restriction> <xs:pattern value="([a-z])*"/>
</xs:simpleType> <xs:pattern value="([a-z][A-Z])+"/>
</xs:element>
<xs:pattern value="m|f"/>
Restriction (4)
• Restriction sur la longueur d’un élément
<xs:element name="password"> <xs:element name="password">
<xs:simpleType> <xs:simpleType>
<xs:restriction base="xs:string"> <xs:restriction base="xs:string">
<xs:length value="8"/> <xs:minLength value="5"/>
</xs:restriction> <xs:maxLength value="8"/>
</xs:simpleType> </xs:restriction>
</xs:element> </xs:simpleType>
</xs:element>
Déclaration d’élément
Les éléments complexes (1)
• Un élément complexe est un élément XML qui contient d'autres
éléments et / ou des attributs.
• Il existe quatre types d'éléments complexes :
• éléments vides avec attributs
• éléments qui contiennent uniquement d’autres éléments
• éléments qui ne contiennent que du texte et des attributs
• éléments qui contiennent les deux autres éléments et le texte
• Déclaration d’un type complexe : locale ou globale
Déclaration d’élément
Les éléments complexes (2)
• Déclaration locale de type complexe :
• Type local à un élément
• N’a pas besoin d’un nom de type
• Visibilité du type : uniquement à l’intérieur de l’élément dans
lequel il a été déclaré
Déclaration d’élément
Les éléments complexes (3)
• Déclaration globale de type complexe :
• La déclaration du type n’appartient pas à un élément
• Le type porte obligatoirement un nom
• Visibilité du type : dans tous le document
• Exemple :
<employee>
<firstname>John</firstname>
<lastname>Smith</lastname>
</employee>
<xs:element name="employee">
<xs:complexType> Déclaration
<xs:sequence> globale de type
<xs:element name="firstname" <xs:complexType name="personinfo">
type="xs:string"/> <xs:sequence>
<xs:element name="lastname" <xs:element name="firstname"
type="xs:string"/> type="xs:string"/>
</xs:sequence> <xs:element name="lastname"
</xs:complexType> type="xs:string"/>
</xs:element> </xs:sequence>
</xs:complexType>
Déclaration
locale de type
<xs:element name="employee" type="personinfo"/>
<xs:element name="student" type="personinfo"/>
<xs:element name="member" type="personinfo"/>
Extension d’un type
• Étendre un type existant
• Créer un nouveau type complexe basé sur un type existant
<xs:complexType name="personinfo"> <xs:complexType name="fullpersoninfo">
<xs:sequence> <xs:complexContent>
<xs:element name="firstname" <xs:extension base="personinfo">
type="xs:string"/> <xs:sequence>
<xs:element name="lastname" <xs:element name="address"
type="xs:string"/> type="xs:string"/>
</xs:sequence> <xs:element name="city"
</xs:complexType> type="xs:string"/>
</xs:sequence> </xs:extension>
</xs:complexContent> </xs:complexType>
Déclaration d’élément
Les éléments vides
• Exemple : <xs:element name="product">
<xs:complexType>
<xs:attribute name="prodid" type="xs:positiveInteger"/>
<product prodid="1345" /> </xs:complexType>
</xs:element>
<xs:complexType name="prodtype">
<xs:attribute name="prodid" type="xs:positiveInteger"/>
</xs:complexType>
<xs:element name="product" type="prodtype"/>
Déclaration d’élément
Les types mixtes (1)
• Un élément complexe de type
<letter>
mixte peut contenir des Dear Mr.
attributs, des éléments, et du <name>John Smith </name>.
texte. Your order
<orderid>1032</orderid>
• Exemple : will be shipped on
<shipdate>2024-07-13</shipdate>.
</letter>
Déclaration d’élément
Les types mixtes (2)
<xs:complexType name="lettertype"
<xs:element name="letter">
mixed="true">
<xs:complexType mixed="true">
<xs:sequence>
<xs:sequence>
<xs:element name="name"
<xs:element name="name"
type="xs:string"/>
type="xs:string"/>
<xs:element name="orderid"
<xs:element name="orderid"
type="xs:positiveInteger"/>
type="xs:positiveInteger"/>
<xs:element name="shipdate"
<xs:element name="shipdate"
type="xs:date"/>
type="xs:date"/>
</xs:sequence>
</xs:sequence>
</xs:complexType>
</xs:complexType>
</xs:element>
<xs:element name="letter" type="lettertype"/>
Les indicateurs
Indicateur Signification
xsd:all Séquence non ordonnée
xsd:choice Un seul élément de la liste peut être utilisé
xsd:sequence Séquence ordonnée
minOccurs Nombre minimal d’occurrences, par défaut égal à 1
maxOccurs Nombre maximal d’occurrences, par défaut égal à 1
xsd:any Élément non spécifié dans le schéma
xsd:anyAttribute Élément vide qui désigne un attribut non spécifié
dans le schéma
XSD: Exercice
<!ELEMENT document (paragraphe+)>
<!ATTLIST document type CDATA #REQUIRED>
<!ELEMENT paragraphe (#PCDATA)>
Écrire un schéma XML
correspondant à cette DTD
XSD : Solution 1
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="[Link]
<xs:element name="document">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" name="paragraphe" type="xs:string"/>
</xs:sequence>
<xs:attribute name="type" use="required"/>
</xs:complexType>
</xs:element>
</xs:schema>
XSD : Solution 2
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="[Link]
<xs:element name="document">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" ref="paragraphe"/>
</xs:sequence>
<xs:attribute name="type" use="required"/>
</xs:complexType>
</xs:element>
<xs:element name="paragraphe" type="xs:string"/>
</xs:schema>
XSD : Solution 3
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="[Link]
<xs:complexType name ="docType" >
<xs:sequence>
<xs:element maxOccurs="unbounded" name="paragraphe" type="xs:string"/>
</xs:sequence>
<xs:attribute name="type" use="required"/>
</xs:complexType>
<xs:element name="document" type ="docType" >
</xs:element>
</xs:schema>
Références
• « L'essentiel de XML: Cours XML », Olivier Carton, Version du 13/10/2015
• « Programmation d’applications pour le Web : Chapitre 3 La technologie
XML », Cours 2ème année ING, ISI-Tunis
• « La technologie XML », Bernd Amann
• [Link]
• « introduction to XML », Youssef Ben Hammadi, ISET Djerba