Beruflich Dokumente
Kultur Dokumente
ou futur standard ?
1
XML : la famille
Né : fin 96
Père : W3C
Petit-fils de SGML (ISO-1986)
Cousin d’HTML
Reconnu le : 10/02/98 – version 1.0
Descendance – XHMTL, MathML, …
2
X comme eXtensible
HTML : nombre fini de balises
XML : possibilité de définir les balises
4
L comme Language
Langage de description de documents
Règles à respecter
5
Document XML
Données binaires
Données textuelles
Norme Unicode
Marques :
Balises de début, de fin, références,
commentaires, instructions de traitement
Définition de Type de Document
6
Élément
Composant de base
Identifié par un nom
Délimité par une balise ouvrante et une
balise fermante
<AUTEUR> Victor Hugo </AUTEUR>
Ou élément vide
<PHOTO Source= "victor.gif" />
Contenu textuel, éléments ou mixte
7
Les attributs
Inclus dans la balise ouvrante d’un
élément
Composé d’un nom et d’une valeur
8
Exemple XML
<?xml version="1.0" Encoding= "ISO-8859-1" ? >
<memo langue="fr" urgence= "maximale">
<to> Enfants Sages </to>
<from> Père Noël </from>
<date> 7/12/2001 </date>
<body> Livraison confirmée
<jour>25/12</jour>
<heure>0h00</heure>
<lieu> cheminée</lieu>
</body>
</memo>
9
…et aussi
<!-- des commentaires -->
Des entités externes/internes, analysables ou
non
& " > <
<![CDATA [
…tout et n’importe quoi…
…0x01265423deadbeef49653453462…
]]>
10
Règles syntaxiques
1. Commencer par une déclaration XML
2. Balisage sensible à la casse
3. La valeur des attributs doit être quotée
4. Balises non vides appariées <br></br>
5. Balises vides fermées <br/>
6. Les élèments ne doivent pas se chevaucher
<jour> <mois> </jour> </mois> interdit
11
Type de document (Doctype)
Permet de valider un document XML
Grammaire
Définir la DTD
<!DOCTYPE … >
Interne / externe
<?xml version= "1.0" standalone = "yes" >
Publique / privée
12
Exemple de DTD
<?xml version="1.0" Encoding= "ISO-8859-1" ? >
<!DOCTYPE memo [
<!ELEMENT memo (to, from, date, body)>
<!ELEMENT to (#PCDATA)>
<!ELEMENT from (#PCDATA)>
<!ELEMENT date (#PCDATA)>
<!ELEMENT body (#PCDATA|jour|heure|lieu)>
<!ELEMENT jour (#PCDATA)>
<!ELEMENT heure (#PCDATA)>
<!ELEMENT lieu (#PCDATA)>
<!ATTLIST memo langue CDATA "Alsacien">
<!ATTLIST memo urgence CDATA "normal">
]>
13
Spécifications éléments
(#PCDATA) Parsed Character DATA
(ELT) 1 fois ELT
(ELT1,ELT2) Séquence
(ELT1|ELT2|…) Choix
ELT? 0 ou 1 fois ELT
ELT+ au moins 1 fois ELT
ELT* 0 ou plusieurs fois ELT
() groupe de sous éléments
ANY n’importe quoi
EMPTY rien
14
Spécifications d’attributs
CDATA données textuelles
NMTOKEN nom XML valide
NMTOKENS noms XML valides
(val-1|val-2|…val-n) liste de valeurs
ID identificateur unique
IDREF valeur d’un ID
IDREFS valeurs d’Ids
ENTITY entité externe non analysable
ENTITIES entités externes non analysables
15
Limites des DTD
Syntaxe non XML
Pas de type (entier/réel/chaînes…)
…
types (entier/réel/chaînes…)
…
16
XSD « poupées russes »
<?xml version="1.0" Encoding= "ISO-8859-1" ? >
<xsd:element name="memo">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="to" type="xsd:string" />
<xsd:element name="from" type="xsd:string" />
<xsd:element name="date" type="xsd:date" />
<xsd:element name="body" type="xsd:string" >
<xsd:complexType>
<xsd:sequence>
<xsd:element name="jour" type="xsd:date" />
<xsd:element name="heure" type="xsd:time" />
<xsd:element name="lieu" type="xsd:string" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
<xsd:attribute name="langue" type="xsd:string" use="optional" />
<xsd:attribute name="urgence" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
17
XSD « catalogue »
Définition des éléments (classe)
<xsd:element name="to" type="xsd:string" />
Permet de factoriser
18
XSD « types nommés »
Définir de nouveaux types
Restrictions
<xsd:simpleType name="TypeISBN">
<xsd:restriction base = "xsd:string" >
<xsd:pattern value = "[0-9]{10}" />
</xsd:restriction>
</xsd:simpleType>
20
http://www.xml.org
21
Le langage XPATH
Syntaxe et sémantique partagées par d’autres
outils (XSLT, Xpointer…)
But : adresser les différentes parties d’un
document XML
Représentation en forme d’arbre
Type de nœuds :
Racine, éléments, texte, attributs, espace de noms, instruction
de traitement, commentaires
Adressage type système de fichiers
22
rac: memo
attr : langue
txt : fr
txt : maximale
elt : to
txt : 7/12/01
elt : Body
txt : 25/12
elt : heure
txt : 0h00
elt : lieu
23
txt : cheminée
localisation
Chemin relatif/absolu
/memo/body/lieu
Axe de localisation
self, child, desecendant, parent, ancestor, …
Test de nœuds
text(), comment(), …
Prédicats
last(), position(), count(), name(), …
/memo//[lieu="cheminée"]
24
eXtensible Style Language Transformation
XSL
Ou texte
Ou HTML
25
Feuille de style XSLT
Transformer un arbre
Feuille de style = ensemble de règles
Association motif / modèles
Objectif :
Production de texte
Personnalisation d’un document
Réorganisation
…
26
Feuille de style CSS
Cascading Style Sheet
Langage très simple (non XML)
CSS1 : décembre 96 CSS2 : mars 98
Encore mal supporté par les browsers (sauf Opera 4.02)
Liste de règles qui décrit les éléments
Pour chaque élément
Couleurs et image
Polices de caractère
Textes
Boites
Classification (style de listes, affichage par bloc…)
27
CSS dans XML (ou HMTL)
But : présentation vers browser
Via instruction de traitement
<?xml-stylesheet type = "text/css" href="styleCD.css"
?>
href désigne l’URI de la feuille
28
XSL-FO (Formatting Objects)
Langage XML pour formater
Finalisé par W3C fin Octobre 2001
Similaire à HTML/CSS mais beaucoup
plus puissant
Outils permettant de générer PDF (FOP)
Devrait plaire aux utilisateurs Latex…
29
Principe de XSL-FO
Découpage par pages
Notion de boites
Contenu (texte, espace, images, objets…)
Type (région, bloc, ligne, boite en-ligne,…)
Hiérarchie
Caractéristiques (position, fontes…)
Pages maîtres
Séquences de pages
Numérotation
…
30
XLINK
Lien externe vers autre document
Lien simple HREF classique
Lien étendu Personnaliser les liens
Localisation des ressources distantes
Mécanisme de traversée
Texte facilitant l’emploi
Ressources locales associées
En cours de stabilisation…
31
XPointer
But : adresser un fragment de
ressource
Même arbre que processeur XSL
Utilisation de XPath
En cours de stabilisation…
32
API SAX
Application Programming Interface
Mécanismes standardisés de manipulation de
documents XML
API événementielle
Processeur analysant le document
Association d’un gestionnaire de document
Activation des méthodes durant l’analyse
Simple et efficace
Implémentations JAVA (Xerces), C, C++
33
API DOM - Document Object Model
34
XML et le Web (1)
Doc Feuille
XML XSLT
IE
Netscape Processeur XSLT Analyseur XML
HTML
Servlet ou CGI
Serveur web
35
XML et le Web (2)
Doc Feuille
XML XSLT
IE
Netscape Processeur XSLT Analyseur XML
HTML
Opera HTML
+CSS Servlet ou CGI
Téléphones WML
Serveur web
WAP
36
XML et le Web (3)
Doc Feuille
XML XSLT
IE Feuille
Netscape Processeur XSLT Analyseur XML
XSLFO
HTML
+PDF
Processeur XSLFO
Opera HTML
+CSS Servlet ou CGI
Téléphones WML
Serveur web
WAP
37
XML et le Web (4)
Doc Feuille
XML XSLT
(Big) Browser
Processeur XSLT
Feuille
XSLFO
Analyseur XML
38
Futur standard ?
Adopté par Microsoft et IBM…
Interface avec nombreux logiciels
Oracle servlet XSQL, IFS
Serveur Apache cocoon
Framemaker génère CSS+XML
Nombreux schémas à succès MathML,
SVG
Déjà beaucoup d’applications…
39
Interro
XML eXtensible Markup Language
W3C World Wide Web Consortium
DTD Définition de Type de Document
XSD XML Schema Document
XPATH XML Path
XSLT eXtensible Style Language Transformation
CSS Cascading Style Sheet
URI Universal Ressource Information
XSL-FO eXtensible Style Language Formatting Objects
XLINK XML Link
XPOINTER XML Pointer
API Application Programming Interface
DOM Document Object Model
IDL Interface Definition Language
40