XML (eXtensible Markup Language) The eXtensible Markup Language W 3 C (World Wide Web Consortium) .

Post on 04-Apr-2015

106 views 0 download

Tags:

transcript

XML(eXtensible Markup Language)

The eXtensible Markup Language

W3C (World Wide Web Consortium)

http://www.w3C.org

Un exemple en HTMLextrait de « XML expliqué aux débutants » d’Emmanuel Lazinier

<H2>Bibliographie XML</H2>  <UL> 

<LI>  Jean-Christophe Bernadac et François Knab, <I>Construire une application XML</I>, Paris, Eyrolles, 1999</LI>  <LI>  Alain Michard, <I>XML, Langage et Applications</I>, Paris, Eyrolles, 1998 </LI>  <LI>  William J. Pardi, <I>XML en Action</I>, Paris, Microsoft Press, 1999, adapté de l'anglais par James Guerin</LI>

</UL> 

Le « source » avec balises de mise en page :

Visualisation dans un navigateur

Aucune indication de sémantique par les balises

Problèmes dus en partie à HTML

Les balises HTML sont prédéfinies, Un seul type de document, Structuration et contenu non séparés,

Une seule vue du même document, Sémantique des liens rudimentaire, Adaptation en utilisant des scripts, Interopérabilité limitée (échanges

d'informations limité)

Même si...

Facilité d'apprentissage de HTML, disponibilités d'outils (de création,

de visualisation), génération dynamique de

documents, langages de scripts pour des

comportements dynamiques, ...

En XML :<?xml version="1.0" encoding="ISO-8859-1"?> <BIBLIO SUBJECT="XML"> <BOOK ISBN="9782212090819" LANG="fr" SUBJECT="applications"> <AUTHOR> <FIRSTNAME>Jean-Christophe</FIRSTNAME> <LASTNAME>Bernadac</LASTNAME> </AUTHOR> <AUTHOR> <FIRSTNAME>François</FIRSTNAME> <LASTNAME>Knab</LASTNAME> </AUTHOR> <TITLE>Construire une application XML</TITLE> <PUBLISHER> <NAME>Eyrolles</NAME> <PLACE>Paris</PLACE> </PUBLISHER> <DATEPUB>1999</DATEPUB> </BOOK> <BOOK ISBN="9782212090529" LANG="fr" SUBJECT="général"> ….</BOOK></BIBLIO>

Différences ?

Sémantique Balises : firstname, lastname Attributs

Hiérarchie

Biblio

Book

AuthorTranslator

Title

Firstname Lastname Aucune balise de

présentation

Ce que XML permet (ou va permettre ?)

Taper une seule fois le contenu, sans se soucier de la présentation de ce contenu

Visualiser/Exploiter ce contenu de plusieurs manières

Le contenu

sans se soucier de la présentation ou des traitements futurs ;

sans avoir à saisir des libellés tels que'"auteur", "année de parution : à la manière dont on alimenterait une base de données.

La présentation

de multiples présentations (en tableau, en texte suivi…),

avec éventuellement tris, sélections, réorganisations, génération automatique de libellés, tables des matières, index, etc.

et ce sur de multiples médias (écran, papier, terminal Braille, réfrigérateur, PDA, etc.)

Le code XML est intégré à une page HTML et exploité par un script=> interactivité.

L’exploitation

Comprendre/exploiter au mieux le contenu de ces pages, grâce au balisage spécifique, indépendant de toute application.

Les apports d'XML

Au départ : l'arbre d'éléments Un élément est un composant

identifiable d'un document (paragraphe, numéro de partie, date, listes, titre, …)

Un élément : peut avoir un contenu (données, autres

éléments), peut être un pointeur sur de l'information

(lien hypertexte), doit être "contigu" : un début –une fin …

sans "trou"

L'arbre d'éléments (suite)

Chaque élément est délimité par des crochets (balise de fermeture obligatoire sauf pour les éléments vides

exemple : <foo att1="val1" /> ),

Un élément peut avoir plusieurs attributs pour décrire ses propriétés

exemple de balise ouvrante :

<rapport langue="FR" version="v2">

livre

Chapître

Chapître

Section

Section

Exemple

Exemple

Rmq : le document est un arbre : les éléments ne doivent donc pas se chevaucher !

HTML : Description physique et structurelle mêlées

Durée de vie courte (= celle des technologies qui donnent un sens aux éléments de mise en page)

Plusieurs formes d'un même document => plusieurs versions de ce document !

Présentation

Contenu

Structure

Doc. HTML

Présentation

Contenu

Structure

Doc. XML

Contrôle de validité

Doc. bien formé - doc. valide

Bien formé : Règles syntaxiques de XML respectées = bonne formulation.

Valide : c'est un document bien formé qui respecte une DTD ou un schéma.

Modularité et réutilisation

Structure définie à part, dans une "Document Type Definition" (DTD) ou dans un Schéma

Utilisation de structures normalisées, publiques (ex : pour un tableau, une

liste de références bibliographiques, …) Définition de nouveaux types de

documents

Extensibilité et structure

<DATE><ANNEE>1999</ANNEE><MOIS>Octobre</MOIS><JOUR>14</JOUR>

</DATE>ou<date format="ISO-8601">1999-10-14</date>

Sémantique dans les balises

<PERSON ID="p1100" SEX = "M"><NAME>

<GIVEN> Hubert </GIVEN><SURNAME> McDaniel </SURNAME>

</NAME><BIRTH><DATE>20 Fev 1923</DATE> </BIRTH><DEATH><DATE>9 Oct 2000</DATE> </DEATH>

</PERSON>

Des données auto-documentées

Autres avantages

Reste indépendant des constructeurs Norme du W3C

Codage universel (UNICODE)

Ce qu'XML n'est pas

Ce n'est pas un langage de programmation,

Ce n’est pas un protocole réseau, Ce n'est pas un format

propriétaire, Ce n'est pas une base de données,

… mais XML permet le stockage d'informations "semi structurées".

Pour plus de détails… quelques éléments de syntaxe

Structure d’un document XML Le prologue Le corps

Une racine unique, L’arbre d’éléments

Le prologue

La déclaration XML La version de la spécification utilisée, Le type de codage (le jeu de caractères)

La déclaration de la DTD ou du schéma

Des commentaires (<!-- … -->) Les instructions de traitement (pour

traiter le contenu non xml) La déclaration d’entités

Déclaration de type

On indique le type du document (titlepage) SYSTEM permet de définir la ressource qui

contient la DTD : une URL (<!doctype rapport SYSTEM "rapport.dtd" [déclarations]>)

La référence à une DTD ou à un schéma n'est pas obligatoire… mais recommandée !!!

(<!doctype lettre [déclarations]>)

Le corps d'un doc XML Une racine unique, L’arbre d’éléments.

Une racine unique

<?xml version "1.0" ?>

<!-- livre est la racine unique de ce document-->

<livre>

<chapître>

<section>... </section>

<section>... </section>

</chapître>

<chapître>

...

</chapître>

</livre>

L'arbre d'éléments Un élément se compose:

D’une balise d’ouverture Un contenu Une balise de clôture

Si l’élément est vide il peut s’écrire uniquement avec la balise d’ouverture et un "slash" avant le chevron fermant

exemple : <position/> Un élément peut contenir d'autres

éléments imbriqués.

Un doc bien formé

Cela signifie : Une racine unique, début et fin explicites pour chaque

élément, Pas de superposition de définitions

d'éléments, Les attributs respectent les règles

suivantes :

Balises et attributs : règles des noms Les noms commencent par une

lettre ou _ (caractère souligné) les noms peuvent contenir :

des lettres de tous les alphabets (Unicode),

des chiffres et les 3 caractères _ - .

Balises et attributs : règles des noms Les noms ne peuvent pas

contenir : d'autres ponctuation (sauf :) des blancs ou des retours à la ligne)

La "casse" (majuscule/minuscule) est importante.

Règles sur les attributs

un espace sépare un attribut d'un élément ou deux attributs entre-eux,

les attributs sont nommés, utilisation de l'égalité et des

quotes (simples ou doubles)

Erreurs "classiques" de "bonne formation" Absence de déclaration XML mauvaise formation des noms XML mauvaise syntaxe des balises pas d'élément racine caractères spéciaux mal utilisés

Validité d'un doc XML

Après le test de "bonne formation" Test de la conformité à la structure

définie dans la DTD ou le schéma associé.

Document Type Definition

DTD

Permet de définir un modèle d'un type de document, appelé aussi "Doctype": message email, article de journal, livre …

DTD (suite)

Un ensemble de règles de définition de la structure d'un document,En général dans un fichier à part,Permet de connaître la structure d'un document sans accéder à son contenu,Une DTD peut être partagée par plusieurs documents et plusieurs sites Web.

DTD (suite)

Un exemple de définition d’une liste qui est constituée d’items :

<!ELEMENT list (item)+><!ELEMENT item (#PCDATA)>

les items contiennent du texte (parsable character data)

DTD (suite)

Pas nécessairement incluse dans un fichier unique : sections internes et sections externes.

Plusieurs sections externes (mais pas de déclaration du même élément dans 2 sections différentes : conflit de noms)

domaines nominaux…

Quelles déclarations ?

Eléments types, listes d'attributs, entités, notations, (des commentaires)

Eléments types

Exemple :<!ELEMENT livre (préface?, avant-propos?,

introduction, partie+, chapitre+, conclusion)>

introduction, partie, chapitre et conclusion obligatoires,

préface et avant-propos facultatives

au moins une fois : partie, chapitre

une seule fois : introduction, conclusion

Eléments déclarés "ANY"

Le contenu est : un groupe ou répétable, il peut contenir : des chaînes

(#PCDATA) ou tout autre élément de la DTD.

Eléments déclarés "EMPTY"

Le contenu est vide On lui associe des attributs.

Les attributs

Il est associé à un élément, Il fournit des informations

supplémentaires sur l'élément, Il est limité à un ensemble de valeurs

définies.

Les attributs (suite)

Il contient en général : des informations de sécurité, de

contrôle (version, statut, diffusion, …) des compléments d'information

(date, langue, …) des informations de formattage.

Les attributs prédéfinis

xml:lang <p xml:lang='fr'> essai </p><!-- la langue peut être privée --><p xml:lang='iserois'>Quein même</p>

xml:space pour indiquer à l'application si le contenu d'un élément doit être traité en préservant les espaces (xml:space='preserve') ou application du traitement par défaut (xml:space='default').

à la norme ISO 3166par défaut

Exemple

Listes d'attributs

Un attribut : une paire (nom, valeur) associée à un élément

<ATTLIST nom-élément nom-att1 type-att1 déclaration-de-défaut>

Types d'attributs :CDATA, ID ou IDREF ou IDREFS, ENTITY ou

ENTITIES, NMTOKEN ou NMTOKENS, NOTATION

Exemple

Dans la DTD :

Dans le document XML :

Un exemple

Attributs ID, IDREF

Un attribut de type ID affecte un identificateur unique à un élément XML, t.q. : Le parser peut tester s'il est unique à l'interieur du

document, Un attribut IDREF peut référencer un élément

nommé par ID les paires ID/IDREF sont utilisées pour :

des références croisées et des liens internes. référencer des objets dans le document.

Exemple

Exemple de déclarations pour ID/IDREF dans la DTD :

<!ELEMENT para (#PCDATA | figure | figref)* ><!ELEMENT figure (title?, graphic) ><!ATTLIST figurename ID #REQUIRED ><!ELEMENT graphic EMPTY ><!ATTLIST graphicfilename CDATA #REQUIRED ><!ELEMENT figref (#PCDATA) ><!ATTLIST figrefpointer IDREF #REQUIRED >

Exemple (suite)

Dans le document : <para> <figure name="fishes"> <title>Fish come in many sizes</title> <graphic filename="fisheatfish.jpg"/> </figure> As we see in the figure above (<figref

pointer="fishes"> </figref>) we must consider size when selecting a fishtank.

</para>

Les déclarations d'entités

Celles déclarées dans un document : entités générales,

Celles déclarées dans une DTD pour être utilisées dans la DTD : entités paramètres

Exemple : les entités d'un livre

<?xml version="1.0"?><!doctype livre SYSTEM "livre.dtd" [ <!ENTITY toc SYSTEM 'toc.xml'> <!ENTITY chap1 SYSTEM 'chap1.xml'> <!ENTITY chap2 SYSTEM 'chap2.xml'>]><livre>

<titre>Ceci est le titre</titre>&toc;&chap1;&chap2;

</livre>

Les entités seront remplacées par

leur valeur (ici, le contenu des fichiers)

Entité paramètre

exemples :<!ENTITY % ent1 SYSTEM 'val1'>

<!ENTITY % ent2 SYSTEM 'http://foo.fr/xxx.xml'>

<!ENTITY % ent3 PUBLIC '-//US//TEXT texte//FR' 'http://foo.fr/secours.xml'>

Déclaration dans la partie interne ou externe d'une DTD

Dans la partie interne d'une DTD (entre les crochets ouvrant et fermant de la déclaration DOCTYPE) : utilisables en pratique pour inclure le contenu d'un fichier externe

Adressée par identificateur public FPI (Formal Public Identifier) Pas toujours gérés par les

applications Hérité de SGML Indirection entre le nom symbolique

donné à l'entité et son URL de la forme :

<!ENTITY nom PUBLIC FPI URL>

Utilisé si l'applicationne peut pas

résoudre l'identificateur

public

Quelques règles d'écriture Modulariser / réutiliser

Quelques règles d'écriture

Ordonner Les déclarations d'entités se placent

en tête

Les outils nécessaires

Un éditeur adapté (vision arborescente, indentation, etc…)

Un "parseur", pour vérifier la bonne formulation : il peut être validant ou non.

Une "visionneuse" : qui permet d'appliquer une feuille de style à un document XML et d'afficher le document formaté.

En résumé :Editeur

Document

Navigateur

Lecteur

Écrit le

Montré au

Chargé dans le

Vérifié par le

"Parseur"

Une vue d'ensemble d'XML

Les origines d'XML

SGML

XML

HTML

GMGM = Generalized Markup

1960

1986

1992

1997

WWW

Internet

XML c'est (1/2) Des recommandations du W3C (XML

1.1 le 4 février 2004 : http://www.w3.org/TR/2004/REC-xml11-20040204/

X : eXtensible / Ouvert ML : Markup Language (comme HTML) Métalangage pour créer d'autres

langages

XML c'est (2/2) Séparation du contenu, de la

structure et de la forme Ajout de sémantique Internationalisation : Unicode

SGML ?

Trop complexe (beaucoup d'options différentes, …),

omission possible de balises : pb de lisibilité,

"XML = 80% des fonctionnalités de SGML et 20% de sa difficulté"

d'après J.C. Bernadac et F. Knab

Sous ses apparences…

Ressemble au premier abord à du HTML

Est un sous-ensemble de SGML (Standard Generalised Markup Language)

Offre plus de flexibilité que HTML pour personnaliser et gérer des documents du Web

...trompeuses

un méta-langage et non un langage de marquage

sans liste d'éléments prédéfinis :• tout élément possible• utilisation optionnelle d'une DTD (Document

Type Definition) ou d'un schéma contrôle possible de la structure logique du

document

écrit en SGML

De nouveaux enjeux

Edition collaborative, Diffusion ciblée, Personnalisation, Adaptation Échange de données Partage de ressources, …

Les documents

Des gisements d'information (veille, analyse, …),

En énorme quantité (Web, mises en ligne,…)

Hétérogénéité des origines, des logiciels utilisés (Word, LateX, ps, pdf, numérisé,…)

Quels traitements ?

Recherche d’information (pb de la lecture séquentielle),

Filtrage, Tri, Transformation, mise à jour, Traitements complexes (traitements

conditionnels, extraction de données, changements simultanés dans plusieurs fichiers, …)

Prise en compte d’Unicode Codage sur deux octets. Comment écrire du XML en

unicode ? Rédaction d’un texte avec un jeu de

caractères puis conversion (Framemaker le gère automatiquement)

Insertion de références à des caractères Unicode (&#233 pour le é)

Unicode : à quoi sert-il ?

Actuellement, environ 137000 symboles issus d’au moins 24 alphabets internationaux (près de 20000 pour les idéogrammes du han (Chine), et 11000 pour les syllabes du hangul coréen).

Permet de représenter pratiquement toutes les langues de la planète

« The unicode standard » ISBN 0-201-48346-9 d’Addison-Wesley ou http://www.unicode.org

Unicode, quelques outils

"recode" http://www.gnu.org/directory/recode.html

"native2ascii" dans le java development kit : Converts a file with native-encoded characters (characters which are non-Latin 1 and non-Unicode) to

one with Unicode-encoded characters. dans le parser XML : RXP (option –c) (

http://www.cogsci.ed.ac.uk/~richard/rxp.html)

Les problèmes liés au Web Quantité d'informations "Infinie "  > Pb de recherche d'informations (pertinence, "Invisible Web", déterminisme, …)

> Comment retrouver ?

Structuration des informations

Certification des informations

Les problèmes liés au Web (suite)

Pérennité des informations

Adaptation à l'utilisateur

"Privacy", copyright, ...

Limites du protocole HTTP

Toujours de nouvelles normes

Le(s) "successeur(s)" d’HTML XML (Extensible Markup Language,

ou Langage Extensible de Balisage)

Comme HTML (Hypertext Markup Language) c'est un langage de balisage (markup), c'est-à-dire un langage qui présente de l'information encadrée par des balises.

Contrairement à HTML

HTML : un jeu limité de balises orientées présentation (titre, paragraphe, image, lien hypertexte, etc.)

XML est un métalangage, Permet d'inventer à volonté de nouvelles

balises pour isoler toutes les informations élémentaires (titre d'ouvrage, prix d'article, numéro de sécurité sociale, référence de pièce…), ou agrégats d'informations élémentaires, que peut contenir une page Web.