• Aucun résultat trouvé

[PDF] Langage XML cours complet avec exemples pratiques - Cours xml

N/A
N/A
Protected

Academic year: 2021

Partager "[PDF] Langage XML cours complet avec exemples pratiques - Cours xml"

Copied!
165
0
0

Texte intégral

(1)

ENIS 2008-2009

Introduction

Introduction

XML:

XML:

eXtensible

eXtensible

Markup

Markup

Language

Language

id848656 pdfMachine by Broadgun Software - a great PDF writer! - a great PDF creator! - http://www.pdfmachine.com http://www.broadgun.com

(2)

GML (1969)

IBM (Goldfarb, Mosher&Lory)

SGML (1986) Normalisation ISO 8879 XML (1998) Recommandation W3C HTML (1992) Recommandation W3C XHTML (1999) Recommandation W3C Solution de la gestion et de la publication documentaire Application (i.e. DTD) de SGML pour la présentation des documents sur le Web, Langage de visualisation, non adapté à l’échange entre programmes Méta-langage de structuration, simplifié compatible SGML, permet de: • Normaliser et structurer

l’information avec un point de vue sémantique

• Séparer le contenu

informatif des données de leur représentation

• Échanger/partager les

données … et HTML

devient une

instance de XML ; XHTML utilise les mêmes balises que HTML avec une syntaxe XML et des contraintes de mises en forme plus strictes.

Méta-langage général de balisage ; Normalisation de GML,

Puissant mais complexe, taille des spécifications imposantes (>500pages) Introduit la notion de DTD (grammaire spécifique à une application)

Introduction

(3)

ENIS 2008-2009

Introduction

Introduction

XML versus SGML

• Le modèle de référence : SGML

• Standard : normalisé depuis 1986 (ISO 8879)

• Generalized : langage généraliste de haut niveau d’abstraction

• Utilisé dans le monde de la gestion documentaire et de la publication • Permet d’établir une distinction claire entre l’information (mots, images, etc .) et la présentation de l’information (polices, couleurs, organisation, etc .)

• Markup : fondé sur la définition et l’utilisation de balises

• Syntaxe permissive (balises non refermées, attributs vides, etc .)

• Language : décrit des informations relatives au contenu du document

• Repose sur la définition de structures (DTD) pour normaliser la rédaction • Objectifs spécifiques de XML :

• XML doit pouvoir être utilisé sans difficulté sur Internet

• Il doit être facile d’écrire des programmes qui manipulent du XML • Il doit être facile de créer et de lire des documents XML (intelligibilité) • le nombre d’options doit être réduit au minimum.

(4)

Introduction

Introduction

XML versus HTML

• HTML (HyperText Markup Language) est un langage dédié :

• Application de SGML pour la présentation de documents sur le web. • La vocation de XML n’est pas de se substituer à HTML :

• Structuration versus présentation

• HTML répond à la question comment présenter des données ? • XML répond à la question comment structurer des données ? • Fond versus forme

• HTML s’intéresse à la forme • XML s’intéresse au fond

• XML et HTML sont complémentaires :

• L’évolution du web va vers une séparation du fond et de la forme • Il faudra conserver un langage de mise en forme style HTML

(5)

ENIS 2008-2009

Introduction

Introduction

• XHTML n’autorise pas les simplifications que l’on pouvait se permettre en HTML. Une page XHTML est donc un document XML utilisant un langage clairement spécifié. Un programme de validation peut y être appliqué pour s’assurer de sa conformité parfaite. Plus de fiabilité, c’est ce qu’apporte un langage XML.

(6)

Introduction

Introduction

X

X

ML : Définition

XML est un méta-langage de description des données, c'est-à-dire qu’il permet de définir des langages de description d’informations structurées, encore appelés langages de structuration.

En soi, XML ne sert à rien (au sens applicatif du terme). En revanche, il est possible, à partir d’une de ces descriptions des données, d’utiliser les nombreuses applications de XML pour «faire quelque chose » avec ces données. Par exemple : affichage en HTML, traitements automatiques des données (extraction de données, tri, transformation…). XML permet notamment (liste non exhaustive) de :

• Normaliser et structurer l’information avec un point de vue sémantique. • Séparer le contenu informatif des données de leur représentation.

(7)

ENIS 2008-2009

Introduction

Introduction

XML et les bases de données

Les bases de données relationnelles offrent des performances intéressantes mais elles n’optimisent pas les usages courants. (mélanger dans une même base des données de même nature mais sans dépendance entre elles).

XML permet de stocker des données selon des regroupements correspondant aux usages principaux : les données

sont regroupées selon leurs

(8)

Concepts de base

Concepts de base

XML:

(9)

ENIS 2008-2009

Description d

Description d

un document XML

un document XML

Prologue (Entête du document) Élément document (élément racine) Balise fermante Commentaire Racine du document Balise ouvrante Déclaration XML XML est la spécification de la syntaxe du langage de structuration. Un document XML est dit «bien formé» s’il respecte la syntaxe XML.

<?xml version="1.0" encoding="ISO-8859-1" standalone="yes"?> <!-- Nom du fichier : BIBLIO.xml -->

<BIBLIO subject ="XML" >

<BOOK isbn="9782212" lang="fr" subject="applications"> <AUTHOR>

<FIRSTNAME> Jean-Chrisotophe </FIRSTNAME> <LASTNAME>Bernadac </LASTNAME>

</AUTHOR>

<TITLE> Construire une application XML </TITLE> <PUBLISHER>

<NAME> Eyrolles </NAME> <PLACE> Paris </PLACE> </PUBLISHER>

<DATEPUB>1999 </DATEPUB> </BOOK >

(10)

Description d

Description d

un document XML

un document XML

Le prologue d'un document XML comprend : • La déclaration XML <?xml version ="1.0" ?>

– Elle est optionnelle mais recommandée, notamment pour y faire figurer le numéro de version.

– Remarque : Si cette déclaration est incluse, l’attribut « version » doit nécessairement y figurer.

• L’encodage par l’attribut encoding <?xml version="1.0" encoding="ISO-8859-1"?>

– Il permet d’indiquer la représentation physique des caractères du fichier; afin d’éviter de coder chaque caractère spécial.

• Des commentaires <!-- Nom du fichier : BIBLIO.xml -->

– Ils peuvent également exister,

– Ils ne peuvent être placés à l’intérieur d’une balise et ne sont pas obligatoirement transmis à l’application.

(11)

ENIS 2008-2009

Description d

Description d

un document XML

un document XML

• L’attribut SDD (Standalone Document Declaration) :

<?xml version="1.0"encoding="ISO-8859-1" standalone="yes"?>

– Il permet de déterminer si le document est autonome (ou autodescriptif). Si ce n’est pas le cas, c’est qu’il fait référence à une DTD (ou un schéma XML) externe. Par défaut, un document XML est considéré comme autonome, puisque la DTD peut être omise.

• Remarque :

– Les attributs version, encoding et standalone qui figurent dans la déclaration doivent y figurer dans cet ordre.

– Le prologue du document peut également contenir une déclaration de type de document (DTD), pour spécifier des informations additionnelles sur celui-ci.

(12)

Description d

Description d

un document XML

un document XML

