0% ont trouvé ce document utile (0 vote)
25 vues37 pages

ChapitreV XML

XML (eXtensible Markup Language) est un langage de balisage utilisé pour structurer des données et faciliter l'échange d'informations entre applications. Il permet de définir des éléments, attributs et schémas, offrant ainsi une flexibilité dans la modélisation des données. Bien que XML présente des avantages tels qu'une technologie structurante et une large applicabilité, il souffre de faiblesses comme une syntaxe verbeuse et une consommation élevée de ressources.

Transféré par

Karim Labidi
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)
25 vues37 pages

ChapitreV XML

XML (eXtensible Markup Language) est un langage de balisage utilisé pour structurer des données et faciliter l'échange d'informations entre applications. Il permet de définir des éléments, attributs et schémas, offrant ainsi une flexibilité dans la modélisation des données. Bien que XML présente des avantages tels qu'une technologie structurante et une large applicabilité, il souffre de faiblesses comme une syntaxe verbeuse et une consommation élevée de ressources.

Transféré par

Karim Labidi
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

XML

Karim LABIDI

ISET CHARGUIA

2021
XML
• XML = eXtensible Markup Language
• XML est un langage pour structurer des contenus et définir une classe d’objets de
données, par exemple:
• un dessin vectoriel (SVG), une page Web (XHTML), un flux (RSS)…
• Le langage est basé sur le concept de balisage des données
• Un document XML:
• contient des déclarations, éléments, commentaires, définition de caractères
spéciaux et instructions (facultatives) de traitement
• c’est un arbre: il doit avoir une racine et les éléments doivent s’imbriquer
proprement
• Plus simple que SGML, plus complexe mais moins confus et plus performant que
HTML
• Idéal pour l'échange de données semi-structurées
• Utilisable entre machines

2
XML (1)
• XML, c’est donc…
• un méta-langage universel pour structurer les données…
• qui permet aux utilisateurs de délivrer du contenu…
• depuis les applications à d'autres applications (browsers par exemple)
• XML promet de standardiser la manière dont l'information est :
• échangée (XML)
• personnalisée/présentée (XSL/CSS)
• recherchée (XPath/XSLT/XQuery)
• sécurisée (Encryption, Signature)
• liée (XLink)

4
XML (2)
• Balise (ou tag ou label)
• marque de début et fin permettant de repérer un élément de données (textuel)
• forme: <balise> de début, </balise> de fin
• les balises indiquent la signification des sections marquées
• Elément de données
• texte encadré par une balise de début et une de fin
• les éléments de données peuvent être imbriquées
• Attribut
• couple nom="valeur" qualifiant une balise
• <producteur no="160017" region="Bourgogne"/>
• Les utilisateurs définissent leurs propres balises
• Il est possible d'imposer une grammaire spécifique (DTD, Schéma)

5
XML: un exemple
Déclaration Entête
<?xml version=”1.0” ?>
<!DOCTYPE adresses SYSTEM “http://www.loria.fr/adr.dtd”> Type de
<!-- Mon fichier d’adresses --> document
Commentaire
<adresses> Racine du document
<personne id =”p01” > Attribut
<type rang=”maître de conférences” /> Élément vide
<nom>Perrin</nom>
<prenom>Olivier<prenom> Élément non vide
<adresse>IUT Nancy-Charlemagne, Université de Nancy 2 </adresse>
</personne> Balise d’ouverture Balise de fermeture
</adresses>

Corps du
document

6
XML: format interne
• C’est un arbre

7
XML: format interne
• C’est un arbre

7
Pourquoi XML ?
• Définir vos propres langages d’échange
• commande, facture, bordereau de livraison, etc.
• Modéliser des données et des messages
• Document Type Definition (DTD)
• types et éléments agrégés (XML Schema Definition)
• passerelle avec Unified Modelling Language (UML)
• Publier des informations
• indépendante du format
• mise en forme avec CSS et XSL
• présentation possible en XHTML, PDF, WML,…
• Archiver des données
• auto-description des archives

