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.comGML (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
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.
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
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.
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.
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
Concepts de base
Concepts de base
XML:
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 >
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.
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.
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
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 "<" et "&".
– L’usage de ">" ou des guillemets simples ou doubles peut également être perturbant. Dans ce cas, on a recours à >, ' et ".
– 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.
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>
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) ;
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) ;
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.
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.
ENIS 2008-2009
Les composants de XML
Les composants de XML
XML:
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
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.
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.
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) . . .
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>
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); } }
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.
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 endDocumentPrincipe d’un parseur SAX Types d'événement :
– début et fin de document ; – début et fin d'éléments ; – attributs, texte, … .
Les composants de XML
ENIS 2008-2009
Les composants de XML
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>.
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>
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
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
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>
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.
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 ouinon oui oui
non
ENIS 2008-2009
Grammaire XML:
Grammaire XML:
DTD et
DTD et
XML
XML
-
-
sch
sch
é
é
ma
ma
XML:
• 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
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).
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
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.
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é
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é
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é
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
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.
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>
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.
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>
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> Î
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>
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)
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;>
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 W3CENIS 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…)
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>
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)
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>
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.
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
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
Les schémas XML : Déclaration d’éléments
ENIS 2008-2009
Les schémas XML : Déclaration d’éléments
Les schémas XML : Déclaration d’éléments
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
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
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
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>
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 :
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>
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
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
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
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>
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>
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>
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>
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>
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
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.
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 >
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 »
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>
Un type simple xsd:string xsd:integer xsd:boolean ... Déclaration
d’attribut Nom de l’attribut required
(obligatoire) optional (optionnel)
L’attribut «use» doit être optionnel pour définir l’attribut «default »
Les schémas XML : Résumé
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
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
ENIS 2008-2009
Mise en forme d
Mise en forme d
’
’
un
un
document
document
XML:
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.
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.
É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).
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.
•
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 }
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>