L'élément document est la seconde partie d'un document XML, correspond à un élément unique, élément racine (comparable au <BODY> en HTML) qui peut contenir d'autres éléments de données.

– Un élément de données est un texte encadré par une balise de début et une balise de fin.

– Un élément de données peut être enrichi par:

• d’autres éléments imbriqués (structure arborescente) dans le cas d’information de type complexe (énumérations, possède des propriétés)

• des attributs dans le cas d’information à valeur unique de type simple (information monovaluée)

<BOOK isbn="9782212" lang="fr" subject="applications">

Nom de l’élément

(13)

ENIS 2008-2009

Description d

Description d

un document XML

un document XML

La syntaxe XML comprend des règles strictes. Dans un document XML bien formé,

– Il doit y avoir une balise racine (qui englobe toutes les autres, BIBLIO dans l’exemple).

– Toute balise ouvrante doit être associée avec une balise fermante, sauf l’élément sans contenu (exemple: <BOOK/> = <BOOK> </BOOK>) .

– Il ne doit pas y avoir d’entrelacement de balises : <a><b></a></b> (syntaxe incorrecte).

– La casse (majuscules/minuscules) doit être respectée (case sensitive).

– Les noms des attributs doivent être notés en minuscule.

– Les valeurs des attributs doivent être notés entre guillemets ou apostrophes.

– Les caractères "<" et "&" sont interdits dans les contenus et remplacés par les entités "&lt;" et "&amp;".

– L’usage de ">" ou des guillemets simples ou doubles peut également être perturbant. Dans ce cas, on a recours à &gt;, &apos; et &quot;.

– Un nom doit commencer par une lettre ou par le caractère "_" et non par un chiffre ou un autre signe de ponctuation.

– Un nom ne peut pas commencer par la séquence de lettres x m l, quelle qu’en soit la casse.

(14)

Description d

Description d

un document XML

un document XML

Le non respect des conditions précédentes entraînera systématiquement une erreur.

<?xml version="1.0" standalone="yes"?> < date>

<mois > 09 </mois> <année> 2007 </année> </data>

(15)

ENIS 2008-2009

Description d

Description d

un document XML

un document XML

Le non respect des conditions précédentes entraînera systématiquement une erreur.

<?xml version="1.0" standalone="yes"?> <date>

<mois > 09 </mois> <année> 2007 </année> </data>

Après une première correction (suppression de l’espace dans l’élément date) ;

(16)

Description d

Description d

un document XML

un document XML

Le non respect des conditions précédentes entraînera systématiquement une erreur.

<?xml version="1.0" encoding="ISO-8859-1" standalone="yes"?>

<date>

<mois > 09 </mois> <année> 2007 </année> </data>

Après une deuxième correction (ajout de l’encodage dans l’entête) ;

(17)

ENIS 2008-2009

Description d

Description d

un document XML

un document XML

Le non respect des conditions précédentes entraînera systématiquement une erreur.

<?xml version="1.0" encoding="ISO-8859-1" standalone="yes"?> <date>

<mois > 09 </mois> <année> 2007 </année> </date>

Après une troisième correction (rectification du nom de l’élément de la balise de fermeture), on aboutit au code correct.

(18)

Exercice : structuration des donn

Exercice : structuration des donn

é

é

es en XML

es en XML

Une bouteille d'eau Cristaline de 150 cl contient par litre 71 mg d'ions positifs calcium, et 5,5 mg d'ions positifs magnésium. On y trouve également des ions négatifs comme des chlorures à 20 mg par litre et des nitrates avec 1 mg par litre. Elle est recueillie à St-Cyr la Source, dans le département du Loiret. Son code barre est 3274080005003 et son pH est de 7,45. Comme la bouteille est sale, quelques autres matériaux comme du fer s'y trouvent en suspension.

Une seconde bouteille d'eau Cristaline a été, elle, recueillie à la source d'Aurèle dans les Alpes Maritimes. La concentration en ions calcium est de 98 mg/l, et en ions magnésium de 4 mg/l. Il y a 3,6 mg/l d'ions chlorure et 2 mg/l de nitrates, pour un pH de 7,4. Le code barre de cette bouteille de 50 cl est 3268840001008.

Une bouteille de même contenance est de marque Volvic, et a été puisée à... Volvic, bien connu pour ses sources donnant un pH neutre de 7. Elle comprend 11,5 mg/l d'ions calcium, 8,0 mg/l d'ions magnésium, 13,5 mg/l d'ions chlorures et 6,3 mg/l d'ions nitrates. Elle contient également des particules de silice. Son code barre est 3057640117008.

(19)

ENIS 2008-2009

Les composants de XML

Les composants de XML

XML:

(20)

Les composants de XML

Les composants de XML

XML est un méta-langage de balisage. Plusieurs « entités » lui sont associées pour permettre la mise au point, la lecture ou la visualisation de l’information structurée.

–Un processeur (ou parser) XML :

– un module logiciel recevant en entrée un document XML, produisant en sortie une structure de représentation interne (graphe d’objets ou flux d’événements), vérifiant que les données sont bien formées.

– il permet de réaliser l’interface entre une application et un document XML. La structure produite est encapsulée par une surface applicative standardisée (API).

– deux types de parseurs; le parseur SAX et le parseur DOM.

Parseur XML Événements ou objets Application API Document XML

(21)

ENIS 2008-2009

Les composants de XML

Les composants de XML

Le modèle objet de document (DOM) : (standardisé par le W3C)

– Produit un graphe d’objets en mémoire.

– définit des interfaces qui permettent d’accéder aux objets (éléments) d’un document XML. Une interface propose des propriétés et des méthodes pour chaque type d’élément.

– représente un document XML sous la forme d’un arbre chargé en mémoire et fournit des interfaces permettant de le manipuler.

– a des interfaces indépendantes de tout langage de programmation; un avantage du point de vue de la standardisation mais un inconvénient car il n’est pas optimisé pour une langage particulier.

(22)

Les composants de XML

Les composants de XML

– un arbre est formé d’une racine Document , de nœuds internes (les éléments ou attributs) et de nœuds feuilles (contenant les valeurs d’élément ou attributs).

Méthodes d’accès et de modification

des informations du nœud courant Méthodes de modification des fils du nœud courant

getNodeName() : retourne le nom getNodeType() : retourne le type getNodeValue() : retourne la valeur

getOwnerDocument(): retourne le nœud document racine

hasChildNodes(): retourne true si le nœud possède un enfant

setNodeValue(): change la valeur CloneNode() :copie un noeud

insertBefore(Nouveau_Noeud,

Nœud_Reference) : insère un nouveau nœud fils avant le nœud référence déjà existant

Replace_Child(Nouveau_Noeud, Ancien_Nœud) : remplace un noeud removeChild(Noeud) supprime le nœud

appendChild(Noeud): ajoute un nœud à la fin de la liste des nœuds.

(23)

ENIS 2008-2009

Les composants de XML

Les composants de XML

Méthodes de navigation dans le

document à partir du nœud courant Méthodes pour la création des noeuds

getAttributes() : retourne les attributs

getChildNodes() : retourne les enfants du nœud

getFirstChild() : retourne le premier enfant du noeud

getLastChild(): retourne le dernier enfant du nœud

