eXtended Markup Language

Download Report

Transcript eXtended Markup Language

eXtensible Markup Language
Xavier Blanc
[email protected]
Plan







De HTML à XML
Documents bien formés
Documents valides
Liens
Feuilles de style
Traitement de documents XML
Applications
de HTML à XML
Généralités
HTML

Langage à balises
Balises obligatoires (head, body, …)
– Balises à valeur sémantique (h1, meta, …)
– Balises à valeur d’habillage (center, small, ..)
– Nombre fini de balises
– Balises différentes suivant les navigateurs
Pas d’évolution possible pour l’utilisateur
–
HTML

Aucune séparation de la forme et du fond
–
–
–
Balises de fond (Meta, Head, …)
Balises de forme (center, small, …)
Balises de fond & forme (h1, h2, …)
Durée de vie limitée à la durée de vie des outils
capables de visionner ces documents.
L’apport de XML

Ensemble non fini de balises
–

Séparation de la forme et du fond
–

L’utilisateur peut créer de nouvelles balises
Un document XML sera constitué d’au moins deux
entités (le fond et la forme)
Séparation du contenu et de la grammaire
–
Permet la validation des documents
Historique




XML est un standard un W3C (World Wide
Web Consortium)
XML est basé sur le standard SGML
Les travaux de XML ont commencé en 1996
En 1999, XML est considéré comme étant le
standard d’échange d’information du futur
Documents bien formés
règles syntaxiques de
XML
Un document XML bien formé

Exemple de document XML :
<livre>
<titre> le super livre </titre>
<chapitre>
<numero> 1 </numero>
<titre> titre du chapitre 1 </titre>
<contenu> blabla blabla </contenu>
</chapitre>
<chapitre>
…
</chapitre>
</livre>
Documents XML bien formés



Un document XML bien formé est un document
qui est conforme aux règles syntaxiques du
langage XML.
Un document bien formé pourra être traité par
un parseur XML sans générer d’exception.
Un document XML bien formé pourra être
associé avec une feuille de style.
Règles syntaxiques XML

Un document XML est constitué de :
–
–
–
Un prologue : qui contient un ensemble
d’informations sur le document
Un ensemble d’éléments avec leurs contenus : les
éléments et leurs contenus sont les données du
document
Des commentaires qui peuvent être inclus n’importe
où dans le document
Le prologue

La déclaration XML
<?xml version=“1.0” encoding=‘ISO-8859-1’ standalone=‘yes’ ?>
–
–
–
Permet de préciser la version du document
Permet de préciser l’encodage utilisé
Permet de savoir si le document est autonome ou
pas (lien vers d’autres documents)
Le prologue



XML permet de définir des types de
documents.
Un type de documents est une sorte de
grammaire, on peut alors valider un document
par rapport à une grammaire.
Le prologue permet de déclarer le type d’un
document.
<!DOCTYPE livre SYSTEM "livre.dtd" >
Ensemble d’éléments


Les éléments des documents XML sont composés
d’une balise d’ouverture, d’un contenu et d’une balise
de clôture.
<nom> contenue de l’élément </nom>
Le nom d’une balise est composé de caractères
alphanumériques, du tiret-souligné, du signe moins ou
du point. Il ne faut pas qu’il soit composé d’espaces.
Un nom doit commencer par un caractère alphabétique
ou du caractère tiret-souligné. Un nom ne doit pas
commencer par XML/Xml/xML/...
Ensemble d’éléments





Une balise d’ouverture peut avoir un ensemble d’attributs.
Ex : <livre date=‘ 01-01-2000 ’> …
Un attribut est une paire nom=valeur
Les noms des attributs suivent les mêmes règles que les noms
des éléments
La valeur est une chaîne de caractères encadrée par les
caractères guillemets ou apostrophe
L’attribut xml:lang est prédéfini et sa valeur représente le langage
utilisé dans le document
Ex : <p xml:lang=‘ fr ’> ...
Ensemble d’éléments

