0% ont trouvé ce document utile (0 vote)
156 vues35 pages

DTD XSD

Ce document décrit les schémas XML, notamment les DTD et les XML Schema. Il explique les concepts clés des DTD comme les éléments, attributs, entités et leur déclaration. Il présente également les avantages et limites des DTD par rapport aux XML Schema.

Transféré par

Ons Nouili
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
156 vues35 pages

DTD XSD

Ce document décrit les schémas XML, notamment les DTD et les XML Schema. Il explique les concepts clés des DTD comme les éléments, attributs, entités et leur déclaration. Il présente également les avantages et limites des DTD par rapport aux XML Schema.

Transféré par

Ons Nouili
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

2.

Schémas XML
Ouvrages recommandés :
• XML in a nutshell – S. Means & E.R. Harold - Edition O'Reilly
(Bibliothèque UMLV)
• XML Schéma – E. Van Der Vlist – Edition O'Reilly (Bibliothèque
UMLV).

[Link]é [1 ]
Introduction
● Comment échanger des données d'un langage
XML à un autre.
– Il faut décrire formellement les deux
langages : des schémas
– Réaliser une transformation en utilisant les
schémas.
● Plusieurs solutions pour définir des schémas :
– DTD (Document Type Definition)
– XML Schema
– RelaxNG
[Link]é [2 ]
Document valide
● Un document 'valide' est un document qui
respecte la grammaire définie dans un schéma.
● Différent de 'bien formé', condition nécessaire
pour un document XML, qui indique que le
document respecte les règles standards
d'écriture d'un doc. XML.
● Document 'valide' <=> structure OK
● Document 'bien formé' <=> syntaxe OK

[Link]é [3 ]
DTD

● Structure le document
– DTD=Classe / Document=instance
– Contraint la syntaxe
– Exemple:
● Livre = Titre + Contenu

● Titre = TEXT

● Contenu = Chapitre(s) + References

● Chapitre = Section(s) …

[Link]é [4 ]
DTD - élément
● Déclaration des éléments: <!ELEMENT … >
– <!ELEMENT UL (LI)+>
– Déclaration implicite de leur imbrication => structure
d’arbre
– Syntaxe
● X* : 0 ou plus occurrence(s) de X

● X+ : 1 ou plus occurrence(s) de X

● X? : X est présent une fois au plus

● -X : pas d’occurences de X

● X¦Y : X OU Y

● X,Y : X ET Y (dans l’ordre)

● X&Y : X ET Y (pas forcément dans l’ordre)

● EMPTY, ANY : Vide ou quelconque

● #PCDATA : contient du texte