8
Comparaison Données/Documents
• Approche « Donnée »
• structuration forte et simple
• compatibilité SGBDR existants
• mise à jour en place
• intégrité sémantique
• indexation exacte
• adapté au transactionnel et décisionnel
• performances « moyenne » à « forte » pour une volumétrie « moyenne »
• Approche « Document »
• structuration faible et complexe
• systèmes documentaires spécialisés
• gestion de versions
• recherche textuelle
• indexation approchée
• accès type moteur de recherche
• performances « moyenne » pour une volumétrie « forte » 9
Avantages de XML
• Une technologie structurante
• Clarifie toutes les interfaces d'échange
• Transversale à l'entreprise
• échanges de données
• bureautique
• GED
• sites Web
• EDI
• bases de données
• intégration e-business
• …
• Un choix stratégique de direction
• ne pas rester isolé

10
Faiblesses de XML
• Une syntaxe verbeuse
• Un méta-langage, mais de nombreux langages
• Coûteux en CPU
• analyse
• Coûteux en mémoire
• instanciation

11
XML et BD
• Intégration des données et méta-données
• Standard d’échange de données universel
• Les BD ne peuvent rester indifférentes :
• nécessité de stocker les documents XML
• nécessité de pouvoir interroger ces documents
• évolution ou révolution ?
• Quel modèle de données ?
• Quel langage d'interrogation ?
• Quelle intégration avec l'existant ?

12
Modèles de
données
Document XML
• Un document XML peut être associé à:
• une DTD ou un schéma pour décrire la structure du document XML
• une feuille de style pour présenter les données
• DTD ou/et schéma permettent de définir son propre langage basé sur XML
• vocabulaire (balises)
• grammaire (imbrications)

• Deux types de documents


• well-formed document
• valid document

14
Document bien formé (well-formed)
• Commence par une déclaration XML (attribut version obligatoire) avec possibilité de
choisir un encodage (le défaut est utf-8):
<?xml version="1.0" encoding="ISO-8859-1"?>
• Structure hiérachique:
• les balises d’ouverture et de fermeture doivent apparaître et correspondre
• pas de croisements de type <i>...<b>...</i> .... </b>
• sensible à la casse: "LI" n’est pas égal à "li" par exemple
• balises "EMPTY" utilisent la syntaxe XML "auto-fermante": <br/>
• les valeurs d’attributs sont quotés: <a href="http://www.foo.fr/xml.html">
• un seul élément racine (root):
• l’élément root ne peut apparaître qu’une fois et ne doit pas apparaître dans un
autre élément
• Caractères spéciaux (!!) : <, &, >,", ’
• utilisez &lt; &amp; &gt; &aquot; &apos; à la place dans un texte !
• les espaces sont préservés
15
Document valide (valid)
• Un document “valide” doit être:
• “well-formed” (formé correctement)
• être associé à une DTD (ou une autre grammaire)
• et être conforme à cette DTD ou une grammaire d’un autre
type comme XSD (XML Schema Definition).

16
XML Schema
• Un schéma d'un document définit:
• les éléments possibles dans le document
• les attributs associés àces éléments
• la structure du document
• les types de données
• Le schéma est spécifié en XML
• pas de nouveau langage
• balisage de déclaration
• espace de nom spécifique xsd: ou xmlns:
• Présente de nombreux avantages
• structures de données avec types de données (expressivité accrue)
• extensibilité par héritage et ouverture
• analysable à partir d'un parseur XML standard (c’est du XML)