getParentNode (): retourne le parent du noeud CreatElement(Nom_Element) CreateAttribute (Nom_Attribut) . . .

(24)

Les composants de XML

Les composants de XML

Exemple : Création d’un document avec DOM

Soit l’exemple suivant

<nom ville = "Paris">

<prenom> Jean </prenom>

<nomfamille>Dupont </nomfamille> </nom>

(25)

ENIS 2008-2009

Les composants de XML

Les composants de XML

Public class ExempleDOM{

Public static main (String argc[ ]) throws IOException, DOMException {XMLDocument xmlDoc = new XmlDocument();

//création des nœuds

ElementNode nom = (ElementNode) xmlDoc.createElement("nom");

ElementNode prenom = (ElementNode) xmlDoc.createElement("prenom"); ElementNode nomfam = (ElementNode) xmlDoc.createElement("nomfamille"); //création de l’arbre xmlDoc.appendChild(nom); nom.appendChild(prenom); prenom.appendChild(xmlDoc.createTextNode("Jean"); Nom.appendChild(nomfamille); Nom.appendChild(xmlDoc.createTextNode("Dupont"); //positionnement d’un attribut Nom.setAttribute ("Ville","Paris"); //sortie System.exit(0); } }

(26)

Les composants de XML

Les composants de XML

L’API simplifiée pour XML (Simple API for XML), ou SAX : est

– une alternative au DOM standardisée par le groupe XML-DEV.

– adaptée à l’analyse de documents XML volumineux et est plus complexe à mettre en place, car elle nécessite la connaissance de la programmation en Java et l’installation d’un parser et d’un environnement de développement spécifiques.

– ne prend pas en compte la structure d’arbre d’un document; des événements sont renvoyés à chaque fois que le parseur rencontre une nouvelle balise.

– adapté à l’échange des données entre applications.

– SAX est une API légère et rapide, ne construit pas l’image de document en mémoire mais permet les traitements à la volée.

(27)

ENIS 2008-2009

Les composants de XML

Les composants de XML

Document XML Parser Flux XML ……. Méthodes utilisateur Événement StartDocument Événement StartElement Événement endDocument

Principe d’un parseur SAX Types d'événement :

– début et fin de document ; – début et fin d'éléments ; – attributs, texte, … .

(28)

Les composants de XML

(29)

ENIS 2008-2009

Les composants de XML

(30)

Les composants de XML

Les composants de XML

– Les espaces de nommage (XML Namespaces « xmlns ») Objectifs :

– mélanger du vocabulaire XML provenant de plusieurs grammaires.

– éviter les conflits entre des termes identiques ayant des significations différentes dans des domaines différents.

– identifier de manière unique les balises XML.

Principe

– associer une URI (Uniform Ressource Identifier) au nom de l’élément.

– l’URI peut être fictive (non vérifiée) et pointe (quand même) sur la grammaire de l’espace de nommage.

Exemple : dans le cas d’une entreprise, le document XML associé peut comporter deux sortes de noms, qu’il est important d’arriver à différencier ; le nom de l’entreprise et les noms de ses personnels. La solution proposée par «xmlns» est de définir les balises suivantes <personne:nom> et <entreprise:nom>.

(31)

ENIS 2008-2009

Les composants de XML

Les composants de XML

Le document XML associé à l’organisation de l’entreprise est :

<organisation

xmlns:entreprise="http://www.entreprise.org" xmlns:personne="http://www.personne.org"> <entreprise:nom>DocNum inc </entreprise:nom> <personne:nom>

<personne:nomdefamille> XX </personne:nomdefamille> <personne:prenom> YY </personne:prenom>

</personne:nom> </organisation>

(32)

Les composants de XML

Les composants de XML

– Utilisation de liens avec Xlink (XML Linking Langague) :

– une spécification qui permet de décrire les liens entre les documents.

– deux types de liens :

– lien simple (xlink:type ="simple") étend la notion de lien HTML aux documents XML, avec des compléments (possibilité de catégoriser les liens…)

– lien étendu (xlink:type ="extended") permet de définir des liens plus complexes (liens pointant vers des ressources multiples (cas de sites miroirs)…)

Exemple :

Version HTML <a href="doc.xml">

lien vers doc </a>

Version Xlink <monlien

xmlns:xlink="http://www.w3c.org/"

xlink:type="simple" xlink:href="doc.xml"> lien vers doc

(33)

ENIS 2008-2009

Les composants de XML

Les composants de XML

– XML permet de créer des liens vers d’autres documents mais aussi de pointer sur une partie précise d’un document XML.

Exemple : cas d’un lien simple qui pointe sur l’entrée de l’annuaire contenant le numéro de téléphone de Harry:

<monlien

xmlns : xlink="http://www.w3c.org/" xlink : type="simple"

xlink : href="annuaire.xml #xpointer(//entree[nom="Harry"])"> Numéro de téléphone de Harry dans l’annuaire

</monlien>

Requête Xpath ; Xpath est un langage d’expression de chemin pour adresser des parties des documents XML

(34)

Les composants de XML

Les composants de XML

Exemple : cas d’un lien étendu ; un tel lien se compose :

– d’un élément racine caractérisé par l’attribut xlink : type=« extended »

– des éléments fils de type « ressource », « locator » ou « arc »

– « ressource » et « locator » définissent les nœuds; ils sont similaires sauf que « ressource » sont de véritables nœuds alors que « locator » permettent de référencier des nœuds (attribut href en plus).

– « arc » définissent les arcs. <connexion xlink : type="extended" >

<ville xlink : type="ressource" label="P" title= "Paris"> La Capitale de la France </ville> <pville xlink:type="locator" label="M" title= "Marseille"> href=" …/ville/Marseille.xml" /> <pville xlink:type="locator" label="L" title= "Lyon"> href=" …/ville/Lyon.xml" />

<distance xlink:type="arc" from="P" to="L" > 420 km </distance> <distance xlink:type="arc" from="L" to="M" > 600 km </distance> <distance xlink:type="arc" from="P" to="M" > 900 km </distance> </connexion>

(35)

ENIS 2008-2009

Les composants de XML

Les composants de XML

Le langage de feuilles de styles associé à XML, XSL (Extended StyleSheet

Language) :

– permet la mise en forme de documents XML.

– se compose des langages XPATH, qui permet la localisation des éléments et des parties dans un document XML (c’est un langage de requête pour extraire des données d’un document XML), et XSLT (XSL Transformations), qui définit le format de sortie du document. L’association d’XSL à un document XML permet de compléter le couple données / méta-données défini dans le document en lui associant des informations de formatage. Il existe aussi un troisième langage, XSL-Formatting Objects, qui permet d’aller plus loin dans la composition documentaire, en décrivant notamment la structure physique des pages des documents générés.

–Les déclarations de type de document (DTD) ou les schémas XML permettent de définir la structure de l’information décrite de façon plus ou moins approfondie. Lorsqu’un document XML est associé à une DTD ou à un schéma XML et qu’il est conforme à la description de l’information indiquée, on dit qu’il est valide.

(36)

Les composants de XML

Les composants de XML

Document XML DTD ou schéma DTD ou schéma ? Bien formé? valide? Interprétation du document Message d’erreur/ Document non-interprété Message d’erreur/ Document non-interprété (O p ti o n n e l) non oui

non oui oui

non

(37)

ENIS 2008-2009

Grammaire XML:

Grammaire XML:

DTD et

DTD et

XML

XML

-

-

sch

sch

é

é

ma

ma

XML:

(38)

• Définition de type de document, donc une spécification du modèle de données auquel appartient un document.

• Une DTD se place dans le prologue d’un document XML. • Pour qu’un document soit validé par une DTD, il faut :

• qu’il contienne une (et une seule) déclaration de type de document,

• qu’il fasse référence, de façon interne ou externe, à une DTD décrivant sa structure.

• Une DTD permet de vérifier qu’un document XML est conforme à une syntaxe donnée (à une grammaire).

• La norme XML n’impose pas l’utilisation de DTD mais elle impose le respect exact des règles de base de la norme XML.

• Une fois une DTD est associé à un document XML, le parser est en

charge de vérifier que le document obéit aux règles fixées par cette même

(39)

ENIS 2008-2009 • Une DTD peut être définie de 2 façons :

• Sous forme interne, incluant la grammaire dans le document.

• Sous forme externe, soit en appelant un fichier contenant la grammaire à partir d’un fichier local ou bien en y accédant par son URL.

• Une DTD décrit :

• les éléments du document XML, de façon arborescente, en partant de l’élément racine (mot-clé : ELEMENT),

• les attributs des différents éléments, sous forme de liste (ATTLIST).

• les différentes entités auxquelles font référence les éléments du document (ENTITY),

• les éventuelles notations, qui déclarent du contenu non XML, comme des données graphiques ou binaires (mot-clé : NOTATION).

(40)

Les éléments XML sont définis dans une balise <! ELEMENT>. La syntaxe est :

<!ELEMENT nom (contenu) >

– Le paramètre contenu représente soit un type de données prédéfini, soit un élément de données composé, constitué lui même d'éléments

– Types prédéfinis:

• #PCDATA : désigne des données textuelles qui seront traitées par le parseur.

Exemple : en DTD: <!ELEMENT elt (#PCDATA)> et en XML : <elt> texte </elt>

• EMPTY : L'élément ne contient pas de données spécifiques.

Exemple : en DTD : <!ELEMENT elt EMPTY> et en XML : <elt/>

• ANY : L'élément peut contenir tout type de donnée (contenu libre).

Déclaration d’élément simple

(41)

ENIS 2008-2009 • Définit une séquence ou un choix d’élément.

• Syntaxe spécifique avec opérateurs de composition d’éléments.

<! ELEMENT nom (composition) >

Déclaration d’élément composé

(A,B)+ Les parenthèses permettent de regrouper des éléments afin de leur appliquer

les autres opérateurs. ( )

A,B L'élément A doit être présent et suivi de l'élément B

,

A|B L'élément A ou B peut être présent (mais pas les deux)

|

A? L'élément peut avoir 0 ou 1 occurrence

?

A* L'élément peut avoir 0 àN occurrences

*

A+ L'élément doit avoir au moins une occurrence

+

Exemple Signification

Opérateur

NB: L’ordre dans lequel sont déclarés les différents composants d’un élément

composite est très important ; ces éléments devront être organisés en rapport avec cette déclaration, sinon le document XML sera non valide.

(42)

Le document « annuaire.xml » est valide par rapport à la DTD « annuaire.dtd »

<?xml version="1.0" standalone="no"?>

<!DOCTYPE annuaire SYSTEM "annuaire.dtd"> <annuaire>

<entree>

<nom> Paul </nom>

<telephone> 010200345 </telephone> </entree>

</annuaire>

<!ELEMENT annuaire (entree*)>

<!ELEMENT entree (nom,telephone*)> <!ELEMENT nom (#PCDATA)>

<!ELEMENT telephone (#PCDATA)>

Document XML pour une DTD externe annuaire.dtd

<?xml version="1.0" standalone="yes"?> <!DOCTYPE annuaire [

<!ELEMENT annuaire (entree*)>

<!ELEMENT entree (nom,telephone*)> <!ELEMENT nom (#PCDATA)>

<!ELEMENT telephone (#PCDATA)> ]>

<annuaire> <entree>

<nom> Paul </nom>

<telephone> 010200345 </telephone> </entree>

</annuaire>

Document XML pour une DTD interne

Déclaration d’élément composé

(43)

ENIS 2008-2009

Un élément NomPersonne est composé : • Soit d'un sigle M, Mme, Mlle

• D'un prénom

• D'un 2ème prénom

• Et d'un nom de famille

<!ELEMENT NomPersonne ( (M | Mme | Mlle), Prenom, Prenom2, Nom ) >

<!ELEMENT M EMPTY> <!ELEMENT Mme EMPTY> <!ELEMENT Mlle EMPTY>

<!ELEMENT prenom (#PCDATA) > <!ELEMENT prenom2 (#PCDATA) > <!ELEMENT nom (#PCDATA)

Personne.dtd <NomPersonne> <M/> <Prenom>John</Prenom> <Prenom2>Edouard</Prenom2> <Nom>Martin</Nom> </NomPersonne> Personne.xml

Déclaration d’élément composé

(44)

Rédiger une DTD pour une Bibliographie. Cette bibliographie:

• contient des livres et des articles;

• les informations nécessaires pour un livre sont :

• son titre général;

• les noms des auteurs ;

• ses tomes et pour chaque tome, leur nombre de pages ;

• des informations générales sur son édition comme par exemple le nom de l’éditeur, le lieu d’édition, le lieu d’impression, son numéro ISBN ;

• les informations nécessaires pour un article sont :

• son titre ;

• les noms des auteurs ;

• ses références de publications : nom du journal, numéro des pages, année de publication et numéro du journal

• on réservera un champ optionnel pour un avis personnel

Déclaration d’élément composé

(45)

ENIS 2008-2009

Déclaration d’attributs

<!ATTLIST balise Attribut Type Mode>

– balise spécifie l'élément auquel est attaché l'attribut – Attribut est le nom de l'attribut déclaré

– Type définit le type de donnée de l'attribut choisi parmi: • CDATA pour des données textuelles.

• Valeur énumérée, liste de choix. Exemple (M | Mme | Mlle). • ID sert d'identifiant unique pour cette instance d'élément. Deux attributs de type ID ne peuvent donc pas avoir la même valeur dans un même document XML.

• IDREF référence à une clé.

– Mode précise le caractère obligatoire ou non de l'attribut • #REQUIRED, #IMPLIED ou #FIXED

(46)

Déclaration d’attributs

• #REQUIRED : l'attribut doit figurer dans chaque instance de l'élément

<!ATTLIST Livre titre CDATA #REQUIRED >

• #IMPLIED : l'attribut est facultatif

<!ATTLIST Article avis CDATA #IMPLIED >

• #FIXED "valeur par défaut" : l'attribut peut figurer ou non dans le document. S'il est présent, il doit alors avoir la valeur "Edit-Corp" sinon le parseur peut fournir la valeur par défaut.

<!ATTLIST Livre editeur CDATA #FIXED "Edit-Corp">

• Une valeur par défaut : l'attribut peut apparaître ou non dans le document. S'il est absent, le parseur peut fournir la valeur par défaut. Si une valeur est définie, il peut être n'importe quelle valeur figurant dans la liste ATTLIST.

(47)

ENIS 2008-2009

Déclaration d’attributs

<?xml version="1.0" standalone="yes"?> <!DOCTYPE GENEALOGIE

[

<!ELEMENT GENEALOGIE (PERSONNE*)> <!ELEMENT PERSONNE (#PCDATA)>

<!ATTLIST PERSONNE PNUM ID #REQUIRED> <!ATTLIST PERSONNE MERE IDREF #IMPLIED> <!ATTLIST PERSONNE PERE IDREF #IMPLIED> ]>

<GENEALOGIE>

<PERSONNE PNUM = "P1">Marie</PERSONNE> <PERSONNE PNUM = "P2">Jean</PERSONNE>

<PERSONNE PNUM = "P3" MERE="P1" PERE="P2">Pierre</PERSONNE> <PERSONNE PNUM = "P4" MERE="P1" PERE="P2">Julie</PERSONNE> </GENEALOGIE>

(48)

Déclaration d’attributs

Exercice

Modifier la DTD précédente...

- en ajoutant un attribut optionnel soustitre à l'élément titre ;

- en faisant de l'élément tome un élément vide et en lui ajoutant un attribut requis nb_pages et un attribut optionnel soustitre ;

- en faisant de l'élément nom_journal un attribut de l'élément journal et en lui donnant comme valeur par défaut Feuille de Chou ;

- en faisant de l'élément annee un attribut de type énuméré, prenant comme valeurs possibles 2002, 2003, 2004, "avant_2002" et "inconnue" et proposant comme valeur par défaut inconnue.

(49)

ENIS 2008-2009

Déclaration d’entités

Entité définie dans le document

Une telle entité sert en général d'abréviation pour des informations répétitives, de raccourci pour des noms longs…

<!ENTITY nom "texte">

• réutilisable dans un document par simple appel &nom;

<?xml version="1.0" encoding="ISO-8859-1" standalone="yes"?>

<!DOCTYPE démo [

<!ELEMENT démo (titre,note)> <!ELEMENT titre (#PCDATA)> <!ELEMENT note (#PCDATA)>

<!ENTITY cie "Utilisation des entités">

<!ENTITY imp "<note>Juste un exemple</note>"> ]> <démo> <titre>&cie;</titre> &imp; </démo> <?xml version="1.0" encoding="ISO-8859-1" standalone="yes"?> <!DOCTYPE démo [ <!ELEMENT démo (titre,note)> <!ELEMENT titre (#PCDATA)> <!ELEMENT note (#PCDATA)> ]>

<démo>

<titre> Utilisation des entités </titre> <note>Juste un exemple</note> </démo>

(50)

Déclaration d’entités

<!DOCTYPE personne[

<!ELEMENT personne (civilité, nom,prénom)> <!ENTITY MR "Monsieur">

<!ENTITY MME "Madame"> <!ENTITY MLE "Mademoiselle"> <!ELEMENT civilité(#PCDATA)> <!ELEMENT nom (#PCDATA)> <!ELEMENT prénom (#PCDATA)> ]> <personne> <civilité> &MR; </civilité> <nom> DUPONT </nom> <prénom> Jean </prénom> </personne> <personne> <civilité> Monsieur </civilité> <nom> DUPONT </nom> <prénom> Jean </prénom> </personne> Î

(51)

ENIS 2008-2009

Déclaration d’entités

Entité définie à l’externe

Les entités définies à l'extérieur des documents sont utilisées de la même façon mais sont déclarées ainsi :

<?xml version="1.0"?> <!DOCTYPE doc [

<!ENTITY chap1 SYSTEM "../chapitres/chap1.xml"> <!ENTITY chap2 SYSTEM "../chapitres/chap2.xml"> ]>

<doc> &chap1; &chap2; </doc>

(52)

Déclaration d’entités

Entités prédéfinies

Les entités prédéfinies permettent l'utilisation de certains caractères sans qu'ils puissent être confondus avec les caractères spéciaux utilisés par les documents XML pour le balisage.

lt : caractère '<' gt : caractère '>' amp : caractère 'é'

quot : caractère '"' (guillemet double)

(53)

ENIS 2008-2009

Déclaration d’entités

Entité paramètre

Ce type d’entité permet la déclaration d’un paramètre utilisable uniquement dans la DTD. La DTD doit être externe au document pour pouvoir utiliser des entités paramètres. Une entité paramètre se déclare et s’utilise avec le signe %.

<?xml version="1.0"?>

<!DOCTYPE equipe SYSTEM "equipe.dtd"> <equipe>

<joueur taille="cm" > 180 </joueur> </equipe>

<?xml version="1.0"?>

<!ENTITY %taille.att ‘taille CDATA #REQUIRED ‘ > <!ELEMENT equipe (joueur+)>

<!ELEMENT joueur (#PCDATA)> <!ATTLIST joueur %taille.att;>

(54)

Limites des DTD

Expression de cardinalit

é

s limit

é

e

– Pas de nombre précis d’occurrences d’un élément dans une grammaire XML : «*» (0 à N), «?» (0 ou 1), «+» (1 à N)

La structuration des DTD est

é

crite avec une syntaxe particuli

è

re

diff

é

rente de la syntaxe XML.

– nécessité de se procurer d’un outil spécifique pour développer des DTD – difficile à interpréter

– difficile à traduire en schéma objets

Syntaxe des DTD tr

è

s limit

é

e

– un seul type des données est défini : il s’agit de PCDATA (du texte) – Impossible de typer les données ou de poser des contraintes sur les

valeurs (virgules flottantes, format de date, longueur d’une chaîne…)

Propositions de compl

é

ments

– Les schémas XML du W3C

(55)

ENIS 2008-2009

Les schémas XML : Objectifs

Un sch

é

ma XML permet de d

é

crire les classes de documents XML. Il

d

é

finit un ensemble de composants :

– La signification, l’utilisation et les relations entre différents éléments et leur contenu.

– les attributs et leurs valeurs

– Les types de données, les attributs associés à ces données, les entités et les notations.

Le sch

é

ma XML est sp

é

cifi

é

en XML

– pas de nouveau langage

– balisage de déclaration

– utilise un espace de nom xsd: (ou xs:)

Pr

é

sente de nombreux avantages

– éditable avec un éditeur XML classique sans faire appel à des programmes dédiés.

– abstraction faite sur la définition des différents éléments (organisation des balises ou de leur contenu)

– possibilité de typer des données (types simples ou complexes).

– possibilité de définir des contraintes (domaines des valeurs, cardinalités, existence…)

(56)

Les schémas XML : Structure de base

Comme tout document XML, un schéma XML commence par un prologue et a un élément racine.

Élément racine

<?xml version="1.0" encoding="ISO-8859-1"?>

<xsd: schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">

<!--déclaration d’éléments, d’attributs et de types ici -->

</xsd: schema>

(57)

ENIS 2008-2009

Les schémas XML : Exemple

<xsd: schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <xsd: element name="entree">

<xsd:complexType>

<xsd:sequence>

<xsd:element name= "nom " type = "xsd:string " minoccurs= "1 " maxoccurs= "1 "/> <xsd:element name= "telephone "

type = "xsd:decimal "/> </xsd:sequence> </xsd:complexType> </xsd:element> </xsd: schema> Le document XML-Schéma (entree.xsd)

(58)

Les schémas XML : Exemple

Le document XML sans référence au espace de noms

<entree xmlns: xsi = "http://www.w3.org/2000/10/XMLSchema-instance" xsi:noNamespaceSchemaLocation = "entree.xsd">

<nom> Jean-Claude </nom>

<telephone> 0123456789 </telephone> </entree>

Le document XML avec référence au espace de noms

<annuaire : entree xmlns: xsi = "http://www.w3.org/2000/10/XMLSchema-instance" xmlns:annuaire = "http://www.page.fr/annuaire"

xsi:schemaLocation= " entree.xsd"> < annuaire:nom> Jean-Claude </annuaire:nom>

<annuaire:telephone> 0123456789 </annuaire:telephone> </ annuaire :entree>

(59)

ENIS 2008-2009

Les schémas XML : Concepts

Les principales clauses de définition de schéma sont les suivantes :

• <xsd:element> qui permet d’associer un type à un élément; • <xsd: attribute> qui permet d’associer un type à un attribut ;

•<xsd: simpleType> qui permet de spécialiser un type de classe choisi parmi les multiples types de base ;

• <xsd:complexType> qui permet de définir un type complexe comme une séquence, alternative ou un ensemble de types.

(60)

Les schémas XML : Déclaration d’éléments

Un élément dans un schéma XML se déclare avec la balise <xsd:element>.

<?xml version="1.0" encoding="ISO-8859-1"?>

<xsd: schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">

<xsd: element name="contacts" type="typeContacts"> </xsd: element> <xsd: element name="remarque" type="xsd:string"> </xsd: element>

<!--déclaration de types ici -->

</xsd: schema>

L’élément «contacts» est un type défini par l’utilisateur

L’élément «remarque» est de type simple prédéfini de XML schéma

(61)

ENIS 2008-2009

Les schémas XML : Déclaration d’éléments

La base d

un sch

é

ma XML: l

’é

l

é

ment qui peut avoir un type:

• Simple si sa valeur a un type prédéfini en XML-Schéma ou une extension de ces types.

• Types primitifs: string, boolean, float, double, integer,…

• Types dérivés : dérivent d’un type primitif ou d’un autre type dérivé. Ils sont obtenus par héritage soit par extension (ajout d’éléments) soit par restriction (ajout de contraintes).

• Complexe s’il contient des sous éléments ou s’il comporte un attribut

xsd:all : collection non ordonnée d'éléments typés

• xsd:choice : choix entre éléments typés

(62)

Les schémas XML : Déclaration d’éléments

(63)

ENIS 2008-2009

Les schémas XML : Déclaration d’éléments

(64)

Les schémas XML : Déclaration d’éléments

(65)

ENIS 2008-2009

Les schémas XML : Déclaration d’éléments

Types définis par restriction

minlength length maxlength pattern enumeration minInclusive maxInclusive minExclusive maxExclusive ... Boolean number float double date time ... Fait appel à une expression

(66)

Les schémas XML : Déclaration d’éléments

Quelques exemples d’expressions

A*B B, AB, AAB, AAAB, AAAAB…

[xyz]A xA, yA, zA

A?B B, AB

A+B AB, AAB, AAAB, AAAAB…

[A-C]y Ay, By, Cy

(67)

ENIS 2008-2009

Les schémas XML : Déclaration d’éléments

Sp

é

cification de type par restriction :

<xsd:simpleType name= "nameType "> < xsd: restriction base = "xsd:string ">

<xsd:maxLength value= "32" /> < /xsd: restriction>

</xsd:simpleType>

Exemple 1: cas où le type nameType est défini comme chaîne de caractères de longueur maximale 32.

<xsd:simpleType name= " SEQ "> < xsd: restriction base = "xsd:string ">

<xsd: pattern value= " \d{3} –[ A –Z] {2} " /> < /xsd: restriction>

</xsd:simpleType>

Exemple 2: cas d’une expression SEQ formée par trois nombres décimaux suivis par un tiret puis par deux majuscules.

Cet attribut spécifie le nom de type de

données en cours de définition.

Cet attribut spécifie le nom de type de

(68)

Les schémas XML : Déclaration d’éléments

Sp

é

cification de type par extension :

<xsd: complexType name= " AdressePays "> < xsd:complexContent >

< xsd:extension base = "Adresse " > < xsd:sequence>

<element name= "pays " type = " xsd:string " /> </ xsd:sequence>

</ xsd:extension> < / xsd:complexContent > </ xsd:complexType>

Exemple 1: cas de l’ajout de l’élément pays à l’adresse (cas d’une base de type complexe)

Les types spécialisés par extension sont appelés contenus complexes et sont marqués par une balise < complexContent >. La clause <xsd:extension>

(69)

ENIS 2008-2009

Les schémas XML : Déclaration d’éléments

Sp

é

cification de type par extension :

<xsd:element name="Mesure"> <xsd:complexType>

<xsd:simpleContent>

<xsd:extension base="xsd:integer">

<xsd:attribute name="unit" type="xsd:string" use="required"/> </xsd:extension>

</xsd:simpleContent> </xsd:complexType>

</xsd:element>

Exemple 2: cas de l’ajout de l’unité de mesure à la valeur donnée (cas d’une base de type simple)

Si on suppose que la valeur de mesure est un entier encadré entre 0 et 120 et que l’unité de mesure peut prendre soit la valeur « m » soit « cm » alors on peut définir les types simples ValeurMesure et UniteMesure comme suit :

(70)

Les schémas XML : Déclaration d’éléments

<xsd:simpleType name="ValeurMesure"> <xsd:restriction base="xsd:integer">

<xsd:minInclusive value="0"/> <xsd:maxInclusive value="120"/> </xsd:restriction>

</xsd:simpleType>

<xsd:simpleType name="UniteMesure"> <xsd:restriction base="xsd:string">

<xsd:enumeration value="m"/> <xsd:enumeration value="cm"/> </xsd:restriction>

</xsd:simpleType>

<xsd:element name="Mesure"> <xsd:complexType>

<xsd:simpleContent>

<xsd:extension base="ValeurMesure">

<xsd:attribute name="unit" type="UniteMesure" use="required"/> </xsd:extension>

</xsd:simpleContent> </xsd:complexType>

(71)

ENIS 2008-2009

Les schémas XML : Déclaration d’éléments

<!ELEMENT element(s1?)> <xsd: element name="element">

<xsd:complexType>

<xsd:sequence>

<xsd:element name= " s1" minoccurs= " 0" maxoccurs= "1"/> </xsd:sequence> </xsd:complexType> </xsd:element> <!ELEMENT element(s1*)> <xsd: element name="element"> <xsd:complexType> <xsd:sequence>

<xsd:element name= " s1" minoccurs= " 0" maxoccurs= " unbounded"/> </xsd:sequence> </xsd:complexType> </xsd:element> Équivalent en DTD XML-Schéma

(72)

Les schémas XML : Déclaration d’éléments

<!ELEMENT element (s1, s1?, s1?, s1?, s1?, s1?, s1?, s1?, s1?, s1?, s1?)> <xsd: element name="element"> <xsd:complexType> <xsd:sequence>

<xsd:element name= " s1" minoccurs= " 1" maxoccurs= "11"/> </xsd:sequence> </xsd:complexType> </xsd:element> <!ELEMENT element(s1+)> <xsd: element name="element"> <xsd:complexType> <xsd:sequence>

<xsd:element name= " s1" minoccurs= " 1" maxoccurs= " unbounded"/> </xsd:sequence> </xsd:complexType> </xsd:element> Équivalent en DTD XML-Schéma

(73)

ENIS 2008-2009

Les schémas XML : Déclaration d’éléments

Élément avec contenu non défini Élément avec contenu variable Type

<!ELEMENT element ANY> <xsd: element name="element"> <xsd:complexType> <xsd:sequence> <xsd:any/> </xsd:sequence> </xsd:complexType> </xsd:element> <!ELEMENT element(s1|s2)> <xsd: element name="element"> <xsd:complexType> <xsd:choice> <xsd:element name= " s1" /> <xsd:element name= " s2" /> </xsd:choice> </xsd:complexType> </xsd:element> Équivalent en DTD XML-Schéma

(74)

Les schémas XML : Déclaration d’attributs

Déclaration simple

• La définition d’attributs associés à un élément se fait dans un élément <xsd:attribute> qui possède les attributs suivants:

– Name : nom de l’attribut

– Type : type de l’attribut, par exemple xsd:string, xsd:boolean, …

– Use : permet de préciser si l’attribut est obligatoire ou optionnel. Valeurs possibles: required (obligatoire), optional (facultatif),

– Fixed ou default (valeur par défaut)

• Exemple: <element at1="hello" at2="true" /> . On souhaite modéliser cet élément dans un XML-Schéma. L’attribut at1 est optionnel et a comme valeur par défaut "a". L’attribut at2 est obligatoire et a comme valeur par défaut "true" .

<xsd: element name="element"> <xsd:complexType>

<xsd:attribute name= "at1" type = "xsd:string" use= "optional " default="a" /> <xsd:attribute name= "at2" type = "xsd:boolean" use= "required" fixed="true" /> </xsd:complexType>

(75)

ENIS 2008-2009

Les schémas XML : Déclaration d’attributs

Déclaration complexe

<xsd:attribute name= "choix" use= "required "> <xsd:simpleType>

<xsd: restriction base = "xsd: string" >

<xsd:enumeration value= "oui"/> <xsd:enumeration value= "non"/>

<xsd:enumeration value= "ne sait pas"/> </xsd: restriction>

</xsd:simpleType> </xsd:attribute>

(76)

Les schémas XML : Réutilisation de type

Type simple avec restriction

<xsd:simpleType name="num5">

<xsd:restriction base="xsd:string"> <xsd:pattern value="\d{5}"/> </xsd:restriction>

</xsd:simpleType>

Type complexe (séquence)

<xsd:element name="livre"> <xsd:complexType>

<xsd:sequence>

<xsd:element name="Titre" type="xsd:string"/> <xsd:element name="Auteur" type="xsd:string"/> <xsd:element name="ISBN" type="num5"/>

</xsd:sequence> </xsd:complexType> </xsd:element>

(77)

ENIS 2008-2009

Les schémas XML : Réutilisation de type

<xsd:element name="biblio"> <xsd:complexType> <xsd:sequence> <xsd:element ref="livre" minOccurs="1" maxOccurs="unbounded"/> </xsd:sequence> </xsd:complexType> </xsd:element>

(78)

Les schémas XML : Identifiant

<xsd:element name="element1"> <xsd:complexType>

<xsd:attribute name="id" type= "xsd:ID" use="required" />

</xsd:complexType> </xsd:element>

<xsd:element name="element2"> <xsd:complexType>

<xsd:attribute name= "idref" type="xsd:IDREF" use="required" />

</xsd:complexType> </xsd:element>

(79)

ENIS 2008-2009

Les schémas XML : Exercice

Reprenons l’exercice précédent sur les DTD mais cette fois-ci avec un schéma. On ne déclarera pour le moment que le type de chaînes de caractères. Rédiger un

schéma XML pour une bibliographie qui:

• contient des livres et des articles;

• les informations nécessaires pour un livre (élément livre) sont :

• son titre général (élément titre) ;

• les noms des auteurs (élément auteur) ;

• ses tomes (élément tomes) et pour chaque tome (élément tome), leur nombre de pages (élément pages) ;

• des informations générales sur son édition (élément infoEdition) comme par

exemple le nom de l’éditeur (élément editeur), le lieu d’édition (élément LieuEdition) , le lieu d’impression(élément LieuImpression), son numéro ISBN(élément ISBN) ;

• les informations nécessaires pour un article (élément article) sont :

• son titre (élément titre) ;

• les noms des auteurs (élément auteur) ;

• ses références de publications (élément infoPublication): nom du journal (élément nomJournal), numéro des pages (élément pages), année de publication (élément anneePublication) et numéro du journal (élément numeroJournal) ;

• on réservera un champ optionnel, pour chaque livre et chaque article pour un avis (élément avis) personnel

(80)

Les schémas XML : Exercice

Modifier le schéma précédent...

Déclaration d’attributs:

- en ajoutant un attribut optionnel soustitre à l'élément titre ;

- en faisant de l'élément tome un élément vide et en lui ajoutant un attribut requis nbPages et un attribut optionnel soustitre ;

- en faisant de l'élément nomJournal un attribut de l'élément infoPublication et en lui donnant comme valeur par défaut Feuille de Chou ;

Utilisation de types intégrés :

- l’élément pages doit être un entier positif, de même pour numeroJournal

Déclaration de types:

- définir un type simple nommé numéro ISBN, basé sur une restriction du type xsd: string, se limitant à une chaîne de caractères composée de 10 chiffres.

(81)

ENIS 2008-2009

Les schémas XML : Exercice

Soit la DTD suivante :

<!ELEMENT Prenom (#PCDATA)> <!ELEMENT Prenom2 (#PCDATA)> <!ELEMENT Nom (#PCDATA)>

<!ELEMENT NomPersonne (Nom|(Prenom,Prenom2*))> <!ATTLIST NomPersonne

titre (M.|Mme |Mlle) # IMPLIED

suffixe (Fils |Pere |Mere|fille) # IMPLIED >

(82)

Les schémas XML : Résumé

<xsd:element name="name" type="type" minOccurs="int" maxOccurs="int"/>

Un type simple (i.e. xsd:string) ou le nom d’un complexType

mais pas les deux Déclaration d’élément Nom de d’élément Un entier non négatif, valeur par défaut « 1 » Un entier non négatif ou « unbounded » valeur par défaut « 1 »

(83)

ENIS 2008-2009

Les schémas XML : Résumé

<xsd:element name="name" minOccurs="int" maxOccurs="int" type= "type " > <xsd:complexType>

</xsd:complexType> </xsd:element>

<xsd:element name="name" minOccurs="int" maxOccurs="int" type= "typeComplex" />

<xsd:complexType name= "typeComplex" >

</xsd:complexType>

(84)

Un type simple xsd:string xsd:integer xsd:boolean ... Déclaration

d’attribut Nom de lattribut required

(obligatoire) optional (optionnel)

L’attribut «use» doit être optionnel pour définir l’attribut «default »

Les schémas XML : Résumé

(85)

ENIS 2008-2009

Les schémas XML : Résumé

<xsd:attribute name="name" use="how-its-used" default/fixed="value"> <xsd:simpleType> <xsd:restriction base="simple-type"> <xsd:facetvalue="value"/> … </xsd:restriction> </xsd:simpleType> </xsd:attribute>

<xsd:attribute name="name" type =" nomType" use="how-its-used" default/fixed="value"/> <xsd:simpleType name= " nomType">

<xsd:restriction base="simple-type"> <xsd:facetvalue="value"/> … </xsd:restriction> </xsd:simpleType> ou

(86)

Les schémas XML : Résumé

ComplexContent et SimpleContent dépendent du type de la base sur laquelle va être effectuée la restriction ou l’extension

- dans le cas d’une base de type simple, il s’agit de simpleContent

- dans le cas d’une base de type complexe, il s’agit de complexContent.

<xsd:complexType name="…"> <xsd:complexContent> <xsd:extension base="X"> … </xsd:extension> </xsd:complexContent> </xsd:complexType> <xsd:complexType name="…"> <xsd:simpleContent> <xsd:extension base="Y"> … </xsd:extension> </xsd:simpleContent> </xsd:complexType>

Y doit être de type simple X doit être de type complexe

(87)

ENIS 2008-2009

Mise en forme d

Mise en forme d

un

un

document

document

XML:

(88)

Les feuilles de style CSS

CSS : abr

é

viation de Cascading Style Sheets (

Feuille de style

).

CSS est un langage de description de styles.

– Il permet de spécifier dans une page web les polices de caractères à utiliser, leurs attributs d’affichage (gras, italique, souligné, taille,

couleur…), la couleur ou l’image de fond, les formats de puces, …

Les CSS sont une solution pour s

é

parer le contenu de la forme.

– Séparer le travail de la rédaction de celui de la présentation.

Les CSS assurent la coh

é

rence graphique d

un site.

– Plusieurs pages peuvent partager la même feuille de style.

La modification de la charte graphique d

un site web est facilit

é

e par

l

utilisation des CSS. Seule la feuille de style est modifi

é

e.

– Maintenance et adaptation (aux différents périphériques d’affichage et de sortie) sont facilitées.

(89)

ENIS 2008-2009

Les feuilles de style CSS

• Le C (Cascading) de CSS signifie qu’on peut définir des styles CSS en cascade d’une manière similaire à l’héritage.

– Chaque nouvelle définition d’un style CSS hérité vient le compléter ou le redéfinir.

– En cas de contradiction sur un aspect particulier, c’est la dernière définition rencontrée dans l’ordre des déclarations qui l’importe.

• Les éléments enfants héritent de certaines valeurs de leurs éléments parents dans l'arborescence du document. Chacune des propriétés définit si elle est héritée, ou non. Supposons un élément (ici EM) dans un élément H1 :

– <H1 style="color:blue">Le titre <EM>est</EM> important !</H1>

– Si aucune couleur n'est précisée pour l'élément EM, le mot accentué "est" héritera de la couleur de l'élément parent, ainsi l'élément H1 ayant une couleur bleu, EM le sera

également.

• Pour appliquer une propriété de style "par défaut" à un document, un auteur peut l'appliquer à la racine de l'arborescence du document. On peut utiliser les éléments HTML ou BODY pour cet usage.

(90)

Évolution des CSS

• Le langage CSS a beaucoup évolué et a intégré de nombreuses nouveautés au fur et à mesure des révisions successives.

• Les différentes versions officielles de ce standard sont les suivantes:

– CSS1 (level 1), recommandation depuis décembre 1996.

– CSS2 (level 2), recommandation depuis mai 1998.

– CSS3 (level 3), en cours d’élaboration.

• CSS1 et CSS2 sont supportés par la plupart des navigateurs web (Microsft Internet Explorer, Nestcape Navigator, Mozilla,…).

• CSS2 apporte de nombreuses fonctionnalités, notamment davantage de finesse dans les réglages d’affichage graphique, ainsi que la gestion du son. • CSS3 (en cours) propose un support international encore mieux amélioré

avec une gestion de l’affichage des langues arabes et chinoises ainsi que l’intégration des dessins vectoriels (décrire des formes géométriques en XML).

(91)

ENIS 2008-2009

Une règle de style des CSS est composée :

- d

un s

é

lecteur,

- et d

au moins une d

é

claration.

Exemple de règle:

h1 {color: #0000FF; font-family: Arial; font-size: 12px;}

Syntaxe des CSS

sélecteur déclaration (composée d’une propriété et de sa

Valeur )

h1 est le sélecteur qui définit le style qui sera appliqué à la balise html <h1>, la déclaration attribue la couleur bleue et la police Arial de taille 12 au titre.

(92)

La

déclaration

du style proprement dite est plac

é

e entre des

accolades { }

La

propriété

et sa

valeur

sont s

é

par

é

es l'une de l'autre par

:

Les

expressions complètes

contenant propri

é

t

é

et valeur sont

s

é

par

é

es par

;

• balise { propriété de style: valeur;propriété de style: valeur; }

Il est possible de grouper plusieurs s

é

lecteurs ayant une r

è

gle de

style identique, s

é

par

é

s par une virgule :

h1, h2, h3 { color: red }

(93)

ENIS 2008-2009

Plusieurs manières :

1. Grâce à une feuille de style intégrée au document

• Celle-ci sera située dans l'entête, entre les balises <head> </head>

• On utilisera alors la balise <style> qui prévient le navigateur que des CSS sont utilisées.

<html> <head>

<title>style interne au document</title>

<style type="text/css">

html, body { font-family: sans-serif; background-color: white } h1, h2 { color: blue }

p {text-align: justify } </style>

</head> </html>

Références

Documents relatifs

Dès le IVe millénaire, plusieurs races d e moutons sem blent attestées en basse Mésopotamie, e t destinées à des usages variés ; de même, dans le courant du

UN BILAN DES RECHERCHES RECENTES Les éléments réunis dans ce dossier n'ont pas l'ambition de dresser un inventaire exhaustif des lieux reconnus pour les manifestations des

du congrès de Caen (28-31 mai 1987) organisé par la Société française d’étude de la céramique antique en Gaule, Revue archéologique, supplément 33,

La recherche retient donc ces deux hypothèses de base et propose par la suite d’utiliser le prix de vente total des propriétés unifamiliales comme données alternatives

romanesque que relaient, à titre de processus de textualisation, l’isotopie énonciative, l’ordre du récit et la voix narrative. Enfin, l’axe critique en fonction duquel est

De ce fait, il est très étonnant de voir que les lecteurs-destinataires de ces informations sont des ibères (et non des grecs ou des latins). Les ibères de- vaient donc jouer un

Le deuxième se divisera en deux parties : après un examen des représentations d’un espace urbain déserté ou en chantier, a priori inhospitalier, proposées dans les trois