Professional Documents
Culture Documents
Plan
De HTML XML Documents bien forms Documents valides Liens Feuilles de style Traitement de documents XML Applications
de HTML XML
Gnralits
HTML
Langage balises
Balises obligatoires (head, body, ) Balises valeur smantique (h1, meta, ) Balises valeur dhabillage (center, small, ..) Nombre fini de balises Balises diffrentes suivant les navigateurs Pas dvolution possible pour lutilisateur
HTML
Balises de fond (Meta, Head, ) Balises de forme (center, small, ) Balises de fond & forme (h1, h2, )
Dure de vie limite la dure de vie des outils capables de visionner ces documents.
Lapport de XML
Lutilisateur peut crer de nouvelles balises Un document XML sera constitu dau moins deux entits (le fond et la forme) 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 considr comme tant le standard dchange dinformation du futur
<livre>
</livre>
Un document XML bien form est un document qui est conforme aux rgles syntaxiques du langage XML. Un document bien form pourra tre trait par un parseur XML sans gnrer dexception. Un document XML bien form pourra tre associ avec une feuille de style.
Un prologue : qui contient un ensemble dinformations sur le document Un ensemble dlments avec leurs contenus : les lments et leurs contenus sont les donnes du document Des commentaires qui peuvent tre inclus nimporte o dans le document
Le prologue
La dclaration XML
<?xml version=1.0 encoding=ISO-8859-1 standalone=yes ?>
Permet de prciser la version du document Permet de prciser lencodage utilis Permet de savoir si le document est autonome ou pas (lien vers dautres documents)
Le prologue
XML permet de dfinir 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 dclarer le type dun document. <!DOCTYPE livre SYSTEM "livre.dtd" >
Ensemble dlments
Les lments des documents XML sont composs dune balise douverture, dun contenu et dune balise de clture. <nom> contenue de llment </nom> Le nom dune balise est compos de caractres alphanumriques, du tiret-soulign, du signe moins ou du point. Il ne faut pas quil soit compos despaces. Un nom doit commencer par un caractre alphabtique ou du caractre tiret-soulign. Un nom ne doit pas commencer par XML/Xml/xML/...
Ensemble dlments
Une balise douverture peut avoir un ensemble dattributs. Ex : <livre date= 01-01-2000 > Un attribut est une paire nom=valeur Les noms des attributs suivent les mmes rgles que les noms des lments La valeur est une chane de caractres encadre par les caractres guillemets ou apostrophe Lattribut xml:lang est prdfini et sa valeur reprsente le langage utilis dans le document Ex : <p xml:lang= fr > ...
Ensemble dlments
un ensemble dlments et/ou des donnes sous forme de chanes de caractres ne contenant pas les caractres & et < et/ou des rfrences
Ensemble dlments
une rfrence un caractre alphanumrique, elle doit commencer par &#x, puis inclure le numro du caractre et finir par ; Ex : 8 est une rfrence vers & une rfrence prdfinie comme par exemple & ou ' qui sont deux rfrences vers & et une rfrence vers quelque chose dfini dans la DTD (Data Type Definition). Elle commence alors par &, puis par le nom de la rfrence, et finit par ; Ex : &ma_reference; (avec ma-reference= texte long
Ensemble dlments
Les balises de clture sont composes des noms correspondant aux balises douvertures prcds du caractre / Ex : </livre> En lment peut tre vide (sans contenu), dans ce cas, il na quune seule balise (compose du nom suivi du caractre /) Ex : <Element_vide/>
Sections littrales
Lorsque le parseur scanne un lment, il remplace toutes les rfrences par leurs valeurs. Pour empcher cela, il faut utiliser une section littrale. Une section littrale est encadre par <![CDATA[ et par ]]> Ex : <![CDATA[ <auteurs> Dupond & ]]>
Instructions de traitement
Il est possible dinclure des instructions de traitement dans un document XML La dclaration dune instruction de traitement se fait de la facon suivante : <?nom arg1 arg2 .. ?> nom est le nom de lapplication cible arg1, arg2, sont les arguments de l application Les noms XML, XmL, sont rservs
Commentaire
Des commentaires peuvent tre inclus dans le contenu dun lment XML. Ils doivent tre encadrs par les marques <!-- et --> Un commentaire est une chane de caractres quelconque qui ne contient pas la chane -Exemple : <!-- un commentaire --> <!-- un commentaire qui nest -- pas bien form -->
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 & HTML </chapitre> <!-- prciser la version de HTML--> </livre>
Documents valides
XML et grammaire
En XML, un type de document reprsente une structure (une grammaire) Ex : le type livre prcise quun livre est compos de chapitres, qui sont composs de parties Un type de document est dfini dans une DTD (Document Type Definition) Une DTD peut tre inclue ou rfrence par un document XML
On peut vrifier la validit dun document par rapport la DTD quil rfrence ou quil 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 dj de nombreuses DTD, il est alors possible de les utiliser pour construire des documents XML valides Ex : La DTD MathML pour les quations
Pour associer un document XML une DTD, il faut le faire avec llment <!DOCTYPE> Ex : <!DOCTYPE livre SYSTEM "livre.dtd" > On considre quun document XML est constitu de deux choses : La DTD et la donne. Un document XML bien form peut ne pas tre compos de DTD Un document XML valide doit avoir une DTD
Dclarations des entits Dclarations des lments et de leurs contenus Dclarations des attributs des lments Commentaires
Les entits
Une entit est un couple (nom, valeur). On rfrence le nom pour utiliser la valeur. Ex : & (amp,&) Une entit peut tre interne (dfinie dans le document) ou externe (dfinie ailleurs) Les entits internes ont des valeurs de chanes de caractres XML et sont utilises comme moyen dabrviation. Les entits externes peuvent tre de type
XML : utilis pour segmenter un document en parties non XML : utilis pour inclure des sons, images ...
Les entits doivent tre dclares dans la DTD Un document peut rfrencer nimporte quelle entit qui a t dclar dans la DTD mais aussi les entits prdfinis (amp, apos, ) La dclaration dune entit se fait de la manire suivante : <!ENTITY nom valeur>
Permet la segmentation dun 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 entits externes non-XML servent inclure des images, du son ou autre dans un document XML Avant de dfinir l entit, il faut dfinir son format en utilisant une NOTATION Ex : <!NOTATION img "./PsP" > Puis dfinir lentit Ex : <!ENTITY fond SYSTEM "./fond.img" NDATA img> L utilisation se fait donc ainsi : Ex : <photo val= fond />
Ces entits sont dfinies dans une DTD mais elles sont aussi utilises dans une DTD Une entits paramtre est forcement XML Une entits paramtre se dfinie comme une entit gnrale si ce nest quil y a le caractre %. Ex : <!ENTITY % nom valeur> Pour rfrencer une entit paramtre on utilise le caractre % Ex : %nom;
La dclaration dun lment se fait de la manire suivante : <!ELEMENT nom modle> Le nom correspond au nom de llment Le modle dfini le contenu de llment :
lments fils donnes mlanges lments fils et donnes nimporte quoi respectant la syntaxe XML lment vide
Pour dcrire les lments fils dun lment, il suffit de donner leurs noms entre parenthses. Si lordre des lment fils est important on les spare par des virgules sinon par des barres verticales. Pour prciser les multiplicits des lments fils on utilise : (soit fils le nom de llment fils) :
fils = une fois et une seule fils? = 0 ou 1 fois fils* = 0, 1 ou plus dune fois fils+ = au moins un fois
il est possible de faire des groupes dlments fils en utilisant des parenthses.
Exemples de dfinition dlment : <!ELEMENT livre (titre, intro, chapitre+)> <!ELEMENT chapitre (titre , (titre_partie, partie)+)> ...
Lorsquun lment ne contient que des donnes (i.e. : un chane de caractre), on le dfini de cette manire avec le mot cl : #PCDATAT Ex : <!ELEMENT partie (#PCDATA)>
Il est possible quun lment ait des lments fils mais aussi des donnes. Il est tout fait possible de dfinir ce type dlment dans une DTD. Ex : <!ELEMENT toto (#PCDATA, titi, tutu)*>
Lorsquun lment peut contenir soit du texte, soit nimporte quel ensemble dlment fils, il faut utiliser le mot cl ANY Ex : <!ELEMENT elmt ANY> Lorsquun lment est un lment vide, il faut utiliser le mot cl EMPTY Ex : <!ELEMENT elmt EMPTY>
La dclaration des attributs dun lment se fait de la manire suivante : <!ATTLIST element (attribut type default)+> element correspond au nom de llment qui contient lattribut attribut correspond au nom de lattribut type correspond au type de lattribut default contient des indications sur la valeur par dfaut
CDATA pour une chane de caractre ID ou IDREF pour des rfrences internes au document ENTITY ou ENTITIES pour des rfrences externes non-XML NOTATION pour associer le contenu de llment une application
#REQUIRED indique que lattribut doit avoir une valeur une fois le document cr. #IMPLIED indique que lattribut est optionnel. #FIXED valeur indique que lattribut est une constante
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 nappartient pas la DTD En utilisant des entits paramtres et en les redfinissant dans le document, il est alors possible davoir une DTD conditionnelle
Liens
Navigation XML
Lattribut ID permet dassocier un identifiant un lment Ex : <!ELEMENT cible (#PCDATA)> <!ATTLIST cible identifiant ID #IMPLIED> L attribut IDREF permet de rfrencer un lment qui possde un attribut ID Ex : <!ELEMENT rfrence EMPTY> <!ATTLIST rfrence ref IDREF #REQUIRED>
Do <cible identifiant=01234> blabla </cible> <!-- une rfrence --> <rfrence ref=01234/>
XPointer est le standard qui permet de rfrencer des ressources Un XPointer est constitu dune rfrence de base puis dune cascade de rfrences. Ainsi il est possible de rfrencer la valeur de lattribut couleur du 3me lments fils de llment de type voiture.
root() : la racine du document cible origin() : lorigine du pointeur. id(nb) : llment ayant un attribut id avec nb comme valeur html(val) : un lment <A> ayant un attribut name avec val comme valeur
nb : le numro de l occurrence #element, #pi, #comment, #text, #all nom : le nom dun lment un nom dattribut et/ou une valeur dattribut
Un XPointer peut tre prcd dun URL, il faut utiliser le caractre # comme sparateur Exemples de XPointer http://un.deux.fr/toto.xml#root().child(1,titre) http://un.deux.fr/toto.xml#id(0123) ...
Un XLink permet de lier plusieurs ressource entre elles. Les XLink peuvent tre :
simples / tendus : les liens simples nont quune seule cible contrairement aux liens tendus inclus / exclus : La ressource qui dcrit les liens inclus est inclue dans le liens, elle est considre comme lorigine.
Pour les liens tendus, la valeur de lattribut xml.link est extended Un lien tendu est compos de plusieurs cibles. Chaques cibles est reprsent par un lment avec lattribut xml.link qui a comme valeur locator
Feuilles de style
La forme et le fond
Un document XML contient des informations qui vont tre prsentes sur diffrents supports (ecran, feuille, son, ) Il est possible de crer des feuilles de style pour dcrire comment se fait cette prsentation Les feuilles de style sont rfrences par les documents XML, elles nen font pas parties
CSS est un standard du W3C pour dcrire des feuilles de style. CSS-1 a t dfini 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 sest engag pour quune version N soit toujours valide par rapport au version N+x de la norme.
Il est possible de dfinir plusieurs feuilles de style pour un document XML Il est possible de dfinir une feuille de style avec des proprits valables uniquement pour les crans et des proprits valables uniquement pour les imprimantes. Il est possible quune feuille de style importe dautres feuilles de style
Le principe de base de CSS est le suivant selecteur { proprit1: valeur; proprit2: valeur; } Selecteur indique quel est (ou quels sont) llment affect par ces proprits. Les proprits sont des indications sur la forme, CSS dfinit 122 proprits
XSL est un standard pour dcrire des feuilles de style La spcification date de Avril 1999, elle nest pas encore totalement stabilise XSL permet plus de chose que CSS
La prsentation nest pas bas sur larbre du document XML Il est possible de rajouter des informations (ex : table des matires, )
Larbre source est transform en fonction des directives de la feuille de style XSL Larbre transform est mis en sortie (cran, papier)
Une feuille de style XSL dcrit les directives de transformation de larbre source.
Structure dune feuille XSL (suite) <rule> <root/> <HTML> <BODY> <children/> </BODY> </HTML> </rule> <rule> <element type="para"/> <target-element type="code" /> <PRE> <children/></PRE> </rule>
DOM et SAX
Parseur
XML offre de nouveaux horizons applicatifs Il nest pas possible dimaginer ltendu de ce domaine applicatif Cependant, toutes les applications auront besoin de parseur Il y a deux types de parseur normaliss
SAX DOM
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 vnementiel
Lorsque que le parseur lit un lment du document, il lance un vnement Il est utilis par les applications qui considrent les documents XML comme des flots de donnes
SAX tant un parseur vnementiel, il propose un ensemble dinterface pour implanter des handler
DocumentHandler
startElement() starDocument()
Error()
ErrorHandler
Il suffit ensuite de crer un parseur XML, daffecter les handler puis de commencer scanner le document
DOM est un type de parseur XML DOM a t standardis par le W3C LAPI du DOM est dfinit en IDL CORBA DOM est un parseur compil
Lecture de la totalit du document XML Cration dune structure arborescente dobjet qui reprsente le document XML
Le DOM est un parseur compil, son API est compos de toutes les entits dun document XML
Document : Objet qui reprsente le document XML Element : Objet qui reprsente un lment XML Node : Objet dont tous les autres objets hritent
Pour construire une application qui utilise le DOM, il suffit de crer un parseur et dappeler la mthode parse qui retourne un objet de type Document
SAX et DOM sont deux types de parseur standardiss par les internautes pour SAX et par le W3C pour DOM SAX est plus orient traitement du document comme un flot dinformation 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 Model
UML Meta-model
IDL Meta-model
M2 layer meta-model
M3
MOF DTD
M2
M1
M0
Instances
Bibliographie
A vous de jouer
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/