35
Objectifs
• Reprendre les acquis des DTD
• plus riche et complet que les DTD
• Permettre de typer les données
• éléments simples et complexes
• attributs simples
• Permettre de définir des contraintes
• existence, obligatoire, optionnel
• domaines, cardinalités, références
• patterns, ...
• S'intégrer à la galaxie XML
• espace de noms
• infoset (structure d'arbre logique)

36
Modèle des schémas
• Déclaration des éléments et attributs
• nom
• typage similaire à l'objet
• Spécification de types simples
• grande variété de types
• Génération de types complexes
• sequence
• choice
• all

37
Un premier exemple
Élément racine d'un schéma
 Comme tout document XML bien formé, un schéma a un élément racine dont le
nom est toujours xs:schema.
 Pour que le préfixe xs soit connu dans tout le schéma, il doit être déclaré dans
l'élément racine à l'aide de l'attribut xmlns:xs.
 Un schema a la forme suivante:

<?xml version="1.0" encoding="UTF-8"?>


<xs:schema
xmlns:xs="http://www.w3.org/2001/XMLSchema">
<-- corps du schéma -->
</xs:schema>
Liaison entre un document XML
et un schema
 La liaison entre un document XML et le schéma qui le décrit
se fait dans l'élément racine du document.

<?xml version="1.0" encoding="UTF-8"?>


<-- début du document -->
<nom_elt_racine xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
<-- corps du document -->
</nom_elt_racine>
Commandes de base
• element: association d'un type à une balise
• attributs name, type, ref, minOccurs, maxOccurs,…

• attribute: association d'un type à un attribut


• attributs name, type

• type simple: les multiples types de base


• entier, réel, string, time, date, ID, IDREF,…
• extensibles par des contraintes

• type complexe: une composition de types


• définit une agrégation d'éléments typés

39
Types simples
• string, normalizedString, token
• byte, unsignedByte
• base64Binary, hexBinary
• integer, positiveInteger, negativeInteger, nonNegativeInteger, nonPositiveInteger, int,
unsignedInt
• long, unsignedLong
• short, unsignedShort
• decimal, float, double
• boolean
• time, dateTime, duration, date, gMonth, gYear, gYearMonth, gDay, gMonthDay
• Name, QName, NCName, anyURI
• language
• ID, IDREF, IDREFS
• ENTITY, ENTITIES, NOTATION, NMTOKEN, NMTOKENS

38
Déclaration d’un élément
 Syntaxe d'un élément simple
<xs:element name=« x » type=« y »>
XSD a beaucoup de type de données prédéfinis. Les plus courants sont : xs:string,
xs:decimal, xs:integer; xs:Boolean, xs:date, xs:time

XML
<nom>Dupont</nom>
<age>25</age>
<date>2013-11-01</date>
XSD
<xs:element name="nom" type="xs:string"/>
<xs:element name="age" type="xs:integer"/>
<xs:element name="date" type="xs:date"/>
Déclaration d'attributs
 Les éléments simples ne peuvent pas avoir d'attributs. Si un
élément a des attributs, il est considéré comme étant d'un
type complexe.
 En revanche, l'attribut lui-même est toujours de type
simple.

 XML :
<titre lang="FR">XSD pour les nuls</titre>
 XSD:
<xs:attribute name="lang" type="xs:string" default="FR"/>
 Avec attribut obligatoir : mot clé use
<xs:attribute name="lang" type="xs:string" use="required"/>
Déclaration d’éléments complexes 1/2
 Élément vide avec attribute : exemple l’id d’un article
<xs:element name="article">
<xs:complexType>
<xs:attribute name="id" type="xs:positiveInteger"/>
</xs:complexType> </xs:element>

 Élément texte avec attribut

<xs:element name="shoesize">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:integer">
<xs:attribute name="country" type="xs:string" />
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
Déclaration d’éléments complexes 2/2
 Exemple
<lettre>
Fait le <date>2013-11-01</date> à <ville>Compiègne</ville>, A l'intention de
M. <nom>Jean Dupond</nom>, ...
<lettre>
 XSD
<xs:element name="lettre">
<xs:complexType mixed="true">
<xs:sequence>
<xs:element name="date" type="xs:date"/>
<xs:element name="ville" type="xs:string"/>
<xs:element name="nom" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
Les types complexes
 Séquences d'éléments
 xs:sequence : Permet de déclarer un élément comme pouvant
contenir une suite de sous-éléments dans un ordre déterminé.
 Choix d'élément
 xs:choice: indique qu’on peut avoir soit tel ou tel élément.

<xs:complexType name="typePersonne">
<xs:sequence>
<xs:element name="nom" type="xs:string" />
<xs:element name="prénom" type="xs:string" />
<xs:element name="dateDeNaissance" type="xs:date" />
<xs:choice>
<xs:element name="adresse" type="xs:string" />
<xs:element name="adresseElectronique" type="xs:string" />
</xs:choice>
</xs:sequence>
<xs:element name="téléphone" type="numéroDeTéléphone" />
</xs:complexType>
Les types complexes

 L'élément all
 Il indique que les éléments enfants doivent apparaître une
fois (ou pas du tout), mais dans n'importe quel ordre. Cet
élément xs:all doit être un enfant direct de l'élément
xs:complexType. Par exemple…
<xs:complexType>
<xs:all>
<xs:element name="nom" type="xs:string" />
<xs:element name="prénom" type="xs:string" />
<xs:element name="dateDeNaissance" type="xs:date" />
<xs:element name="adresse" type="xs:string" />
<xs:element name="adresseElectronique" type="xs:string" />
<xs:element name="téléphone" type="numéroDeTéléphone" />
</xs:all>
</xs:complexType>
Les restrictions
 Lorsqu'un élément ou un attribut XML a un
type de données défini, il impose des
restrictions sur son contenu.
 Il faut utiliser le mot clé : restriction
 Nombre borné:
 minInclusive value=“valeur_min”
 maxInclusive value=“valeur_max”

 Choix de valeur restreint:


 mot clé enumeration
Eléments complexes : 3 types de contenus

 Concernant les types complexes, il est important de noter


qu'il existe 3 types de contenus possibles :
 Les contenus simples.
 Les contenus "standards".
 Les contenus mixtes.
 Les contenus simples
 Le premier type de contenu possible pour un élément
complexe est le contenu simple.
 On appelle contenu simple, le contenu d'un élément complexe
qui n'est composé que d'attributs et d'un texte de type simple.

<xsd:element name="mon_nom">
<xsd:complexType>
<!-- contient un attribut et du texte --> <xsd:simpleContent>
<prix devise="euros">35</prix> <xsd:extension base="mon_type">
<xsd:attribute name="mon_nom"
type="mon_type"/>
<!-- contient un attribut et du texte --> </xsd:extension>
<voiture marque="Renault">Clio</voiture> </xsd:simpleContent>
</xsd:complexType>
</xsd:element>
Eléments complexes : 3 types de
contenus

 Contenus "standards"
 c'est le contenu d'un élément complexe qui n'est composé
que d'autres éléments (simples ou complexes) ou
uniquement d'attributs.

<!-- contient d'autres éléments --> <xsd:element name="voiture">


<personne> <xsd:complexType>
<nom>DUPONT</nom> <xsd:attribute name="marque"
<prenom>Robert</prenom> type="xsd:string"/>
</personne> </xsd:complexType>
</xsd:element>
<!-- contient un attribut -->
<voiture marque="Renault"/>
Eléments complexes : 3 types de
contenus

 Les contenus mixtes


Un contenu mixte est le contenu d'un élément complexe qui
est composé d'attributs, d'éléments et de texte.
 Pour déclarer un élément complexe au contenu mixte, voici
la syntaxe à utiliser : mixed

<balise1> <xsd:element name="mon_nom">


Ceci est une chaîne de caractères <xsd:complexType mixed="true">
<balise2>10</balise2> <!-- liste des éléments -->
7.5 </xsd:complexType>
</balise1> <!-- liste des attributs -->
</xsd:element>
Héritage
• Définition de sous-types par héritage
• par extension: ajout d'informations
• par restriction: ajout de contraintes
• Possibilité de contraindre la dérivation
• Exemple :
<complexType name="AdressePays">
<complexContent>
<extension base="Adresse">
<sequence>
<element name="pays" type="string"/>
</sequence>
</extension>
</complexContent>
</complexType>

42
Patterns
• Contraintes sur type simple prédéfini
• Utilisation d'expression rationnelles (regular expressions)
• similaires à celles de Perl
• Exemple
<xsd:simpleType name="pourcentage">
<xsd:restriction base="xsd:string">
<xsd:pattern value="([0-9]|[1-9][0-9]|100)%"/>
</xsd:restriction>
</xsd:simpleType>

43
Conclusion
• Schémas flexibles et irréguliers
• optionnels, avec ou sans DTD
• Données auto-descriptives
• balises et attributs
• Modèle de type hypertexte
• support des références
• Éléments atomiques ou complexes
• composition par agrégation
• Types de données variés et extensibles
• textes, numériques, …, types utilisateur

44

Vous aimerez peut-être aussi