Le contenu d’un élément peut être :
–
–
–
un ensemble d’éléments
et/ou des données sous forme de chaînes de
caractères ne contenant pas les caractères & et <
et/ou des références
Ensemble d’éléments

Une référence peut être :
–
–
–

une référence à un caractère alphanumérique, elle doit
commencer par &#x, puis inclure le numéro du caractère et
finir par ;
Ex : &#x38; est une référence vers &
une référence prédéfinie comme par exemple &amp; ou
&apos; qui sont deux références vers & et ‘
une référence vers quelque chose défini dans la DTD (Data
Type Definition). Elle commence alors par &, puis par le nom
de la référence, et finit par ;
Ex : &ma_reference; (avec ma-reference=‘ texte long … ’
Ce couple (nom, valeur) est appelé une entité
Ensemble d’éléments


Les balises de clôture sont composées des
noms correspondant aux balises d’ouvertures
précédés du caractère /
Ex : </livre>
En élément peut être vide (sans contenu),
dans ce cas, il n’a qu’une seule balise
(composée du nom suivi du caractère /)
Ex : <Element_vide/>
Sections littérales


Lorsque le parseur scanne un élément, il
remplace toutes les références par leurs
valeurs.
Pour empêcher cela, il faut utiliser une section
littérale. Une section littérale est encadrée par
<![CDATA[ et par ]]>
Ex : <![CDATA[ <auteurs> Dupond &amp; ]]>
Instructions de traitement





Il est possible d’inclure des instructions de traitement
dans un document XML
La déclaration d’une instruction de traitement se fait de
la facon suivante :
<?nom arg1 arg2 .. ?>
nom est le nom de l’application cible
arg1, arg2, … sont les arguments de l ’application
Les noms XML, XmL, … sont réservés
Commentaire



Des commentaires peuvent être inclus dans le
contenu d’un élément XML. Ils doivent être
encadrés par les marques <!-- et -->
Un commentaire est une chaîne de caractères
quelconque qui ne contient pas la chaîne -Exemple :
<!-- un commentaire -->
<!-- un commentaire qui n’est -- pas bien formé
-->
Documents bien formés

Le plus petit :
<?xml version=“1.0” encoding=‘ISO-8859-1’ standalone=‘yes’ ?>
<livre/>

Un autre :
<?xml version=“1.0” encoding=‘ISO-8859-1’ standalone=‘yes’ ?>
<livre date=‘ 01-01-2000 ’>
<chapitre> XML &amp; HTML </chapitre>
<!-- préciser la version de HTML-->
</livre>
Documents valides
XML et grammaire
Document Type Definition



En XML, un type de document représente une
structure (une grammaire)
Ex : le type livre précise qu’un livre est
composé de chapitres, qui sont composés
de parties …
Un type de document est défini dans une DTD
(Document Type Definition)
Une DTD peut être inclue ou référencée par un
document XML
Document Type Definition



On peut vérifier la validité d’un document par rapport à
la DTD qu’il référence ou qu’il inclut. On parlera alors
de document XML valide
Un document XML valide est donc un document XML
bien formé qui a une DTD et qui est conforme à cette
DTD
Il existe déjà de nombreuses DTD, il est alors possible
de les utiliser pour construire des documents XML
valides
Ex : La DTD MathML pour les équations
Document Type Definition




Pour associer un document XML à une DTD, il faut le
faire avec l’élément <!DOCTYPE>
Ex : <!DOCTYPE livre SYSTEM "livre.dtd" >
On considère qu’un document XML est constitué de
deux choses : La DTD et la donnée.
Un document XML bien formé peut ne pas être
composé de DTD
Un document XML valide doit avoir une DTD
Data Type Definition

Une DTD est définie dans l’élément
<!DOCTYPE name SYSTEM "fichier.dtd" [delaration] >
– name est le nom du type de document
– SYSTEM "fichier.dtd" est une référence vers le
fichier.dtd. Ce fichier contient tout ou une partie de
la DTD. C’est la partie externe de la DTD
– [declaration] permet de définir tout ou une partie de
la DTD. C ’est la partie interne de la DTD
Contenu d’une DTD




Déclarations des entités
Déclarations des éléments et de leurs
contenus
Déclarations des attributs des éléments
Commentaires
Les entités




Une entité est un couple (nom, valeur). On référence le
nom pour utiliser la valeur. Ex : &amp; (amp,&)
Une entité peut être interne (définie dans le document)
ou externe (définie ailleurs)
Les entités internes ont des valeurs de chaînes de
caractères XML et sont utilisées comme moyen
d’abréviation.
Les entités externes peuvent être de type
–
–
XML : utilisé pour segmenter un document en parties
non XML : utilisé pour inclure des sons, images ...
Déclaration des entités



Les entités doivent être déclarées dans la DTD
Un document peut référencer n’importe quelle
entité qui a été déclaré dans la DTD mais aussi
les entités prédéfinis (amp, apos, …)
La déclaration d’une entité se fait de la
manière suivante :
<!ENTITY nom valeur>
–
La valeur doit être entre guillemets
Les entités externes XML



Permet la segmentation d’un document XML
Ex :
<!DOCTYPE livre [
<!ENTITY chapitre-1 SYSTEM "./chap1.xml">
<!ENTITY chapitre-2 SYSTEM "./chap2.xml">
]>
<livre>
&chapitre-1;
&chapitre-2;
</livre>
Le mot clé SYSTEM indique une URL, voir le mot clé
PUBLIC avec les identificateurs public
Les entités externes non-XML




Les entités externes non-XML servent à inclure des
images, du son ou autre dans un document XML
Avant de définir l ’entité, il faut définir son format en
utilisant une NOTATION
Ex : <!NOTATION img "./PsP" >
Puis définir l’entité
Ex : <!ENTITY fond SYSTEM "./fond.img" NDATA img>
L ’utilisation se fait donc ainsi :
Ex : <photo val=‘ fond ’/>
Les entités paramètres




Ces entités sont définies dans une DTD mais elles
sont aussi utilisées dans une DTD
Une entités paramètre est forcement XML
Une entités paramètre se définie comme une entité
générale si ce n’est qu’il y a le caractère %.
Ex : <!ENTITY % nom valeur>
Pour référencer une entité paramètre on utilise le
caractère %
Ex : %nom;
Les éléments dans la DTD



La déclaration d’un élément se fait de la
manière suivante :
<!ELEMENT nom modèle>
Le nom correspond au nom de l’élément
Le modèle défini le contenu de l’élément :
–
–
–
–
–
éléments fils
données
mélanges éléments fils et données
n’importe quoi respectant la syntaxe XML
élément vide
Les éléments dans la DTD



Pour décrire les éléments fils d’un élément, il suffit de donner leurs
noms entre parenthèses.
Si l’ordre des élément fils est important on les sépare par des
virgules sinon par des barres verticales.
Pour préciser les multiplicités des éléments fils on utilise : (soit fils
le nom de l’élément fils) :
–
–
–
–

fils = une fois et une seule
fils? = 0 ou 1 fois
fils* = 0, 1 ou plus d’une fois
fils+ = au moins un fois
il est possible de faire des groupes d’éléments fils en utilisant des
parenthèses.
Les éléments dans la DTD

Exemples de définition d’élément :
<!ELEMENT livre (titre, intro, chapitre+)>
<!ELEMENT chapitre (titre , (titre_partie,
partie)+)>
...
Les éléments dans la DTD


Lorsqu’un élément ne contient que des
données (i.e. : un chaîne de caractère), on le
défini de cette manière avec le mot clé :
#PCDATAT
Ex :
<!ELEMENT partie (#PCDATA)>
Les éléments dans la DTD


Il est possible qu’un élément ait des éléments
fils mais aussi des données. Il est tout à fait
possible de définir ce type d’élément dans une
DTD.
Ex :
<!ELEMENT toto (#PCDATA, titi, tutu)*>
Les éléments dans la DTD


Lorsqu’un élément peut contenir soit du texte,
soit n’importe quel ensemble d’élément fils, il
faut utiliser le mot clé ANY
Ex : <!ELEMENT elmt ANY>
Lorsqu’un élément est un élément vide, il faut
utiliser le mot clé EMPTY
Ex : <!ELEMENT elmt EMPTY>
Les attributs dans la DTD





La déclaration des attributs d’un élément se fait de la
manière suivante :
<!ATTLIST element (attribut type default)+>
element correspond au nom de l’élément qui contient
l’attribut
attribut correspond au nom de l’attribut
type correspond au type de l’attribut
default contient des indications sur la valeur par défaut
Les attributs dans la DTD

Le type de l’attribut peut être :
–
–
–
–
CDATA pour une chaîne de caractère
ID ou IDREF pour des références internes au
document
ENTITY ou ENTITIES pour des références externes
non-XML
NOTATION pour associer le contenu de l’élément à
une application
Les attributs dans la DTD

L’indication sur la valeur par défaut peut être :
–
–
–
#REQUIRED indique que l’attribut doit avoir une
valeur une fois le document créé.
#IMPLIED indique que l’attribut est optionnel.
#FIXED ‘valeur’ indique que l’attribut est une
constante
Les attributs dans la DTD

Quelques exemples :
<!ATTLIST ex1 att1 CDATA #IMPLIED>
<!ATTLIST ex2 att1 CDATA #IMPLIED
att2 ENTITY #REQUIRED>
...
Sections conditionnelles



<![ INCLUDE [ contenu ]]> fait que le contenu
appartient à la DTD
<![IGNORE [ contenu ]]> fait que le contenu
n’appartient pas à la DTD
En utilisant des entités paramètres et en les
redéfinissant dans le document, il est alors
possible d’avoir une DTD conditionnelle
Liens
Navigation XML
Avec les attributs ID et IDREF


L’attribut ID permet d’associer un identifiant à un élément
Ex : <!ELEMENT cible (#PCDATA)>
<!ATTLIST cible identifiant ID #IMPLIED>
L ’attribut IDREF permet de référencer un élément qui possède un
attribut ID
Ex : <!ELEMENT référence EMPTY>
<!ATTLIST référence ref IDREF #REQUIRED>
D’où
<cible identifiant=‘01234’> blabla </cible>
<!-- une référence -->
<référence ref=‘01234’/>
XPointer XML Pointer Language


XPointer est le standard qui permet de
référencer des ressources
Un XPointer est constitué d’une référence de
base puis d’une cascade de références. Ainsi il
est possible de référencer la valeur de l’attribut
couleur du 3ème éléments fils de l’élément de
type voiture.
XPointer XML Pointer Language

La référence de base d’un XPointer est :
–
–
–
–
root() : la racine du document cible
origin() : l’origine du pointeur.
id(nb) : l’élément ayant un attribut id avec nb
comme valeur
html(val) : un élément <A> ayant un attribut name
avec val comme valeur
XPointer XML Pointer Language

Les cascades de référence peuvent être :
–
child(), descendant(), ancestor(), …
avec les paramètres suivant :




–
–
nb : le numéro de l ’occurrence
#element, #pi, #comment, #text, #all
nom : le nom d’un élément
un nom d’attribut et/ou une valeur d’attribut
attr(nom) pour la valeur d’un attribut nom
...
XPointer XML Pointer Language


Un XPointer peut être précédé d’un URL, il faut
utiliser le caractère # comme séparateur
Exemples de XPointer
http://un.deux.fr/toto.xml#root().child(1,titre)
http://un.deux.fr/toto.xml#id(0123)
...
XLink XML Linking Language


Un XLink permet de lier plusieurs ressource
entre elles.
Les XLink peuvent être :
–
–
simples / étendus : les liens simples n’ont qu’une
seule cible contrairement aux liens étendus
inclus / exclus : La ressource qui décrit les liens
inclus est inclue dans le liens, elle est considérée
comme l’origine.
XLink XML Linking Language
DTD du lien simple
<!ELEMENT lk-simple EMPTY>
<!ATTLIST lk-simple
xml:link CDATA #FIXED ‘simple ’
href CDATA #REQUIRED
inline (true | false) ‘true’
role CDATA #IMPLIED
title CDATA #IMPLIED
content-role CDATA #IMPLIED
content-title CDATA #IMPLIED
show (embed | replace | new) #IMPLIED
actuate (auto | user) #IMPLIED
behavior CDATA #IMPLIED
>
XLink XML Linking Language


Pour les liens étendus, la valeur de l’attribut
xml.link est ‘extended’
Un lien étendu est composé de plusieurs
cibles. Chaques cibles est représenté par un
élément avec l’attribut xml.link qui a comme
valeur ‘locator’
Feuilles de style
L’habillage de
documents XML
La forme et le fond



Un document XML contient des informations
qui vont être présentées sur différents supports
(ecran, feuille, son, …)
Il est possible de créer des feuilles de style
pour décrire comment se fait cette présentation
Les feuilles de style sont référencées par les
documents XML, elles n’en font pas parties
CSS : Cascading Style Sheets





CSS est un standard du W3C pour décrire des feuilles
de style.
CSS-1 a été défini en 1996, CSS-2 en 1998
CSS-1 est supporté par les navigateur version 4 de
netscape et microsoft.
CSS-2 est supporté par les navigateur version 5 de
netscape et microsoft
Le W3C s’est engagé pour qu’une version N soit
toujours valide par rapport au version N+x de la norme.
CSS : Cascading Style Sheets



Il est possible de définir plusieurs feuilles de
style pour un document XML
Il est possible de définir une feuille de style
avec des propriétés valables uniquement pour
les écrans et des propriétés valables
uniquement pour les imprimantes.
Il est possible qu’une feuille de style importe
d’autres feuilles de style
CSS : Cascading Style Sheets



Le principe de base de CSS est le suivant
selecteur {
propriété1: valeur;
propriété2: valeur;
}
Selecteur indique quel est (ou quels sont)
l’élément affecté par ces propriétés.
Les propriétés sont des indications sur la
forme, CSS définit 122 propriétés
CSS : Cascading Style Sheets
Ex de feuille de style CSS :
@media screen, print {
*{
background : black;
color : yellow;
font-weight : bold;
font-size:14pt;
font-family : Garamond;
font-style : normal;
}
}
CSS : Cascading Style Sheets
CSS : Cascading Style Sheets
XSL : eXtensible Stylesheet
Language



XSL est un standard pour décrire des feuilles
de style
La spécification date de Avril 1999, elle n’est
pas encore totalement stabilisée
XSL permet plus de chose que CSS
–
–
La présentation n’est pas basé sur l’arbre du
document XML
Il est possible de rajouter des informations (ex :
table des matières, …)
XSL : eXtensible Stylesheet
Language

Pour afficher un document
–
–

L’arbre source est transformé en fonction des
directives de la feuille de style XSL
L’arbre transformé est mis en sortie (écran, papier)
Une feuille de style XSL décrit les directives de
transformation de l’arbre source.
XSL : eXtensible Stylesheet
Language

Structure d’un feuille XSL
<xsl>
<define-script>
var foo = …
function bar(xx) {…}
</define-script>
<define-style name= "style-para"
<!– attributs de formatage -->
/>
<define-macro name=item
<!– forme resultat -->
</define-macro>
<import href="feuille.xsl" />
<id attribute="sqd" />
XSL :eXtensible Stylesheet
Language

Structure d’une feuille XSL (suite)
<rule>
<root/>
<HTML>
<BODY>
<children/>
</BODY>
</HTML>
</rule>
<rule>
<element type="para"/>
<target-element type="code" />
<PRE> <children/></PRE>
</rule>
XSL : eXtensible Stylesheet
Language
Exemple de feuille XSL
<xsl>
<rule>
<root/>
<HTML>
<BODY>
<children/>
</BODY>
</HTML>
</rule>
<rule>
<element type="cours"/>
<target-element type="auteur"/>
<H1> Salut je lis auteur </H1>
</rule>
</xsl>
XSL : eXtensible Stylesheet
Language
Traitement de documents XML
DOM et SAX
Parseur




XML offre de nouveaux horizons applicatifs
Il n’est pas possible d’imaginer l’étendu de ce
domaine applicatif
Cependant, toutes les applications auront
besoin de parseur
Il y a deux types de parseur normalisés
–
–
SAX
DOM
SAX : Simple API for XML




SAX est un type de parseur XML
SAX a été construit par des internautes en 1997, ils
voulaient standardiser ce type de parseur
SAX est implanté en Java et en Python
SAX est un parseur événementiel
–
–
Lorsque que le parseur lit un élément du document, il lance un
événement
Il est utilisé par les applications qui considèrent les documents
XML comme des flots de données
SAX : Simple API for XML

SAX étant un parseur événementiel, il propose un
ensemble d’interface pour implanter des handler
–
DocumentHandler


–
ErrorHandler


startElement()
starDocument()
Error()
Il suffit ensuite de créer un parseur XML, d’affecter les
handler puis de commencer à scanner le document
SAX : Simple API for XML
Exemple d’application utilisant SAX
public class MyHandler extends DocumentHandler {
public void startElement(String n, AttributeList att) {
System.out.println("Start element :" + n);
}
}
….
DocumentHandler dh = new MyHandler();
parser.serDocumentHandler(dh);
DOM : Document Object Model




DOM est un type de parseur XML
DOM a été standardisé par le W3C
L’API du DOM est définit en IDL CORBA
DOM est un parseur compilé
–
–
Lecture de la totalité du document XML
Création d’une structure arborescente d’objet qui
représente le document XML
DOM : Document Object Model

Le DOM est un parseur compilé, son API est composé
de toutes les entités d’un document XML
–
–
–

Document : Objet qui représente le document XML
Element : Objet qui représente un élément XML
Node : Objet dont tous les autres objets héritent
Pour construire une application qui utilise le DOM, il
suffit de créer un parseur et d’appeler la méthode
parse qui retourne un objet de type Document
DOM : Document Object Model
Exemple d’application utilisant DOM
try {
DOMParserWrapper parser = new …
Document docu = parser.parser(uri);
…
Conclusion pour les traitements




SAX et DOM sont deux types de parseur standardisés
par les internautes pour SAX et par le W3C pour DOM
SAX est plus orienté traitement du document comme
un flot d’information
DOM est plus orienté transformation de document ou
archivage
Il existe de nombreuses implantations gratuites en
Java de SAX et de DOM (Sun, IBM, …)
Applications
XMI
MOF : Meta Object Facility
M3 layer
meta-metamodel
MOF Model
UML
Meta-model
UML Models
UML Models
UML Models
IDL
Meta-model
M2 layer
meta-model
M1 layer
models
IDL Interfaces
M0
layer
XMI : XML Metadata Interchange
Meta-Level
Metadata
XMI DTDs
M3
The MOF Model
MOF DTD
M2
UML MetaModel
(ODP and others)
UML DTD
(ODP and others)
M1
UML Models
(ODP and others)
M0
Instances
XMI documents
MOF MetaModel
Documents
UML Model Documents
(ODP and others)
Bibliographie
A vous de jouer
Les documents utilisé pour ce
support





« XML Langage et applications » Eyrolles
Alain Michard
www.w3c.org : le site du W3C
http://www.alphaworks.ibm.com/formula/xml/
http://babel.alis.com/web_ml/xml/
http://www.xmltechno.com/