Saisie dynamique de XML

40
Saisie dynamique de XML Geoffroy Vallée et Ani Sedrakian

description

Saisie dynamique de XML. Geoffroy Vallée et Ani Sedrakian. Les langages de schéma de XML. DTD XML Schema. Saisie dynamique de XML. Objectifs: - PowerPoint PPT Presentation

Transcript of Saisie dynamique de XML

Page 1: Saisie dynamique de XML

Saisie dynamique de XML

Geoffroy Vallée

et

Ani Sedrakian

Page 2: Saisie dynamique de XML

Les langages de schéma de XML DTD

XML Schema

Page 3: Saisie dynamique de XML

Saisie dynamique de XMLSaisie dynamique de XML

Objectifs:

Le but de notre projet est de créer un programme permettant la saisie dynamique de XML, suivant un schéma précis. Pour le moment, nous n’utiliserons que des DTD pour décrire ces schémas (XML Schema n’étant pas encore finalisé).

Notre programme devra donc permettre à l’utilisateur de choisir une DTD, qui sirvira de supporte pour créer un environnement de saisie convivial et simple, qui simplifira le travail de toute personne souhaitant manipuler du XML (y compris les débutants).

Page 4: Saisie dynamique de XML

Les DTD

Page 5: Saisie dynamique de XML

DOCUMENT VALIDE

Obéir à une structure type prédéfini Document valide = bien formé + obéir à une structure type définie dans une DTD

<?xml version=‘1.0‘standalone=‘no‘?><!DOCTYPE achat.ordre SYSTEM “ao.dtd“><achat.ordre> <date>16 novembre 1999</date> <adresse> <nom>Jean</nom> <numéro>8</numéro> <rue>Boulevard de St Germain</rue> <ville>Paris</ville> <pays>FR</pays> <cp>75005</cp> </adresse> <article> <article> <numéro.produit>248</numéro.produit> <description>champagne,millésimé,1994</description> <quantité>3</quantité> <prix_unitaire>75</prix_unitaire> </article> <article> <numéro.produit>163</numéro.produit> <description>fromage,tartare</description> <quantité>2</quantité> <prix_unitaire>10.30</prix_unitaire> </article> </article></achat.ordre>

Page 6: Saisie dynamique de XML

DTD : interne ou externe d’un document

Les DTD sont une spécification de structure de document réutilisable La déclaration d ’une DTD se compose de sections « internes » ou « externes » Les sections conditionnelles Appel de la DTD dans le document XML

DTD interne