[Link]é [5 ]
DTD – élément (2)
● On peut définir des modèles de contenu autorisant le
mélange de données et éléments.
● Syntaxe :
(#PCDATA | nomElement1 | ... | nomElementn)
● Exemple d'une déclaration
<!ELEMENT p (#PCDATA | em | exposant | indice)*>
<!ELEMENT em (#PCDATA |exposant|indice)*>
<!ELEMENT exposant (#PCDATA)>
<!ELEMENT indice (#PCDATA)>
● Exemple d'utilisation
<p> un paragraphe contenant du texte <em> mis en 
evidence</em> ou <exposant> exposant </exposant></p>

[Link]é [6 ]
DTD - attribut
● Déclaration des attributs: <!ATTLIST … >
– <!ATTLIST TD
  valign (top|middle|bottom|baseline) #IMPLIED
  ... >
– Déclaration de leur nécessité (syntaxe contrainte)
– CDATA : caractères
– ID : Lettres uniquement, et unique sur le document
– IDREF: Reference sur ID
– IDREFS : Plusieurs valeurs de ID
– ENTITY, ENTITIES
– NMTOKEN, NMTOKENS (utilisation avancée)

[Link]é [7 ]
DTD – attribut (2)
● Déclaration des attributs: <!ATTLIST … >
– <!ATTLIST TD
  valign (top|middle|bottom|baseline) #XXX >
– 4 valeurs possibles pour XXX :
● La valeur par défaut de l'attribut

● REQUIRED et chaque élément instance devra


posséder cet attribut.
● IMPLIED et la présence de cet attribut est
facultative.
● FIXED : fixe la valeur de cet attribut pour tout
élément instance. Il n'est pas nécessaire de répéter
cet attribut.

[Link]é [8 ]
Exemple avec DTD
 <?xml version="1.0"?>
<!DOCTYPE famille SYSTEM "[Link]">
<famille>
   <personne>
     <nom>Durand</nom>
     <prenom>Jean</prenom>
     <age>28 ans</age>
   </personne>
   <personne>
     <nom>Durand</nom>
     <prenom>Marie</prenom>
     <age>20 ans</age>
   </personne>
</famille>

[Link]é [9 ]
Et sa DTD
<?xml version="1.0" encoding="ISO­8859­1"?>
<!ELEMENT famille (personne+)>
<!ELEMENT personne (nom, prenom,age)>
<!ELEMENT nom (#PCDATA)>
<!ELEMENT prenom (#PCDATA)>
<!ELEMENT age (#PCDATA)>

Le nom du fichier est [Link]

[Link]é [10 ]
Un autre exemple
<?xml version="1.0"?>
<!DOCTYPE famille SYSTEM "[Link]">
<famille>
<personne
   nom="Durand"
  prenom="Jean"
  age = "28 ans"/>
<personne
   nom="Cure"
  prenom="Marie"
  age = "20 ans"/>
</famille>

[Link]é [11 ]
Et sa DTD
<?xml version="1.0" encoding="ISO­8859­1"?>
<!ELEMENT famille (personne+)>
<!ELEMENT personne EMPTY>
<!ATTLIST personne
   nom CDATA #REQUIRED
   prenom CDATA #REQUIRED
   age CDATA #REQUIRED>

Le nom du fichier est [Link]

[Link]é [12 ]
DTD - Doctype
● Une PI (ou Processing Instruction) qui s'insère dans
le prologue d'un document XML dans le but
d'associer une DTD au document.
● Possibilité de déclarer la DTD en interne du
document ou en externe.
● En externe, il existe 2 déclarations différentes :
– Avec le mot réservé "SYSTEM"
– Avec le mot réservé "PUBLIC"

[Link]é [13 ]
DTD – Interne au
document
<?xml version="1.0"?> Le nom de
<!DOCTYPE articles [ l'élément racine
<!ELEMENT articles (article+)> du document
<!ELEMENT article (nom)>
<!ELEMENT nom (#PCDATA)>
]>
<articles>
<article>
<nom>X1090AB</nom>
</article>
<article>
<nom>Y9968AZ</nom>
</article>
</articles>

[Link]é [14 ]
DTD – Externe au
document

[Link]é [15 ]
DTD – externe avec
SYSTEM
● Syntaxe avec localisation absolue:
<!DOCTYPE livre SYSTEM "/home/user1/dtds/[Link]">
<!DOCTYPE livre SYSTEM "<
[Link]
● Syntaxe avec localisation relative: SID

<!DOCTYPE livre SYSTEM "dtds/livre/dtd">
<!DOCTYPE livre SYSTEM "../../dtds/[Link]">
● Un SID (System Identifier) est une URI permettant
d'accéder à une DTD.

[Link]é [16 ]
DTD – externe avec
PUBLIC
● Méthode rarement utilisée, elle permet d'accéder
via un identifiant officiellement déclaré à une DTD
publique. Il est nécessaire de déclarer un tel
identifiant auprès d'organismes : ISO, GCA
(American Graphic Communication Association).
● La définition prévoit de définir un second
identifiant qui correspond à un identifiant
SYSTEM.

[Link]é [17 ]
DTD – externe et interne
● On peut mélanger les sources
(externe et interne) de DTD.
Lecture de DTD interne avant
l'externe.
● Exemple :
<?xml version="1.0">
<!DOCTYPE famille SYSTEM "dtds/[Link]" 
[ ... ] >
<famille>
...
</famille>

[Link]é [18 ]
DTD – Entités
● Une séquence de caractères (nom de l'entité)
utilisée pour représenter une autre séquence de
caractères (contenu de l'entité).
● Une entité est déclaré dans une DTD.
● Déclaration d'une entité générale (ne peut
s'appliquer dans la DTD).
<!ENTITY nom "contenu">
● Exemple (code Unicode pour copyright)
<!ENTITY copyright "&#xa9">

Dans le document : <copyright> &copyright; 


2004</copyright>
[Link]é [19 ]
DTD – Entités (2)
● Une entité paramètrée s'applique dans une DTD.
● Déclaration :
<!ENTITY % nom contenu>
● Exemple
<!ENTITY % pcdata "#PCDATA">
<!ELEMENT titre %pcdata;>

[Link]é [20 ]
DTD – Entités externes
● Permet de copier le contenu d'un document XML dans le
document courant.
● Déclaration
<!ENTITY contenudoc1 SYSTEM "
[Link]
<document>
&contenudoc1;
</document>

[Link]é [21 ]
DTD – Entités non
analysées
● Permet de copier le contenu d'un document quelconque
dans le document courant.
● Déclaration
<!ENTITY image1 SYSTEM "
[Link]
GIF89a>
<image src="image1"/>
● En général l'attribut (ici src) est du type ENTITY ou
ENTITIES.

[Link]é [22 ]
Limites de DTD
● Syntaxe non XML
● Pas de support des espaces de noms
● Modularité limitée
● Modèle limité :
– Contraintes de structures trop simplistes
(nombre, modèle mixte, etc.).
– Pas de contraintes sur les données
● Autres solutions :
– XML Schema (W3C), RelaxNG (OASIS)

[Link]é [23 ]
XML Schema
● Développé par le W3C
● Norme officielle
● Modèle riche et évolué
● Syntaxe XML
● Exploitation des espaces de noms
● Mais verbeux et complexe

[Link]é [24 ]
XSD - Les types
● Notion centrale de type :
– Chaque élément (attribut) possède un type.
– Approche objet : il existe de types de base et on peut
dériver de nouveaux types.
– Catégories :
● Types simples (simpleType)
– Un élément de ce type ne peut contenir
d'autres éléments. Un attribut présente un
type simple.
● Types complexes (complexType)
– Les éléments qui contiennent d'autres
éléments et/ou des attributs.

[Link]é [25 ]
Structure d'un schéma
XML
● C'est un document XML bien
formé(arbre) avec :
– Une racine schema,
– Une suite de définitions de types,
d'éléments et d'attributs
<?xml version="1.0"?>
<xsd:schema xmlns:xsd="[Link]
">
...
</xsd:schema>

[Link]é [26 ]
XSD : définition d'un
élément
● Au niveau global
● Dans la définition d'un type complexe
● Avec un élément element :
– Attribut name : nom de l'élément.
– Attribut type : type de l'élément.
– Attribut fixed : valeur de l'élément fixée ou à préciser.
– Attribut default : valeur par défaut lorsque l'élément est
présent mais avec un contenu vide.
– Attribut minOccurs, maxOccurs : spécifier les cardinalités
min et max.
● En donnant un type sans nom, on doit définir le type de
l'élément directement comme descendant du noeud
element.
[Link]é [27 ]
XSD : définition d'un
attribut
● Au niveau global
● Dans la définition d'un type complexe
● Avec un élément attribut :
– Attribut name : nom de l'attribut.
– Attribut type : type de l'attribut (forcément un type simple,
éventuellement obtenu par dérivation).
– Attribut fixed : valeur de l'élément fixée.
– Attribut default : valeur par défaut.

[Link]é [28 ]
XSD – types simples
● string,
● boolean,
● float, decimal, integer, nonPositiveInteger,
negativeInteger, nonNegativeInteger, positiveInteger
● timeDuration, timeInstant, time, timePeriod, date, month,
year, century
● UriReference
● ID, IDREF, ENTITY, NOTATION, QName, Name
● On peut restreindre chaque type à l'aide de facets et on
obtient alors un type dérivé, toujours simple :
– Valeur minimale ou/et maximale
– Longueur (min, max, exacte)
– Nombre de chiffres
– Expression régulière
– Énumération des valeurs possibles.
– etc..
[Link]é [29 ]
XSD – Exemple de dérivation
de types simples
<xsd:simpleType name="smallInt">
<xsd:restriction base="xsd:integer">
<xsd:minInclusive value="0"/>
<xsd:maxInclusive value="100"/>
</xsd:restriction>
</xsd:simpleType>

[Link]é [30 ]
XSD – types complexes
● Construction à base de séquence(s) :
– Élément sequence
– Contenu indique les fils exigés par le type à l'aide des
éléments element :
● Attribut ref : permet d'utiliser un élément déjà défini
● Attribut minOccurs et maxOccurs : définition des
cardinalités
– Contenu mixte : attribut mixed="true" pour l'élément
complexType
– On précise les attributs à l'aide d'attribut :
● Attribut ref : permet d'utiliser un attribut déjà défini
● Attribut use : précise si l'attribut est optional, prohibited
ou required .
[Link]é [31 ]
XSD – types complexes (2)
● L'attribut content de l'élément complexType peut prendre les
valeurs suivantes :
– elementOnly, la valeur par défaut, et le contenu de l'élément
est composé d'un ou plusieurs élément(s).
– textOnly pour un contenu du type string.
– empty pour un contenu vide
– mixed pour définir un contenu mixte.
● Exemple :
<xsd:element name="personne">
 <xsd:complexType content="empty">
  <xsd:attribute name="nom" type="xsd:string">
....
<personne nom="Durand"/>

[Link]é [32 ]
XSD - Schema (exemple)
<xsd:schema xmlns:xsd="[Link]

<xsd:element name="article" >
  <xsd:complexType content="elementOnly">
    <xsd:element name="titre" type="xsd:string" 
minOccurs="1" />
    <xsd:element name="auteur" type="xsd:string" 
minOccurs="1" />
    <xsd:element name="date" type="xsd:string" 
minOccurs="1" />
    <xsd:element name="lieu" type="xsd:string" 
minOccurs="1" />
  </xsd:complexType>
</xsd:element> 

</xsd:schema> 

[Link]é [33 ]
Exemple avec schéma
<?xml version="1.0"?>
<famille 
   xmlns:xsi="[Link]
   xsi:noNamespaceSchemaLocation="[Link]">
   <personne>
     <nom>Durand</nom>
     <prenom>Jean</prenom>
     <age>28 ans</age>
   </personne>
   <personne>
     <nom>Durand</nom>
     <prenom>Marie</prenom>
     <age>20 ans</age>
   </personne>
</famille>

[Link]é [34 ]
Et son schéma
<?xml version="1.0"?>
<xsd:schema xmlns:xsd="[Link]
<xsd:element name="famille">
   <xsd:complexType>
     <xsd:sequence>
        <xsd:element ref="personne" minOccurs="1" maxOccurs="unbounded"/>
     </xsd:sequence>
   </xsd:complexType>
</xsd:element>
<xsd:element name="personne">
   <xsd:complexType>
     <xsd:sequence>
        <xsd:element name="nom" type="xsd:string"/>
        <xsd:element name="prenom" type="xsd:string"/>
        <xsd:element name="age" type="xsd:string"/>
     </xsd:sequence>
   </xsd:complexType>
</xsd:element>
</xsd:schema>

[Link]é [35 ]

Vous aimerez peut-être aussi