Le langage XML : fonctionnalités et standards associés
description
Transcript of Le langage XML : fonctionnalités et standards associés
1
Anto
ine R
izk, X
ML
200
5
Le langage XML :
fonctionnalités et standards associés
Antoine Rizk
2
Anto
ine R
izk, X
ML
200
5
La problèmatique
Création de l’information : 20% du PNB
90% de l’information sont des documents
Traitement de texte et PAO traditionnels
- 30% du temps sur le formattage
- 30% du temps sur la recherche d’informations
La technologie change tous les 18 mois
US : nombre de documents produits/an = 92 Mds
3
Anto
ine R
izk, X
ML
200
5
XML : Les besoins
Productivité
Réutilisabilité
Perrenité
Integrité
Partage
Portabilité
4
Anto
ine R
izk, X
ML
200
5
Les origines
1960
1986
1992
1998 XML
HTML
SGML
GM
Internet
WWW
5
Anto
ine R
izk, X
ML
200
5
Historique
1996 : un groupe de 80 experts SGML se réunit
durant 11 semaines
Nov 1996 : 1er Draft XML du W3C à la conférence
SGML à Boston
Fév 1998 : XML adopté par le W3C comme
recommandation
6
Anto
ine R
izk, X
ML
200
5
Rappel des concepts
M. MorelSEML, Promopole12 av des Prés78180 Montigny le BretonneuxSt-Quentin en Yvelines le 21/9/1995
Monsieur,
Conformément au contrat de bail signé entre la SEML et notre société XMLSys le 26/5/1993, jesouhaite vous informer de mon intention de mettre fin à ce bail et de donner congé à l'expirationde cette période triennale, soit au 31/5/1996.
Restant à votre disposition pour accomplir les formalités nécessaires, je vous prie d'agréer,Monsieur, l'expression de ma parfaite considération.
M. Dupont (Gérant)
7
Anto
ine R
izk, X
ML
200
5
XML demain
A partir du deuxième semestre de l’an 2000 :
le volume des données XML sera plus important que celui des données HTML.
- Gartner Group
47% des entreprises utiliseront XML
47% des entreprises utiliseront Linux
90% des entreprises utiliseront Java
- Java Web Panel survey, IBM 12/98
8
Anto
ine R
izk, X
ML
200
5
Generalised Markup
Generalised ou descriptive Markup
- n’inclut pas les instructions de formattage- décrit uniquement le rôle logique d’un élément- le formattage est décrit séparément par une feuille de style
\par
Ce document est une introduction à XML
ou bien
<par>
Ce document est une introduction à XML
</par>
9
Anto
ine R
izk, X
ML
200
5
Le balisage (Markup)
Exemple RTF:
\par\pard\sb240\sl-264\b0\hyphpar0
Ce document est une introduction à XML
\par Starts a new paragraph
\pard Restores the default paragraph properties
\sb240 Twelve-point space before the paragraph
\sl-264 Puts a 13.2 point space between lines.
\b0 Switches bold off
\hyphpar0 Switches off automatic hyphenation for the paragraph
10
Anto
ine R
izk, X
ML
200
5
HTML
<body bgcolor=«#FFFFFF» text =«#000000» link=«#054BBB» vlink=«#054BBB» background=«/Images/backshadow2.gif»>
<a name=«top»></a>
<img src=«/Images/ec.gif» border=0 width=50 height=5 align=left>
HTML 2.0, HTML 3.2 et HTML 4.0 sont des DTD SGML
11
Anto
ine R
izk, X
ML
200
5
HTML
L'affichage de très longues pages
- Frames, DIV, découpage en plusieurs pages
Contôle de la présentation
- CSS
Les liens hypertextes
- IMG, HREF
Un nombre prédéfini de balises
12
Anto
ine R
izk, X
ML
200
5
HTML
La diffusion d'informations structurées- La charge sur le serveur- Aucune interprétation côté client
• problème de mise-à-jour de fragments de pages
- Recherche d'informations pauvre
Format de données non perenne Format d'échange de données
nonretraitables
13
Anto
ine R
izk, X
ML
200
5
Introduction à XML
Petit exemple
<?xml version="1.0" standalone="yes"?>
<IdentityCard>
<FirstName>Antoine</FirstName>
<LastName>Rizk</LastName>
<CardNumber>11437398</CardNumber>
<Photo url="ar.gif"/>
</IdentityCard>
14
Anto
ine R
izk, X
ML
200
5
Documents bien formés
A chaque balise ouvrante doit correspondre une balise fermante
Balisage spécifique pour les éléments vides
<IMG SRC="picture.gif"/>
<IMG SRC="picture.gif"></IMG>
Les balises doivent s’imbriquer correctement
Une racine doit exister
Un élément ne peut avoir des attributs vides
<DL COMPACT>
incorrecte
<DL COMPACT="">
correcte
15
Anto
ine R
izk, X
ML
200
5
Documents valides
Un document valide doit
être bien formé
ET
se conformer à une grammaire (DTD)
16
Anto
ine R
izk, X
ML
200
5
La DTD
Document Type Definition - Structure générique logique
- Grammaire de la structure du document Etablit les règles de structure de documents Définit les noms d'éléments Définit les relations entre éléments Déclare les attributs ainsi que leurs types
Documentparser
validant
DTD
erreurs
sortie
17
Anto
ine R
izk, X
ML
200
5
Exemple (1)
<memo>
<to>M. Bonnard</to>
<from>A. Rizk</from>
<date>4 Septembre 2000</date>
<subject>Présentation XSL </subject>
<para>La présentation XSL suivra celle sur XML</para>
</memo>
18
Anto
ine R
izk, X
ML
200
5
DTD memo
<!DOCTYPE memo [
<!ELEMENT memo (to, from, date, subject?, para*) >
<!ELEMENT para (#PCDATA) >
<!ELEMENT to (#PCDATA) >
<!ELEMENT from (#PCDATA) >
<!ELEMENT date (#PCDATA) >
<!ELEMENT subject (#PCDATA) >
]>
19
Anto
ine R
izk, X
ML
200
5
DTD memo (2)
<!DOCTYPE memo [
<!ELEMENT memo (to, from, date, subject?, (para|figure)+ >
<!ELEMENT figure (graphic, caption?) >
<!ELEMENT graphic EMPTY >
<!ELEMENT para (#PCDATA|citation|figref)+ >
<!ELEMENT to (#PCDATA) ><!ELEMENT from (#PCDATA) ><!ELEMENT date (#PCDATA) ><!ELEMENT subject (#PCDATA) ><!ELEMENT citation (#PCDATA) ><!ELEMENT figref (#PCDATA) > <!ELEMENT caption (#PCDATA) >]>
20
Anto
ine R
izk, X
ML
200
5
Exemple (2)
<?xml version="1.0" ?>
<Book Author=”Anonyme"> <Title>Un livre exemplaire</Title> <Chapter id="1"> Ceci est le chapitre 1. Pas très intéressant </Chapter> <Chapter id="2"> Ceci est le chapitre 2.
Il est plus long, mais il n’est pas plus intéressant.
</Chapter>
</Book>
21
Anto
ine R
izk, X
ML
200
5
DTD Book
<!DOCTYPE Book [
<!ELEMENT Book (Title, Chapter+)>
<!ATTLIST Book Author CDATA #REQUIRED>
<!ELEMENT Title (#PCDATA)>
<!ELEMENT Chapter (#PCDATA)>
<!ATTLIST Chapter id ID #REQUIRED>
]>
22
Anto
ine R
izk, X
ML
200
5
Un document est un arbre
<chapitre>
<titre>ceci est un fragment d'un livre</titre>
<note>
<par> cette note contient deux paragraphes
</par>
<par> un autre paragraphe
</par>
</note>
</chapitre>
chapitre
titrenote
par parceci est un ..
cette note.. un autre ..
23
Anto
ine R
izk, X
ML
200
5
Les parsers
Modèle événementiel (SAX)- Callback appelé pour chaque événement :- début balise, attribut, fin document etc..
Peut être efficace sur les gros documents- L’arbre n’est jamais construit entièrement en mémoire
24
Anto
ine R
izk, X
ML
200
5
Les parsers (API DOM)
Un modèle d’arbre est construit en mémoire (arbres
abstraits)
L’application accède par API à l’arbre pour le
manipuler
API DOM est normalisée (recommandation W3C)
25
Anto
ine R
izk, X
ML
200
5
Limites d’une DTD
Un langage différent de celui des instances Limité à la structure d’arbre, différent du modèle R Pas de typage de contenu Pas d’héritage
=> possibilité d’utiliser des schémas : XML-Schema
26
Anto
ine R
izk, X
ML
200
5
Données/documents
dept postelabo
compta
322
456
postenomRizk
Courtaud
322
322
Parigot 456
<telephone poste="322">
<dept>labo</dept>
<person>Rizk</person>
<person>Courtaud</person>
</telephone>
LABO 322
RIZK,Courtaud
27
Anto
ine R
izk, X
ML
200
5
Données ou documents ?
<chapitre>
<titre>ceci est un fragment d'un livre</titre>
<note>
<par> cette note contient deux paragraphes
</par>
<par> un autre paragraphe
</par>
</note>
</chapitre><transaction>
<time date="19980509"/>
<amount>123</amount>
<currency type="pounds"/>
<from id="X3543>G.Dupont</from>
<to id="X7987>J.Smith</to>
</transaction>
28
Anto
ine R
izk, X
ML
200
5
Les EIP
Presentation ServicesPresentation Services
Access and Integration ServicesAccess and Integration Services
Application ServicesApplication ServicesCollaboration ServicesCollaboration Services
Classification
Metadata
Content Integration
Personalization
SecurityNetwork
Messaging Workflow
Application Integration
SystemManagement
Annotations, Recommendations
Access, HostingWrapping
Multiple Style SheetsVirtual Documents
Information ServicesInformation ServicesDescription, SearchDocs Repositories
29
Anto
ine R
izk, X
ML
200
5
Le “ Virtual XML Warehouse “
Description, organisation et recherche dans des ressources hétérogènes
Unique Point
d’ AccèsArchives
Virtual XML Warehouse
Documents
Bases de données
Web
RDF
30
Anto
ine R
izk, X
ML
200
5
Traitement XML
Parsing et traitement applicatif- import dans un SGBD
Regénération : export d’un SGBD
Fusion de données, génération d’arbre,
transformation- XSL
Présentation - CSS, XSL
31
Anto
ine R
izk, X
ML
200
5
XSL
XSL
Transformer
Sortie (x)FO
Interpreter
(x)
FO
Interpreter
(y)
Sortie (y)
FO
Interpreter
(z)
Sortie (z)
Feuille de style XSL
SourceXML
W3C XSL
RésultatFO
<date>décembre, 1997</date>
<xsl:template match="date"> <fo:block font-style="italic" color="green"> <xsl:apply-templates/> </fo:block></xsl:template>
<fo:block font-style= "italic" color="green" xmlns:fo="http://www.w3.org/TR/WD-xsl/FO">décembre, 1997</fo:block>
<P STYLE="font-style:italic;color:green">décembre, 1997</P>
...
{\c6\f12\i décembre, 1997\par}
32
Anto
ine R
izk, X
ML
200
5
Portail/Serveur d’intermédiation
Internet/Intranet
Terminal XML
Terminal HTML
Terminal
WAP
XSL
XML + XSL
SGBDR
SGBDO
Fichiers
XML
33
Anto
ine R
izk, X
ML
200
5
XML+XSL
SGBD-R
labo
compta
322
456
SGBD-ORizk
Israel
322
322
Parigot 456
<telephone poste="322">
<dept>labo</dept>
<person>Rizk</person>
<person>Israel</person>
</telephone>
Données XML
Plus feuilles XSLInternet/Intranet
Terminal XML
Terminal HTML
Terminal HTML/XML
34
Anto
ine R
izk, X
ML
200
5
XML + XSL architecture type
Browser HTML/XML:CSS / XSL
XSL
Serveurs HTTP Middle-tier
XML
OO XML Repository
R-DBMS
XML+HTML XMLR-DBMS
GXML
SQLTraitement de requêtesXSL ou DOM côté serveur
XML-QL
XSL côté client
35
Anto
ine R
izk, X
ML
200
5
Ex. 2 : ré-ingénierie de données
R-DBMS-1 DBMS-2(IR) DBMS-3
XML XML XML XML statique
Processeur XSLT Feuille XSLT
XML données fusionnées Script python
DB-RESULTAT
DB2XML DB2XML DB2XML
Impression catalogue
Transformations (scripts)
36
Anto
ine R
izk, X
ML
200
5
Les limites
XML reste au niveau syntaxique Pas de typage Pas de sémantique Pas de relations/rôles entre concepts => Les liens hypertextes : XLL (Xlink+Xpath) Les métadonnées : RDF spec et RDF schema Les schémas typés : XML-Schema Les topic maps
37
Anto
ine R
izk, X
ML
200
5
Liens simplesLiens simples
Document BDocument A
Link element Linkresource
38
Anto
ine R
izk, X
ML
200
5
XpathXpath
Document BDocument A
39
Anto
ine R
izk, X
ML
200
5
Liens étendusLiens étendus
Document B
Link elements
Document A
40
Anto
ine R
izk, X
ML
200
5
Liens étendus “out of line”Liens étendus “out of line”
Link elementsDocument C
Document BDocument A
41
Anto
ine R
izk, X
ML
200
5
L’enjeu
Définir une ontologie par domaine Organiser les schémas de navigation
DTD + concepts + roles + sémantique = ontologie ontologie + thesaurus = RDF schema RDF schema => RDF specifications => métadonnées
Augmenter le taux de précision Diminuer le taux de rappel
42
Anto
ine R
izk, X
ML
200
5
L’évolution documentaire
ASCII, JPEG, MPEG...
XML,XSLXQL,XLL, SMIL...
Formats monomédia
Structure syntaxique
Structure sémantique RDFOntologie,Thesauru
s
Intermédiation
ProductionPublication
43
Anto
ine R
izk, X
ML
200
5
Intégration par les Métadonnées
Ontologies
Vocabulaires
Descriptionde ressources
Métadonnées
Données
Informationset Ressources
Organisationdes Connaissances
<tag1> <tag2> <tag3></tag1>
<tag1> <tag2> <tag3></tag1>
44
Anto
ine R
izk, X
ML
200
5
L’état actuel
XML : recommandation 10 fév 1998
DOM : DOM1 (1er oct 1998), DOM2 (recommandation nov 00), DOM3..
Xlink : recommandation 27 Juin 2001
Xpointer : WD 16 août 2002
SVG 1.1 : Recommendation 14 janv 2003
SMIL 2.1 : recommandation 13 déc 2005
XSLT + Xpath : recommandation 16 nov 1999
XSLT2 : candidate recommendation on June 2006
XSL FO : recommendation 15 oct 2001
MathML : V1 (recommandation Avr 1998), V1.1 (Juil. 99), V2 (WD)
XML Schema , XMLQuery RDF : Model&syntax (recommandation fév 1999), Puis 10 fév 2004
XHTML Xforms : Recommendation 14 Mars 2006
46
Anto
ine R
izk, X
ML
200
5
Core Architecture
Query Engine
Session Manager
URL ResolverMetadataStore
Painter
Museum
Painting
XML Wrapper
ResourcesXMLXML
Logical Middle Tier
CWEB/Application Server
Other docs
news, reports
on the Intranete.g. mails,
Well-formedXML docson the Web
XML
XML enabledDBMS
Client Tier
SchemaGenerator
RDF/XMLLoader
XML/XSLProcessor
ResourceDescription
Interface
Query BrowsingInterface
Artist
XML/XSL
Middleware APIs
http
http
Artist
URL
RDF/XMLSchema
RDF/XMLDescriptions
47
Anto
ine R
izk, X
ML
200
5
Pour aller plus loin ..
www.w3.org
www.xmlfr.org
www.oasis-open.org/cover
Livre : A.Michard (chez Eyrolles)
48
Anto
ine R
izk, X
ML
200
5
ZOOM sur XML
49
Anto
ine R
izk, X
ML
200
5
Les éléments
<chapitre>
<titre>ceci est un fragment d'un livre</titre>
<note>
cette note contient deux paragraphes
<par>un paragraphe
</par>
<par> un autre paragraphe
</par>
</note>
<image f="image1.gif"/>
<image f="image2.gif"></image>
</chapitre>
start-tag
end-tag
sensible à la casse
start-tag=end-tag
< = <
> = >
mixed content
emptyelement
data content
50
Anto
ine R
izk, X
ML
200
5
Créer des spans (étendus)
<chapitre>
<titre>ceci est un fragment d'un livre</titre>
<note>
cette note contient <rev/>deux paragraphes
<par>un paragraphe
</par>
<par> un autre <endrev/> paragraphe
</par>
</note>
<image f="image1.gif"/>
<image f="image2.gif"></image>
</chapitre>
51
Anto
ine R
izk, X
ML
200
5
Les attributs
<transaction>
<time date=”04092000" hour="0945"/>
<amount>123</amount>
<currency type="pounds"/>
<from id="X3543”>G.Dupont</from>
<to id="X7987”>J.Smith</to>
</transaction>
AttName/Attvalue sensibles à la casse
Attvalue peut contenir des espaces
" ou ' mais pas les deux à la fois
ex. <vis dimension='2" '/>
ou bien " pour le "
' pour le '
l'omission du nom d'attribut n'est pas permise
52
Anto
ine R
izk, X
ML
200
5
Les attributs réservés
Xml:lang<para xml:lang="en">this is English text</para>
<instruction xml:lang="en-GB">..lift...</instruction>
<instruction xml:lang="en-US">..elevator...</instruction>
<para xml:lang="i-yi"></para>
<para xml:lang="x-verlan"></para>
code ISO 639
code ISO 3166
code IANAInternet Assigned Numbers Authority
défini par l'utilisateur
53
Anto
ine R
izk, X
ML
200
5
Attributs ou éléments?
Attributs quand :
- Typage est nécessaire- Information ne fait pas partie du contenu (ex. version)
54
Anto
ine R
izk, X
ML
200
5
Les attributs réservés
Xml:space- deux valeurs possibles : 'preserve' et 'default'
<note xml:space="preserve">
cette note contient deux paragraphes
<par> un paragraphe
</par>
<par> un autre paragraphe
</par>
</note>
<note>cette note contient deux paragraphes
<par>un paragraphe </par> <par> un autre paragraphe </par>
</note>
55
Anto
ine R
izk, X
ML
200
5
Les déclarations (1)
Instructions au parser/XML processor
Forme simple : <! ... >
Forme groupée : <! ... [
<! ... >
<! ... >
]>
56
Anto
ine R
izk, X
ML
200
5
Les déclarations(2)
<!DOCTYPE myDTD> ou
<!DOCTYPE myDTD [ définition de la DTD ici
]> <!-- ceci est un commentaire--> Character data section
<![CDATA[<exemple> est une balise XML. < remplace le <]]> <!ENTITY ... > <!NOTATION ... > <!ELEMENT ... > <!ATTLIST ... > <![IGNORE[ ...]] > <![INCLUDE[ ...]] >
57
Anto
ine R
izk, X
ML
200
5
Processing instruction
<? ... ?>
<P> un saut de page ici
<?Adepteditor (newpage) ?>
<?FrameMaker (np) ?>
serait bien
<P>
58
Anto
ine R
izk, X
ML
200
5
La déclaration XML
<?XML version="1.0" encoding="UTF-8" standalone="yes" ?>
Les attributs sont optionnels
Les valeurs ci-dessus sont les valeurs par défaut
59
Anto
ine R
izk, X
ML
200
5
Les entités
Document
Entité A
Entité B
Le document entier = 3 entités :
Le document entity (sans nom)
Entité A
Entité B
60
Anto
ine R
izk, X
ML
200
5
L'usage des entités
Eviter la duplication de certaines informations (factorisation)
Différenciation des informations pour des plateformes incompatibles
Diviser des gros documents en unités gérables Utilisation de données non XML
61
Anto
ine R
izk, X
ML
200
5
La DTD
Document Type Definition - Structure générique logique
- Grammaire de la structure du document Etablit les règles de structure de documents Définit les noms d'éléments Définit les relations entre éléments Déclare les attributs ainsi que leurs types
Documentparser
validant
DTD
erreurs
sortie
62
Anto
ine R
izk, X
ML
200
5
La DTD
External subset vs. Internal subset
Internal subset
External subset
document instance
63
Anto
ine R
izk, X
ML
200
5
Structure de la DTD
Ensemble de déclarations au format <! .... >
selon 4 classes - ELEMENT- ATTLIST- ENTITY- NOTATION
64
Anto
ine R
izk, X
ML
200
5
Document type declaration
<!DOCTYPE mybook [
<!-- la DTD mybook est déclarée ici -->
<!ELEMENT ... >
<!ENTITY ... >
...
]>
<!DOCTYPE mybook SYSTEM "/mydir/DTDS/mybook.dtd" [
<!-- la partie interne de la DTD mybook est déclarée ici -->
<!ELEMENT ... >
<!ENTITY % parlist "par | list ">
...
]>
partie externe
lu en premierdéclaration retenue
65
Anto
ine R
izk, X
ML
200
5
Les éléments
<!ELEMENT image EMPTY>
<!ELEMENT p ANY>
<!ELEMENT article (par*, section+)>
nom
modèle de contenumodel group
alphanumérique. - _ : ex: P, X:2, A-3
66
Anto
ine R
izk, X
ML
200
5
Modèle de contenu
<!ELEMENT article (par, section)>
<!ELEMENT article (par | section)>
<!ELEMENT article (par* | section)>
<!ELEMENT article (par, section?)>
<!ELEMENT article (par, section+)>
connecteur de séquence
connecteur de choix
indicateurs d'occurence
67
Anto
ine R
izk, X
ML
200
5
Le texte
<!ELEMENT article (#PCDATA)>
<!ELEMENT article (#PCDATA | par |section) *>
contenu mixte
68
Anto
ine R
izk, X
ML
200
5
Les ambiguités
(item?, item)
à remplacer par
(item, item?)
((nom,prof) | (nom,eleve))
à remplacer par
(nom, (prof | eleve) )
69
Anto
ine R
izk, X
ML
200
5
Les entités
Internal entities function as typing shortcuts or macros. External entities allow you to incorporate content from other files. Parameter entities, which can be internal or external, are only
available within the internal and external subsets (the DTD).
Internal Entities : remplacement d’un texte déclaré dans la DTD
Forme suivante:
<!ENTITY entityname "replacement text">
Ex:
<!ENTITY yoyo 'Yoyodyne Industries, Inc.'>
Remplacement de texte dans l’instance par &yoyo;
70
Anto
ine R
izk, X
ML
200
5
Entités (suite)
External Entities : référence à du texte XML ou autre notation dans un fichier externe. D’où usage de SYSTEM
<!ENTITY entityname [PUBLIC "public-identifier"] SYSTEM "system-identifier"> - system identifier est une URI, souvent un nom de fichier. Le public
identifier, s’il est présent, peut être utilisé comme raccourci vers la ressource externe par certains parsers.
Ex: <!ENTITY chap1 SYSTEM "chap1.xml"> - &chap1; Incorpore le contenu du fichier chap1.xml
<!ENTITY entityname [PUBLIC "public-identifier"] SYSTEM "system-identifier" notation>
Ex: <!ENTITY mypicture SYSTEM "pic01.gif" GIF> - GIF doit être déclaré comme NOTATION (voir plus loin)
71
Anto
ine R
izk, X
ML
200
5
Entités (suite)
Parameter entities <!ENTITY % pentityname1 "replacement
text"> <!ENTITY % pentityname2 SYSTEM "URI">
Le fichier dans URI ne peut qu’être XML. Pas une notation autre.
72
Anto
ine R
izk, X
ML
200
5
Entities : qqes infos
External entities can be further classified as either "parsed" or "unparsed". Entities which refer to external files that contain XML are called "parsed entities;" entities which refer to other types of data, identified by a notation, are "unparsed."
The parser inserts the replacement text of a parsed entity into the document wherever a reference to that entity occurs. It is an error to insert an entity reference to an unparsed entity directly into the flow of an XML document. Unparsed entities can only be used as attribute values on elements with ENTITY attributes.
Unparsed entities are used most frequently on XML elements that incorporate graphics into a document.
73
Anto
ine R
izk, X
ML
200
5
Entities
<!DOCTYPE doc [<!ELEMENT doc (para|graphic)+><!ELEMENT para (#PCDATA)><!ELEMENT graphic EMPTY><!ATTLIST graphic image ENTITY #REQUIRED alt CDATA #IMPLIED>
<!NOTATION GIF SYSTEM "CompuServe Graphics Interchange Format 87a"><!ENTITY mypicture SYSTEM "normphoto.gif" GIF><!ENTITY norm "Norman Walsh">]><doc><para>The following element incorporates the image declared as
"mypicture":</para><graphic image="mypicture" alt="A picture of &norm;"/></doc>
Le nom de l’entité
Référence à l’entité
74
Anto
ine R
izk, X
ML
200
5
Déclarations d'attributs
<!ATTLIST nomélément nomattribut typeattribut valdefault>
Exemple
<!ELEMENT chapitre (titre,intro,sec*) >
<!ATTLIST chapitre nivsecurite CDATA
date CDATA
version NMTOKEN
type (corps | annexe) >
75
Anto
ine R
izk, X
ML
200
5
Les types d'attributs
CDATA- chaîne de caractères (équiv.DTD absente)- <chapitre auteur="A. Rizk">
NMTOKEN, NMTOKENS- <picture boundary = '5 12 35 55'> <doc size="A4">
ENTITY, ENTITIES<!ENTITY logoEVE SYSTEM "/mondir/images/eve.gif">
<!ELEMENT entete EMPTY>
<!ATTLIST entete file ENTITY ..>
<entete file="logoEVE">
76
Anto
ine R
izk, X
ML
200
5
Les types d'attributs
ID, IDREF, IDREFS<p>voir <link target="x123"> chapitre 2 </link> pour plus
d'info</p>
<chap ident="x123"> etc etc </chap>
<!ELEMENT link (#PCDATA)>
<!ATTLIST link target IDREF #REQUIRED>
<!ELEMENT chap (#PCDATA)>
<!ATTLIST chap ident ID #REQUIRED>
77
Anto
ine R
izk, X
ML
200
5
La valeur par défaut
<!ATTLIST a att1 NMTOKEN #REQUIRED
att2 NMTOKEN #IMPLIED
att3 NMTOKEN "A4"
att4 (x | y) "y"
att5 NMTOKEN>
78
Anto
ine R
izk, X
ML
200
5
Déclaration de NOTATION
<!NOTATION TIFF SYSTEM "C:\programfiles\show_TIF.exe">
<!NOTATION TEX PUBLIC "-//MyCorp//NOTATION Tex Help File//EN" "C:\programfiles\show_TIF.exe">
SYSTEM
79
Anto
ine R
izk, X
ML
200
5
Les types d'attributs
NOTATION<!ATTLIST code langage NOTATION (C | C++ | JAVA)>
<code langage="C"> main() {....} </code>
NAME GROUP
<!ATTLIST list type (bulleted | indented | numbered) >
80
Anto
ine R
izk, X
ML
200
5
Référence à une NOTATION
A l'aide d'une entité <!NOTATION TIFF SYSTEM "C:\programfiles\show_TIF.exe">
<!ENTITY logoEVE "C:\mesimages\eve.tif" NDATA TIFF><p> je mets le logo ici &logoEVE; </p>
A l'aide d'un attribut
<!NOTATION C SYSTEM "C:\programfiles\gcc.exe"><!ATTLIST code langage NOTATION (C | C++ | JAVA)>
<code langage="C"> main() {....} </code>gcc
2
4
31
81
Anto
ine R
izk, X
ML
200
5
La DTD
<?XML ... standalone="yes"?>
Internal subset
External subset
standalone = "yes" standalone="no"
82
Anto
ine R
izk, X
ML
200
5 XPath
83
Anto
ine R
izk, X
ML
200
5
Arbre XML<livre parution="12.09.66">
<entete>
<auteur><prenom>Boris</prenom><nom>Vian</nom>
</auteur><titre>L'automne à Pékin</titre>
</entete><corps><chapitre>
<titre>Voyage en Exopotamie</titre>
<para>Amadis Dudu suivait...</para>
<para>Il y avait du soleil...</para>
</chapitre></corps></livre>
84
Anto
ine R
izk, X
ML
200
5 self
parent
Ancestor-or-self
ancestor
following
following-sibling
preceding-sibling
preceding
child
descendant
descendant-or-self
85
Anto
ine R
izk, X
ML
200
5
Le vocabulaire XPath
Exprime la notion d'axe : parent, enfant, ancêtre, descendant pour identifier des sous-ensembles de noeuds au sein d'un document XML.
Permet d'exprimer des conditions dans la sélection des noeuds d'un document XML, ce sont les predicats,
Expression formelle d'une requête Xpath : axe::noeud[predicat]
86
Anto
ine R
izk, X
ML
200
5
Xpath un langage orienté contexte
La syntaxe axe::noeud[prédicat] est répétable à la manière de la notation d'un système de fichier :
- Le séparateur est le /- Chaque expression est dépendante du résultat (ensemble de
noeuds ou NodeSet) de la précédente
87
Anto
ine R
izk, X
ML
200
5
Xpath un langage orienté contexte
Un axe est une direction dans le document, il pose la base de la requête en pré-sélectionnant le premier sous-ensemble de noeuds XML à tester,
Puis vient l'expression du/des noeud(s) qui peut avoir deux formes dans la requêtes :
- Générique : *, child- Explicite : le nom du noeud XML lui-même.
88
Anto
ine R
izk, X
ML
200
5
Xpath un langage orienté contexte
Quelques axes :- Parent, child- Descendant, descendant-or-self- Ancestor, ancestor-or-self- Following, following-sibbling- Preceding, preceding-sibbling
89
Anto
ine R
izk, X
ML
200
5
Xpath un langage orienté contexte
Il existe une syntaxe simplifiée qui permet d'exprimer des chemins d'une manière plus condensée,
Rapprochement encore plus fort vers la syntaxe de type « Système de fichiers »
Attention cependant, il est préférable de l'utiliser dans un contexte relatif
90
Anto
ine R
izk, X
ML
200
5
Xpath un langage orienté contexte
Les expressions précédentes peuvent s'écrire aussi :- .. *- //*- ../.. ainsi de suite pour remonter au noeud ancêtre
91
Anto
ine R
izk, X
ML
200
5
Xpath un langage orienté contexte
Un prédicat est une condition à satisfaire afin de rendre le contexte valide,
S'exprime entre crochets juste après l'expression du noeud
Permet de filtrer les noeuds :- Par leur nom,- Leur attribut,- Par leur valeur
Grace à des fonctions/opérateurs classiques
92
Anto
ine R
izk, X
ML
200
5
Exemples de requêtes XPath
child::para● Element para, enfant du noeud courant
child::*● Tous les noeuds enfants du noeud courant
child::text()● Tous les noeuds de type textuel enfants du noeud courant
93
Anto
ine R
izk, X
ML
200
5
Exemples de requêtes XPath
child::node()- Tous les noeuds enfants du noeud courant quel que soit leur
type
attribute::name- Selectionne l'attribut du noeud courant nommé name
Attribute::*- Tous les attributs du noeud courant
94
Anto
ine R
izk, X
ML
200
5
Exemples de requêtes XPath
descendant::para- Tous les elements para, descendants du noeud courant
ancestor::div- Tous les elements div, ancetres du noeud courant
ancestor-or-self::div- Tous les elements div, ancetres du noeud courant et lui
meme eventuellement
95
Anto
ine R
izk, X
ML
200
5
Exemples de requêtes XPath
descendant-or-self::para- Tous les elements para descendants du noeud courant
self::para- Sélectionne le noeud courant s'il se nomme para
child::chapter/descendant::para- Tous les noeuds para descendants des noeuds chapter
enfants du noeud courant
96
Anto
ine R
izk, X
ML
200
5
Exemples de requêtes XPath
child::*/child::para- Tous les noeuds para petits enfants du noeud courant
/ Sélectionne le noeud racine /descendant::para
- Selectionne tous les noeud para du document
/descendant::olist/child::item- Tous les élements item enfants des élements olist du
document
97
Anto
ine R
izk, X
ML
200
5
Exemples de requêtes XPath
child::para[position()=1]- Le premier enfant para du noeud courant
child::para[position()=last()]- Le dernier enfant para du noeud courant
following-sibling::chapter[position()=1]- Sélectionne le prochain élement chapter au noeud courant
98
Anto
ine R
izk, X
ML
200
5
Exemples de requêtes XPath
preceding-sibling::chapter[position()=1]- Sélectionne le précédent élement chapter au noeud courant
/descendant::figure[position()=42]- Sélectionne le quarante deuxième élement figure dans le
document
child::para[attribute::type="warning"]- Sélectionne tous les noeuds para qui ont un attribut nommé
type possédant la valeur « warning »
99
Anto
ine R
izk, X
ML
200
5
Exemples de requêtes XPath
/child::doc/child::chapter[position()=5]/child::section[position()=2]
- Tous les élements section situés en deuxième position et enfants des élements chapter situés en cinquième position des élements doc enfants du noeud racine
child::para[attribute::type='warning'][position()=5]- Sélectionne les élements para enfants du noeud courant s'ils
ont un attribut type égal à « warning » et s'ils sont en cinquième position
100
Anto
ine R
izk, X
ML
200
5
Exemples de requêtes XPath
child::chapter[child::title]- Séléctionne les élements chapter s'ils ont un enfant nommé
title
child::*[self::chapter or self::appendix]- Tous les enfants du noeud courant à condition qu'ils se
nomment chapter ou appendix
child::*[self::chapter or self::appendix][position()=last()]- Idem. Et à condition qu'ils soient en dernière position
101
Anto
ine R
izk, X
ML
200
5
Equivalences
Syntaxe complète- Self
- Attribute
- N[position()=5]
- Parent
- N/descendant::para
- N[attribute::a1][attribute::a2]
Syntaxe simplifiée- .
- @
- N[5]
- ..
- N//para
- N[@a1 and @a2]