<?xml version=‘1.0‘ standalone=‘yes‘?><!DOCTYPE exemple [<!-- début de la DTD--> <!ELEMENT exemple (#PCDATA)><!--fin de la DTD-->] > <!--début de l’instence--><exemple>test</exemple><!--fin du document-->

DTD externe

<?xml version=‘1.0‘ standalone=‘no‘?><!DOCTYPE exemple SYSTEM”exemple.dtd”><!-- début del’instence--><exemple>test</exemple><!--fin du document-->

exemple.dtd<?xml version=‘1.0‘?> <!-- début de la DTD--> <!ELEMENT exemple (#PCDATA)>

<!--fin de la DTD-->

Page 7: Saisie dynamique de XML

CONTENU D’UNE DTDLes déclarations d’entités généralesLes déclarations d’entités paramètresLes déclarations de notionsLes déclarations d’élémentsLes déclarations de listes d’attributsLes commentaires

<!DOCTYPE test [<!ENTITY exemple “Ceci est un exemple”><!ELEMENT date (#PCDATA)> <!ATTLIST date format (ISO | EN-exp | FR-exp) #REQUIRED)>]<!--début de l’instance--><test> <p>&exemple</p> <date format=“ISO“>1999-11-16</date></test>

Page 8: Saisie dynamique de XML

Structure et hiérarchie des éléments (structure arbre) (I)

Fihier mon_rapport .xml

<?xml version=‘1.0’ standalone=‘no‘?><!DOTYPE rapport SYSTEM ‘/usr/loal/edit/xml/dtd/rapport.dtd’><rapport> <titre>Test</titre> ………………… <tableau></tableau></rapport>

Page 9: Saisie dynamique de XML

Structure et hiérarchie des éléments (structure arbre) (II)

FichierFichier rapport.dtdrapport.dtd <rapport><!ELEMENT rapport (titre,auteur+,chapitre+)> <titre>...</titre><!ELEMENT titre (#PCDATA)> <auteur> <!ELEMENT auteur (prénom+, nom)> <prénom>...</prénom><!ELEMENT prénom (#PCDATA)> <nom>...</nom><!ELEMENT nom (#PCDATA)> </auteur><!ELEMENT chapitre(tchap, intro?, sec1*)> <auteur> <!ATTLIST chapitre target ID #IMPLIED> <prénom>...</prénom><!ELEMENT sec1 (tsec,(p | sec2)*)> <nom>...</nom><!ATTLIST sec1 target ID #IMPLIED> </auteur><!ELEMENT sec2 (tsec,(p | sec3)*)> <chapitre><!ATTLIST sec2 target ID #IMPLIED> <tchap>...</tchap><!ELEMENT tsec (#PCDATA)> <intro>...</intro><!ELEMENT sec3 (tsec,p)> <sec1>...</sec1><!ATTLIST sec3 target ID #IMPLIED> ......................... <!ELEMENT p (#PCDATA | renvoi | tableau )*> </chapitre><!ATTLIST p target ID #IMPLIED> </rapport><!ELEMENT renvoi EMPTY> <!ATTLIST renvoi ref IDREF #REQUIRED><!ENTITY %tab SYSTEM ‘./tableau.dtd’ >%tab;

Hiérarchie

XML1.dtd

2.dtd

3.dtd

Page 10: Saisie dynamique de XML

FichierFichier tableau .dtdtableau .dtd

<!ELEMENT tableau (ligne) + ><!ELEMENT lingne (cell) + ><! ATTLIST ligne lignbr CDATA #IMPLIED> <!ELEMENT cell (#PCDATA)><! ATTLIST cell colnbr NMTOKEN #IMPLIED colspan NMTOKEN #IMPLIED>

Structure et hiérarchie des éléments (structure arbre) (III)

Page 11: Saisie dynamique de XML

RÉUTILISATION DES DIVERSES RESSOURCES DISPONIBLES ET LES INCONVÉNIENTS Réalisation des documents complexes est très simples Les conflits de noms sont les seules difficultés Le conflit apparaîtra lorsqu’une application (un navigateur) traitera le document

<?xml version’1.0’ standalone=‘no‘?><!DOCTYPE rapport [<!ELEMENT rapport ANY><!ENTITY % dc SYSTEM ’http://pur1.oclc.org/metadata/dublin-core.dtd’> <!ENTITY % basic SYSTEM ’http://foo.bar.org/XML/basic-text.dtd’> <!ENTITY % ad SYSTEM ’http://local/xml/adresses.dtd’> <!ENTITY % math SYSTEM ’http://www.w3.org/TR/REC-MathML/MathML.dtd’>%dc;%basic;%ad;%math;]<rapport>............... <fn><fn> <eq/><eq/> <apply><apply> <plus /> <plus /> <apply><apply> <power /><power /> <ci> x </ci><ci> x </ci> <cn> 2 </cn><cn> 2 </cn> </apply></apply> <cn> 4 </cn><cn> 4 </cn> </apply></apply> <cn> 0 </cn><cn> 0 </cn> </fn></fn> <fn id=‘note21‘>c ’est la représentation de l ’expression x2+4=0 </fn> </rapport>

Page 12: Saisie dynamique de XML

RESOUDRE CEPROBLÈME GRACE AUX DOMAINES NOMINAUX

Les conflits ne seraient pas apparus, si les auteurs n’importent pas de déclarations dans la DTD sans regarder ce qu’elles contiennent

Les domaines nominaux permettent lors de l’édition d’un document d’utiliser des noms garantis uniques

La déclaration d’un domaine nominal se fait à l’aide de l’attribut spécial xmlns:

<?xml version=“1.0”?><!DOCTYPE rapport SYSTEM “rapport.dtd”><rapport xmlns:math=“http://www.w3.org/TR/1998/REC-MathML-19980407.html” xmlns:bt=“http://foo.bar.org/xml/schemas/Basic-text.dtd> .............. <math:fn> <math:eq/> <math : apply> <math : plus/> <math : apply> <math : power/> <math :ci> x </math :ci> <math :cn> 2 </math :cn> </math:apply> <math :cn> 4 </math :cn> </math:apply> <math :cn> 0 </math :cn> </math:fn> <bt:fn bt:id=‘note21‘>commentaire</bt:fn> ..................</rapport>

Page 13: Saisie dynamique de XML

XML Schema

Page 14: Saisie dynamique de XML

XML Schema.XML Schema.

Introduction.

XML Schema est un langage de schéma , au même titre que les DTD sont le langage de schéma de SGML.

XML Schema est développé par le W3C, mais n’est pas finalisé.

Tout ce qui suit est basé sur la publication du XML Schema Working Group de mai 1999. Des changements pourront donc être apportés par la suite.

Rappel du rôle des schémas:

• Les schémas permettent de décrire la structure des informations.

• Les schémas permettent d’avoir un mécanisme de validation de texte.

Page 15: Saisie dynamique de XML

XML Schema.XML Schema.

Pourquoi XML Schema?

• Besoin de documents “structurés”. XML Schema permet donc de définir un ensemble de règles sur la structure et l’ensemble des informations contenues dans une instance d’un document XML

• Les DTD (Document Type Definition) ne sont pas des documents XML.

• Les DTD ne gèrent que de façon très limitée les types de données.

Page 16: Saisie dynamique de XML

XML Schema.XML Schema.

Comparaison avec le mécanisme des DTD:

• les DTD sont des documents SGML, alors que XML Schema sont des documents XML,

• les DTD sont “figées” par rapport à XML Schema : il est possible avec XML Schema de créer un schéma permettant de définir des éléments optionnels, qui ne seront pris en compte que s’ils sont correctement définis,

Syntaxe : les types de base.

XML Schema comporte un ensemble de types de données prédéfinis, dont voici les plus importants (qui sont des types XML):

string, boolean, real, binary, URI, decimal, integer, date, time, …etc.

Page 17: Saisie dynamique de XML

XML Schema.XML Schema.

Syntaxe : principes de base.

Les documents XML Schema sont des documents XML, ils peuvent donc utiliser des éléments et attributs XML pour exprimer la sémantique d’un schéma.

• Définition d’un type de donnée:

<datatype name=“myType”>…</datatype>

• Référence à un type de donnée:

<datatypeRef name=“myType”/>

• Définition d’un élément:

<elementType name=“myElement”>…</elementType>

Page 18: Saisie dynamique de XML

XML Schema.XML Schema.

•Référence à un élément:

<elementTypeRef name=“myElement” minOccur=“n” maxOccur=“m”>

• Référence (“heritage”) d’un type de base:

Il est possible, pour créer un nouveau type de donnée, de faire appel à un type de base qui servira de modèle.

La syntaxe est la suivante:

<basetype name=“nameBaseType”/>

•Définition d’un archétype:

Les archétypes permettent de définir des modèles complexes.

<archetype name=“myArchetype”>…</archetype>

Exemple : définition d’une adresse à l’aide d’un archétype:

Page 19: Saisie dynamique de XML

<archetype name=“adresse” model=“refinable”>

<sequence>

<elementTypeRef name=“nom” minOccur=“1” maxOccur=“1”/>

<elementTypeRef name=“prénom” minOccur=“1” maxOccur=“1”/>

<elementTypeRef name=“rue” minOccur=“1” maxOccur=“2”/>

<elementTypeRef name=“ville” minOccur=“1” maxOccur=“1”/>

<elementTypeRef name=“code postal” minOccur=“1” maxOccur=“1”/>

</sequence>

</archetype>

On remarquera la possibilité d’exprimer des contraintes très précises (nombre d’occurrences) directement dans le modèle (chose impossible à faire avec les DTD).

XML Schema.XML Schema.

Page 20: Saisie dynamique de XML

•Définition de sequence:

On a vu dans l’exemple précédent qu’il est possible de définir une suite d’éléments (ceci est équivalent au caractère “,” séparant 2 éléments dans la syntaxe DTD).

<sequence>…</sequence>

• Déclaration des attributs:

<attribute name=“myAttribute”>…</attribute>

•Définition d’un groupe d’attribut:<attrGroup name=“myAttrGroup”>

<attribute …>…</attribute></attrGroup>

XML Schema.XML Schema.

Page 21: Saisie dynamique de XML

XML Schema.XML Schema.

Il est également possible d’exprimer des contraintes sur la forme des éléments et des types manipulés:

• les représentations lexicales : il est possible avec XML Schema de définir plusieurs représentations pour un même élément.

On peut, par exemple, définir un types “code postal” qui accépterait les codes postaux composés de 5 digits, et ceux de 5 digits suivis de 4 autres digits. Cela donnerait:

<datatype name=“code postal”>

<basetype name=“string”>

<lexicalRepresentation>

<lexical>99999</lexical>

<lexical>99999-9999</lexical>

</lexicalRepresentation>

</datatype>

Page 22: Saisie dynamique de XML

XML Schema.XML Schema.

On peut également définir un type “monnaie”, composé à partir du type “décimal”, mais ne comportant qu’au maximum 8 digits , dont 2 pour la partie décimale:

<datatype name=“monnaie”>

<basetype name=“decimal”>

<precision>8</precision>

<scale>2</scale>

</datatype>

Autre exemple:<datatype name=“i4”>

<basetype name=“integer”>

<minInclusive>214783648</minInclusive>

<maxExclusive>-214783648</maxExclusive>

</datatype>

Page 23: Saisie dynamique de XML

XML Schema.XML Schema.

CONCLUSION.

Avantages de XML Schema:

• XML Schema bien plus puissant que les DTD,

• offre une grande diversité de types de données (booléens, entiers, réels, dates, …),

• possiblité de créer de nouveaux types et des agrégats de types (archétypes), des types complexes ou “hérités”,

• possiblité de réutiliser les schémas existants (la création de nouveaux schémas est alors plus rapide),

• document XML Schema = document XML. Tous les outils et les techniques XML peuvent donc être utilisés (y compris les DTD),

Page 24: Saisie dynamique de XML

XML Schema.XML Schema.

• XML Schema offre de grandes perspectives dans toutes les applications utilisant fortement des données structurées prédéfinies (BD, e-commerce,… etc).

Les défauts :

Pas de réels défauts, mais un certain nombre de faiblesses par rapport aux DTD :

• les DTD sont très répandues : existent en grand nombre et largement utilisée,

• les DTD disposent déjà d’un large éventail d’outils (outils SGML très répandus),

• nécessité de créer des schémas en XML Schema qui existent déjà en DTD.

Page 25: Saisie dynamique de XML

Ce qui existe déjà

Page 26: Saisie dynamique de XML

Les logiciels déjà existants.Les logiciels déjà existants.

Un certain nombre de logiciels sont déjà disponible et proposent quelques outils.

Nous verrons plus particulièrement :

• Xeena d’IBM,

• XED,

• XML Spy d’Unicode,

Page 27: Saisie dynamique de XML

Toutes les informations sont disponible à http://www.alphaworks.ibm.com/aw.nsf/tec...BE31A4D650B7AC678825672C001398BLa dernière version au 18 octobre 1999 est la version 1.0.3b.

Déscription:Xeena est un éditeur de XML graphique, écrit en Java par le laboratoire de rechercher d'IBM de Haifa, pour éditer des documents XML valides suivant une DTD valide.L'éditeur prend une DTD donnée, et construit automatiquement une grille de saisie adéquate. L'utilisateur peut donc créer, modifier ouvisualiser une document XML valide sous la forme d'un arbre. Il est à noter que cette visualisation nécessite un apprentissage afin quel'utilisateur saisisse bien son fonctionnement.

XeenaXeena

Page 28: Saisie dynamique de XML

XeenaXeena

Certaines personnes lui reproche un aspect complexe (arbre).

Page 29: Saisie dynamique de XML

XEDXED

Toutes les informations sont disponible à :http://www.ltg.ed.ac.uk/~ht/xed.html

Déscription:Ce programme est un éditeur d'instance de documents XML, crée par Henry S. Thompson, HCRC Language Technology Group,University of Edinburgh.Cet éditeur permet de saisir des documents XML, de vérifier s'ils sont bien formés. Il permet également de lire une DTD, et propose ensuite une structure de saisie facilitant le travail de l'utilisateur. XED est basé sur LT XML toolkit, et utilise Python et Tk afin de permettre une portabilité maximum.

XED est disponible pour diverses plateforme de travail: Windows 95/NT, Solaris 2.5, FreeBSD, Linux.

Page 30: Saisie dynamique de XML

Avis personnel:L'utilisation de XED n'est pas a priori la plus intuitive. En particulier, pour se rapprocher de notre projet, la saisie d'un document XMLsuivant une DTD n'est pas une tâche rendue simple.

XEDXED

Page 31: Saisie dynamique de XML

De plus, il est indispensable de connaître parfaitement XML et les DTD pour utiliser XED. La simplicité d’emploit et la convivialité ne sont donc pas des atouts de XED.Dernier défaut : il permet d’utiliser le schéma d’une DTD, mais aucun test de validité n’est effectué.

XEDXED

Page 32: Saisie dynamique de XML

XML SpyXML Spy

Ce programme est développé par Unicode. Tous les renseignements sont disponibles à:

http://www.wmlspy.com/

Présentation:

XML Spy permet de:

• créer une DTD et de la valider,

• créer un document XML (sans se baser sur une DTD donnée), en lui créant un schéma propre. XML Spy permet ensuite de vérifier que le document est bien formé et valide.

Page 33: Saisie dynamique de XML

XML SpyXML Spy

Page 34: Saisie dynamique de XML

Conclusion:

Même si XML Spy est limité (impossible de créer un document suivant une DTD), il offre une gamme d’outils conviviaux et agréables.

XML SpyXML Spy

Page 35: Saisie dynamique de XML

eXceloneXcelon

Object Design offre, dans sa base de donnée objet basée sur le XML, une panoplie d’outils XML.

En ce qui concerne la saisie dynamique, un composant appelée “eXcelon studio” permettrait de saisir des documents XML suivant sur un schéma (DTD?), de façon simple et rapide à l’aide d’un outils visuel.

Toutes les informations sont disponible sur :

http://www.odi.com/excelon/main.htm

Page 36: Saisie dynamique de XML

Notre proposition

Page 37: Saisie dynamique de XML

Saisie dynamique de XMLSaisie dynamique de XML

Principe de fonctionnement:

Choix d’une DTD

Analyse de la DTD

Formation des éléments de saisie

Choix de l’élément à modifier

Analyse des possibilité de saisie

Saisie

Fin de la saisie?

Saisise valide

Document valide?non

oui

oui

non

non oui

Page 38: Saisie dynamique de XML

Remarque : une vérification de la saisie étant effectuée pour chaque élément, il suffira à la fin de vérifier que l’ensemble des éléments ont été saisit.

Ce qui est fait:

Notre programme se présente sous la forme d’une applet.

Pour le moment, seule la lecture d’une DTD simple, avec mise en place des éléments de saisie, a été crée.

Prenons l’exemple de la DTD simple suivante:<!ELEMENT lettre (date , nom)><!ELEMENT date (#PCDATA)><!ELEMENT nom (#PCDATA)>

Saisie dynamique de XMLSaisie dynamique de XML

Page 39: Saisie dynamique de XML

Saisie dynamique de XMLSaisie dynamique de XML

Cela nous donne:

Page 40: Saisie dynamique de XML

Ce qui sera bientôt fait :

• validation de la saisie,

• validation du document,

• extension des éléments des DTD traités,

• extension à XML Schema.

Pour finir :

Toutes les informations et applets sont disponibles sur notre site WEB :

http://www.chez.com/xmlmisi

Une extension du programme à XML Schema est à l’étude (tandis que la version DTD est laissée de côté pour le moment).

Saisie dynamique de XMLSaisie dynamique de XML