Implémentation dun parseur validant pour YML/DML Travail de Master Présentation finale Catherine...
-
Upload
zacharie-leloup -
Category
Documents
-
view
105 -
download
0
Transcript of Implémentation dun parseur validant pour YML/DML Travail de Master Présentation finale Catherine...
![Page 1: Implémentation dun parseur validant pour YML/DML Travail de Master Présentation finale Catherine Pugin 21 avril 2005 catherine.pugin@unifr.ch.](https://reader036.fdocuments.net/reader036/viewer/2022062622/551d9dba497959293b8de0e7/html5/thumbnails/1.jpg)
Implémentation d’un parseur validant pour YML/DML
Travail de MasterPrésentation finale
Catherine Pugin21 avril 2005
![Page 2: Implémentation dun parseur validant pour YML/DML Travail de Master Présentation finale Catherine Pugin 21 avril 2005 catherine.pugin@unifr.ch.](https://reader036.fdocuments.net/reader036/viewer/2022062622/551d9dba497959293b8de0e7/html5/thumbnails/2.jpg)
2
Plan
Introduction générale Rappel sur les langages YML et DML Aspects théoriques de la validation Conception du parseur Tests et gestion des erreurs Conclusion générale
![Page 3: Implémentation dun parseur validant pour YML/DML Travail de Master Présentation finale Catherine Pugin 21 avril 2005 catherine.pugin@unifr.ch.](https://reader036.fdocuments.net/reader036/viewer/2022062622/551d9dba497959293b8de0e7/html5/thumbnails/3.jpg)
3
Introduction générale (1)
Projet YML+ Révision des langages de la famille XML.
![Page 4: Implémentation dun parseur validant pour YML/DML Travail de Master Présentation finale Catherine Pugin 21 avril 2005 catherine.pugin@unifr.ch.](https://reader036.fdocuments.net/reader036/viewer/2022062622/551d9dba497959293b8de0e7/html5/thumbnails/4.jpg)
4
Introduction générale (2) Situation du projet
Révision du langage XML et des langages de modélisation (DTD / XML Schema).
Création du langage YML et du langage de modélisation DML.
Adaptation du parseur Xerces pour tester la conformité des documents.
Implémentation d’un parseur conformant spécifique aux langages YML et DML.
Implémentation du parseur validant spécifique.
![Page 5: Implémentation dun parseur validant pour YML/DML Travail de Master Présentation finale Catherine Pugin 21 avril 2005 catherine.pugin@unifr.ch.](https://reader036.fdocuments.net/reader036/viewer/2022062622/551d9dba497959293b8de0e7/html5/thumbnails/5.jpg)
5
Le langage YML (1) Critiques adressées à XML
Nœuds textes• <element>
du texte sur deux lignes
<element/> Balises
• Asymétrie : <element> <element/>• Balises complexes :
• Entité : é• Commentaire : <!-- commentaire -->
![Page 6: Implémentation dun parseur validant pour YML/DML Travail de Master Présentation finale Catherine Pugin 21 avril 2005 catherine.pugin@unifr.ch.](https://reader036.fdocuments.net/reader036/viewer/2022062622/551d9dba497959293b8de0e7/html5/thumbnails/6.jpg)
6
Le langage YML (2) Solutions apportées par YML
Balises symétriques• <=element> <element=> / <=element=>• <* commentaire *>• {entité}
Nœuds textes clairs• <=element>
[un texte][un texte]#
<element=> Relation entre instance et modèle simplifiée
• <=yml:dml uri="modele.dml"=>
![Page 7: Implémentation dun parseur validant pour YML/DML Travail de Master Présentation finale Catherine Pugin 21 avril 2005 catherine.pugin@unifr.ch.](https://reader036.fdocuments.net/reader036/viewer/2022062622/551d9dba497959293b8de0e7/html5/thumbnails/7.jpg)
7
Le langage DML (1)
Critique des DTD Syntaxe non-XML. Aucune possibilité de typage. Mauvaise définition du contenu mixte.
Critique de XML Schema Manque de simplicité.
![Page 8: Implémentation dun parseur validant pour YML/DML Travail de Master Présentation finale Catherine Pugin 21 avril 2005 catherine.pugin@unifr.ch.](https://reader036.fdocuments.net/reader036/viewer/2022062622/551d9dba497959293b8de0e7/html5/thumbnails/8.jpg)
8
Le langage DML (2) Objectifs du langage DML
Syntaxe simple, basée sur YML. Meilleure définition du contenu mixte Minimum de types prédéfinis
• Un seul type prédéfini : string• Possibilité de définir ses propres types.
Favoriser la modularité. Écrire un méta-modèle, un DML auto-
descriptif.
![Page 9: Implémentation dun parseur validant pour YML/DML Travail de Master Présentation finale Catherine Pugin 21 avril 2005 catherine.pugin@unifr.ch.](https://reader036.fdocuments.net/reader036/viewer/2022062622/551d9dba497959293b8de0e7/html5/thumbnails/9.jpg)
9
Un exemple simple (1)movie.dml
<* déclarations préliminaires *>
<=yml:decl version="1.0" encoding="UTF-8"=> <=yml:dml uri="ymldml.dml"=> <=import prefix="yml" uri="yml.dml"=> <=import prefix="per" uri="person.dml"=>
<* racine du document *>
<=root> <=struct> <=structref ref="yml:prolog"=> <=eltref name="movie" ref="movie-ref"=> <struct=><root=>
<* définitions *>
<=elt name="movie-ref" occurs="many"> <=struct> <=elt name="title"> <=text=> <elt=> <=eltref name="director" ref="per:person"=> <struct=><elt=><=entity name="eacute" value="é"=>
![Page 10: Implémentation dun parseur validant pour YML/DML Travail de Master Présentation finale Catherine Pugin 21 avril 2005 catherine.pugin@unifr.ch.](https://reader036.fdocuments.net/reader036/viewer/2022062622/551d9dba497959293b8de0e7/html5/thumbnails/10.jpg)
10
Un exemple simple (2)person.dml
<=yml:decl version="1.0" encoding="UTF-8"=><=yml:dml uri="ymldml.dml"=> <=import prefix="yml" uri="yml.dml"=>
<=elt name="person"> <=attrs> <=attr name="id" type="int" use="required"=> <attrs=> <=struct> <=elt name="firstName"> <=text=> <elt=> <=elt name="familyName"> <=text=> <elt=> <struct=><elt=>
<=type name="int" pattern=" [0-9] "=>
![Page 11: Implémentation dun parseur validant pour YML/DML Travail de Master Présentation finale Catherine Pugin 21 avril 2005 catherine.pugin@unifr.ch.](https://reader036.fdocuments.net/reader036/viewer/2022062622/551d9dba497959293b8de0e7/html5/thumbnails/11.jpg)
11
Un exemple simple (3)movie.yml
<=yml:decl version="1.0" encoding="UTF-8"=>
<* définition de l'espace de nommage du modèle *> <=yml:dml uri="movie.dml"=> <=yml:dml prefix="person" uri="person.dml"=>
<=movie> <=title>[Star Wars]<title=> <=director person:id="1"> <=person:firstName>[Georges]<person:firstName=> <=person:familyName>[Lucas]<person:familyName=> <director=> <movie=>
<=movie> <=title>[Indiana Jones]<title=> <=director person:id="2"> <=person:firstName>[Steven]<person:firstName=> <=person:familyName>[Spielberg]<person:familyName=> <director=> <movie=>
![Page 12: Implémentation dun parseur validant pour YML/DML Travail de Master Présentation finale Catherine Pugin 21 avril 2005 catherine.pugin@unifr.ch.](https://reader036.fdocuments.net/reader036/viewer/2022062622/551d9dba497959293b8de0e7/html5/thumbnails/12.jpg)
12
La validation (1) Aspects théoriques
DML = langage formel. Les lettres de son alphabet sont les valeurs
des attributs name des déclarations d’élément.<=elt name="movie"=>
Un document DML peut donc être représenté par une grammaire d’arbre et à partir de là par un automate d’arbre.
![Page 13: Implémentation dun parseur validant pour YML/DML Travail de Master Présentation finale Catherine Pugin 21 avril 2005 catherine.pugin@unifr.ch.](https://reader036.fdocuments.net/reader036/viewer/2022062622/551d9dba497959293b8de0e7/html5/thumbnails/13.jpg)
13
La validation (2) L’implémentation des automates d’arbres est
relativement complexe. On utilise donc à la place une hiérarchie
d’automates déterministes à états finis. Un automate est construit pour chaque
déclaration d’élément <=elt=> et pour la déclaration de la racine <=root=>.
Il représente le sous-arbre de la déclaration qui s’étend jusqu’aux premières déclarations d’élément.
![Page 14: Implémentation dun parseur validant pour YML/DML Travail de Master Présentation finale Catherine Pugin 21 avril 2005 catherine.pugin@unifr.ch.](https://reader036.fdocuments.net/reader036/viewer/2022062622/551d9dba497959293b8de0e7/html5/thumbnails/14.jpg)
14
La validation (3) Un automate est décrit par
<Q, Σ, δ, q0, F>
<=elt name="element"> <=struct> <=elt name="child-1"=> <=elt name="child-2"=> <struct=><elt=>
Q = {0,1,2}
Σ = {child-1, child-2}
δ = 0 x child-1 -> 1 ; 1 x child-2 -> 2
q0 = 0;
F = {2}
0 1
child-1
2
child-2
![Page 15: Implémentation dun parseur validant pour YML/DML Travail de Master Présentation finale Catherine Pugin 21 avril 2005 catherine.pugin@unifr.ch.](https://reader036.fdocuments.net/reader036/viewer/2022062622/551d9dba497959293b8de0e7/html5/thumbnails/15.jpg)
15
La validation (4)
L’instance YML est le mot qui doit être accepté par l’ensemble des automates.
Chaque automate accepte un sous-mot, une partie de l’instance.
Quand tous les sous-mots sont acceptés, l’instance est validée.
![Page 16: Implémentation dun parseur validant pour YML/DML Travail de Master Présentation finale Catherine Pugin 21 avril 2005 catherine.pugin@unifr.ch.](https://reader036.fdocuments.net/reader036/viewer/2022062622/551d9dba497959293b8de0e7/html5/thumbnails/16.jpg)
16
Conception Informations nécessaires
Quelles sont les informations utiles dans un document DML ? Séquence et occurrence des éléments Attributs associés à chaque élément Types définis Entités définies Importations
![Page 17: Implémentation dun parseur validant pour YML/DML Travail de Master Présentation finale Catherine Pugin 21 avril 2005 catherine.pugin@unifr.ch.](https://reader036.fdocuments.net/reader036/viewer/2022062622/551d9dba497959293b8de0e7/html5/thumbnails/17.jpg)
17
ConceptionArchitecture générale
Document
YMLParseur conformant
Modèle DML principal
Trois phases de validation
Parseur conformant
![Page 18: Implémentation dun parseur validant pour YML/DML Travail de Master Présentation finale Catherine Pugin 21 avril 2005 catherine.pugin@unifr.ch.](https://reader036.fdocuments.net/reader036/viewer/2022062622/551d9dba497959293b8de0e7/html5/thumbnails/18.jpg)
18
ConceptionValidation en trois phases
Traitement du document DML Création des automates Validation de l’instance YML
![Page 19: Implémentation dun parseur validant pour YML/DML Travail de Master Présentation finale Catherine Pugin 21 avril 2005 catherine.pugin@unifr.ch.](https://reader036.fdocuments.net/reader036/viewer/2022062622/551d9dba497959293b8de0e7/html5/thumbnails/19.jpg)
19
ConceptionPhase 1 : Traitement du DML
But : récupération des informations contenues dans les documents importés. Référencement d’élément, de structure,
d’attributs. Définitions de types, d’entités.
Gestion des préfixes. Construction d’un arbre complet à partir
de la racine root.
![Page 20: Implémentation dun parseur validant pour YML/DML Travail de Master Présentation finale Catherine Pugin 21 avril 2005 catherine.pugin@unifr.ch.](https://reader036.fdocuments.net/reader036/viewer/2022062622/551d9dba497959293b8de0e7/html5/thumbnails/20.jpg)
20
Traitement du DMLCorrespondance entre préfixes (1)
Les documents importés dans le modèle principal doivent être définis comme espaces de nommage dans l’instance.
Instance YML
<=yml:dml uri="movie.dml"=>
<=yml:dml prefix="person" uri="person.dml"=>
Modèle DML principal
<=import prefix="per" uri="person.dml"=>
![Page 21: Implémentation dun parseur validant pour YML/DML Travail de Master Présentation finale Catherine Pugin 21 avril 2005 catherine.pugin@unifr.ch.](https://reader036.fdocuments.net/reader036/viewer/2022062622/551d9dba497959293b8de0e7/html5/thumbnails/21.jpg)
21
Traitement du DMLCorrespondance entre préfixes (2)
Les préfixes ne sont pas obligatoirement les mêmes.
Il faut garder une table de correspondance entre les préfixes.
Préfixe YML Préfixe DML URI
person per person.dml
![Page 22: Implémentation dun parseur validant pour YML/DML Travail de Master Présentation finale Catherine Pugin 21 avril 2005 catherine.pugin@unifr.ch.](https://reader036.fdocuments.net/reader036/viewer/2022062622/551d9dba497959293b8de0e7/html5/thumbnails/22.jpg)
22
Traitement du DMLRéférencement Les référencements concernent :
Les structures Les listes d’attributs Les éléments
Quand on rencontre une déclaration de type <=structref=>, <=attrsref=> ou <=eltref=>, il faut la remplacer par la définition correspondante.
La correspondance se fait entre l’attribut ref de la déclaration appelante et l’attribut name de la définition.
![Page 23: Implémentation dun parseur validant pour YML/DML Travail de Master Présentation finale Catherine Pugin 21 avril 2005 catherine.pugin@unifr.ch.](https://reader036.fdocuments.net/reader036/viewer/2022062622/551d9dba497959293b8de0e7/html5/thumbnails/23.jpg)
23
Traitement du DMLRéférencement
<=eltref name="director" ref="per:person"=>
<=elt name="person">
per:firstName per:familyName
firstName familyName
id
per:id
<=elt name="director">
![Page 24: Implémentation dun parseur validant pour YML/DML Travail de Master Présentation finale Catherine Pugin 21 avril 2005 catherine.pugin@unifr.ch.](https://reader036.fdocuments.net/reader036/viewer/2022062622/551d9dba497959293b8de0e7/html5/thumbnails/24.jpg)
24
<=root> <=struct> <=structref ref="yml:prolog"=> <=elt name="movie"> <=struct> <=elt name="title"><=text=><elt=> <=elt name="director"> <=attrs> <=attr name="per:id" type="int" use="required"=> <attrs=> <=struct> <=elt name="per:firstName"><=text=><elt=> <=elt name="per:familyName"><=text=><elt=> <struct=> <elt=> <struct=> <elt=> <struct=><root=>
Traitement du DMLRésultat
<=root> <=struct> <=structref ref="yml:prolog"=> <=eltref name="movie" ref="movie-ref"=><struct=><root=>
<=root> <=struct> <=structref ref="yml:prolog"=> <=elt name="movie"> <=struct> <=elt name="title"><=text=><elt=> <=eltref name="director" ref="per:person"=> <struct=> <elt=> <struct=><root=>
![Page 25: Implémentation dun parseur validant pour YML/DML Travail de Master Présentation finale Catherine Pugin 21 avril 2005 catherine.pugin@unifr.ch.](https://reader036.fdocuments.net/reader036/viewer/2022062622/551d9dba497959293b8de0e7/html5/thumbnails/25.jpg)
25
Traitement du DMLTypes
<=attrs>
<=attr name="id" type="int" use="required"=>
<=attr name="id2" type="yml:string" use="implied"=>
<attrs=>
…
<=type name="int" pattern="[0-9]"=>
Name Pattern
int [0-9]
yml:string \w*
![Page 26: Implémentation dun parseur validant pour YML/DML Travail de Master Présentation finale Catherine Pugin 21 avril 2005 catherine.pugin@unifr.ch.](https://reader036.fdocuments.net/reader036/viewer/2022062622/551d9dba497959293b8de0e7/html5/thumbnails/26.jpg)
26
ConceptionPhase 2 : Création des automates
But : représentation de la séquentialité et de l’occurrence des déclarations d’éléments.
Un automate est construit pour chaque déclaration <=elt=>. Il représente le sous-arbre de l’élément, qui s’étend jusqu’aux premières déclarations d’élément.
Construction récursive des automates.
![Page 27: Implémentation dun parseur validant pour YML/DML Travail de Master Présentation finale Catherine Pugin 21 avril 2005 catherine.pugin@unifr.ch.](https://reader036.fdocuments.net/reader036/viewer/2022062622/551d9dba497959293b8de0e7/html5/thumbnails/27.jpg)
27
Création des automatesAutomates simples
4 automates simples pour chacune des 4 occurrences (once, optional, many, free).
0 1
0 1
0 1
0 1
ONCE OPTIONAL
MANY FREE
![Page 28: Implémentation dun parseur validant pour YML/DML Travail de Master Présentation finale Catherine Pugin 21 avril 2005 catherine.pugin@unifr.ch.](https://reader036.fdocuments.net/reader036/viewer/2022062622/551d9dba497959293b8de0e7/html5/thumbnails/28.jpg)
28
Création des automatesIllustration (1)
<=elt name="element"=>
<=elt name="fils2"=> <=elt name="fils3"=>
<=choice=>
<=struct occurs="many"=>
<=elt name="fils1"=>
![Page 29: Implémentation dun parseur validant pour YML/DML Travail de Master Présentation finale Catherine Pugin 21 avril 2005 catherine.pugin@unifr.ch.](https://reader036.fdocuments.net/reader036/viewer/2022062622/551d9dba497959293b8de0e7/html5/thumbnails/29.jpg)
29
Création des automatesIllustration (2)
0 1
fils1
![Page 30: Implémentation dun parseur validant pour YML/DML Travail de Master Présentation finale Catherine Pugin 21 avril 2005 catherine.pugin@unifr.ch.](https://reader036.fdocuments.net/reader036/viewer/2022062622/551d9dba497959293b8de0e7/html5/thumbnails/30.jpg)
30
Création des automatesIllustration (3)
<=elt name="element"=>
<=elt name="fils2"=> <=elt name="fils3"=>
<=choice=>
<=struct occurs="many"=>
<=elt name="fils1"=>
![Page 31: Implémentation dun parseur validant pour YML/DML Travail de Master Présentation finale Catherine Pugin 21 avril 2005 catherine.pugin@unifr.ch.](https://reader036.fdocuments.net/reader036/viewer/2022062622/551d9dba497959293b8de0e7/html5/thumbnails/31.jpg)
31
Création des automatesIllustration (4)
2 3
fils2
4 5
fils3
![Page 32: Implémentation dun parseur validant pour YML/DML Travail de Master Présentation finale Catherine Pugin 21 avril 2005 catherine.pugin@unifr.ch.](https://reader036.fdocuments.net/reader036/viewer/2022062622/551d9dba497959293b8de0e7/html5/thumbnails/32.jpg)
32
Création des automatesIllustration (5)
<=elt name="element"=>
<=elt name="fils2"=> <=elt name="fils3"=>
<=choice=>
<=struct occurs="many"=>
<=elt name="fils1"=>
![Page 33: Implémentation dun parseur validant pour YML/DML Travail de Master Présentation finale Catherine Pugin 21 avril 2005 catherine.pugin@unifr.ch.](https://reader036.fdocuments.net/reader036/viewer/2022062622/551d9dba497959293b8de0e7/html5/thumbnails/33.jpg)
33
Création des automatesIllustration (6)
2 3
fils2
4 5
fils3
6
![Page 34: Implémentation dun parseur validant pour YML/DML Travail de Master Présentation finale Catherine Pugin 21 avril 2005 catherine.pugin@unifr.ch.](https://reader036.fdocuments.net/reader036/viewer/2022062622/551d9dba497959293b8de0e7/html5/thumbnails/34.jpg)
34
Création des automatesIllustration (7)
<=elt name="element"=>
<=elt name="fils2"=> <=elt name="fils3"=>
<=choice=>
<=struct occurs="many"=>
<=elt name="fils1"=>
![Page 35: Implémentation dun parseur validant pour YML/DML Travail de Master Présentation finale Catherine Pugin 21 avril 2005 catherine.pugin@unifr.ch.](https://reader036.fdocuments.net/reader036/viewer/2022062622/551d9dba497959293b8de0e7/html5/thumbnails/35.jpg)
35
Création des automatesIllustration (8)
3fils2
5fils3
0 1
fils1
null
null
6
![Page 36: Implémentation dun parseur validant pour YML/DML Travail de Master Présentation finale Catherine Pugin 21 avril 2005 catherine.pugin@unifr.ch.](https://reader036.fdocuments.net/reader036/viewer/2022062622/551d9dba497959293b8de0e7/html5/thumbnails/36.jpg)
36
Création des automatesApplication à l’exemple
<=elt name="director"> <=attrs> <=attr name="per:id" type="int" use="required"=> <attrs=> <=struct> <=elt name="per:firstName"><=text=><elt=> <=elt name="per:familyName"><=text=><elt=> <struct=><elt=>
0 1
per:firstName
3
per:familyName
0textNode = true
![Page 37: Implémentation dun parseur validant pour YML/DML Travail de Master Présentation finale Catherine Pugin 21 avril 2005 catherine.pugin@unifr.ch.](https://reader036.fdocuments.net/reader036/viewer/2022062622/551d9dba497959293b8de0e7/html5/thumbnails/37.jpg)
37
Création des automates
Les automates sont stockés dans une table avec : Le nom de l’élément qu’ils représentent. Le nom du père de cet élément.
0
Nom de l’élément Nom du père Automate
per:firstName director
![Page 38: Implémentation dun parseur validant pour YML/DML Travail de Master Présentation finale Catherine Pugin 21 avril 2005 catherine.pugin@unifr.ch.](https://reader036.fdocuments.net/reader036/viewer/2022062622/551d9dba497959293b8de0e7/html5/thumbnails/38.jpg)
38
ConceptionRécupération des données (1)
Les attributs sont également stockés dans une table.
Nom de l’attribut
Nom de l’élément
Nom de l’élément père
Type Pattern Utilisation
per:id director movie int [0-9] required
<=attrs> <=attr name="per:id" type="int" use="required"=><attrs=>
![Page 39: Implémentation dun parseur validant pour YML/DML Travail de Master Présentation finale Catherine Pugin 21 avril 2005 catherine.pugin@unifr.ch.](https://reader036.fdocuments.net/reader036/viewer/2022062622/551d9dba497959293b8de0e7/html5/thumbnails/39.jpg)
39
ConceptionRécupération des données (2)
Les entités définies dans le DML principal sont stockées dans une table.
<=entity name="eacute" value="é"=>
Nom de l’entité Valeur
eacute é
![Page 40: Implémentation dun parseur validant pour YML/DML Travail de Master Présentation finale Catherine Pugin 21 avril 2005 catherine.pugin@unifr.ch.](https://reader036.fdocuments.net/reader036/viewer/2022062622/551d9dba497959293b8de0e7/html5/thumbnails/40.jpg)
40
ConceptionRécupération des données (3)
Les nœuds textes peuvent être typés. On stocke dans une table l’élément père du
nœud texte et le type.
Nom de l’élément Type du texte
element text-type
<=elt name="element"> <=text type="text-type"=><elt=>
![Page 41: Implémentation dun parseur validant pour YML/DML Travail de Master Présentation finale Catherine Pugin 21 avril 2005 catherine.pugin@unifr.ch.](https://reader036.fdocuments.net/reader036/viewer/2022062622/551d9dba497959293b8de0e7/html5/thumbnails/41.jpg)
41
ConceptionPhase 3 : Validation
Pour la validation de l’instance, nous disposons : des automates des différentes tables
• Attributs• Entités• Correspondance entre les préfixes• Nœuds textes
![Page 42: Implémentation dun parseur validant pour YML/DML Travail de Master Présentation finale Catherine Pugin 21 avril 2005 catherine.pugin@unifr.ch.](https://reader036.fdocuments.net/reader036/viewer/2022062622/551d9dba497959293b8de0e7/html5/thumbnails/42.jpg)
42
Validation Généralités
Le parcours de l’arbre YML se fait de manière top-down.
Pour chaque noeud : Choix de l’automate correspondant. Itération sur les fils du nœud. Modification du préfixe si nécessaire. Validation de l’élément. Validation des attributs.
![Page 43: Implémentation dun parseur validant pour YML/DML Travail de Master Présentation finale Catherine Pugin 21 avril 2005 catherine.pugin@unifr.ch.](https://reader036.fdocuments.net/reader036/viewer/2022062622/551d9dba497959293b8de0e7/html5/thumbnails/43.jpg)
43
Validation Illustration (1)
Choix de l’automate : état courant = 0.
<=movie> <=title>[Star Wars]<title=> <=director person:id="1"> <=person:firstName>[Georges]<person:firstName=> <=person:familyName>[Lucas]<person:familyName=> <director=> <movie=>
0 1
title
3
director
![Page 44: Implémentation dun parseur validant pour YML/DML Travail de Master Présentation finale Catherine Pugin 21 avril 2005 catherine.pugin@unifr.ch.](https://reader036.fdocuments.net/reader036/viewer/2022062622/551d9dba497959293b8de0e7/html5/thumbnails/44.jpg)
44
Validation Illustration (2)
Itération sur les nœuds fils. L’élément title est accepté par l’automate.
<=movie> <=title>[Star Wars]<title=> <=director person:id="1"> <=person:firstName>[Georges]<person:firstName=> <=person:familyName>[Lucas]<person:familyName=> <director=> <movie=>
0 1
title
3
director
![Page 45: Implémentation dun parseur validant pour YML/DML Travail de Master Présentation finale Catherine Pugin 21 avril 2005 catherine.pugin@unifr.ch.](https://reader036.fdocuments.net/reader036/viewer/2022062622/551d9dba497959293b8de0e7/html5/thumbnails/45.jpg)
45
Validation Illustration (3)
L’élément director est accepté par l’automate.
<=movie> <=title>[Star Wars]<title=> <=director person:id="1"> <=person:firstName>[Georges]<person:firstName=> <=person:familyName>[Lucas]<person:familyName=> <director=> <movie=>
0 1
title
3
director
![Page 46: Implémentation dun parseur validant pour YML/DML Travail de Master Présentation finale Catherine Pugin 21 avril 2005 catherine.pugin@unifr.ch.](https://reader036.fdocuments.net/reader036/viewer/2022062622/551d9dba497959293b8de0e7/html5/thumbnails/46.jpg)
46
Validation Illustration (4)
Validation des attributs. Modification du préfixe : person:id -> per:id Recherche de l’attribut dans la table.
<=movie> <=title>[Star Wars]<title=> <=director person:id="1"> <=person:firstName>[Georges]<person:firstName=> <=person:familyName>[Lucas]<person:familyName=> <director=> <movie=>
per:id director movie int [0-9] required
![Page 47: Implémentation dun parseur validant pour YML/DML Travail de Master Présentation finale Catherine Pugin 21 avril 2005 catherine.pugin@unifr.ch.](https://reader036.fdocuments.net/reader036/viewer/2022062622/551d9dba497959293b8de0e7/html5/thumbnails/47.jpg)
47
Validation Illustration (5)
Validation des attributs. Vérification de la valeur de l’attribut [0-9] -> 1
<=movie> <=title>[Star Wars]<title=> <=director person:id="1"> <=person:firstName>[Georges]<person:firstName=> <=person:familyName>[Lucas]<person:familyName=> <director=> <movie=>
per:id director movie int [0-9] required
![Page 48: Implémentation dun parseur validant pour YML/DML Travail de Master Présentation finale Catherine Pugin 21 avril 2005 catherine.pugin@unifr.ch.](https://reader036.fdocuments.net/reader036/viewer/2022062622/551d9dba497959293b8de0e7/html5/thumbnails/48.jpg)
48
<=movie> <=title>[Star Wars]<title=> <=director person:id="1"> <=person:firstName>[Georges]<person:firstName=> <=person:familyName>[Lucas]<person:familyName=> <director=> <movie=>
Validation Illustration (6)
Validation du sous-arbre Modification des préfixes
• person:firstName
-> per:firstName• person:familyName
-> per:familyName
0 1
per:firstName
3
per:familyName
![Page 49: Implémentation dun parseur validant pour YML/DML Travail de Master Présentation finale Catherine Pugin 21 avril 2005 catherine.pugin@unifr.ch.](https://reader036.fdocuments.net/reader036/viewer/2022062622/551d9dba497959293b8de0e7/html5/thumbnails/49.jpg)
49
Validation Illustration (7)
L’état courant est terminal. Le sous-arbre est accepté.
<=movie> <=title>[Star Wars]<title=> <=director person:id="1"> <=person:firstName>[Georges]<person:firstName=> <=person:familyName>[Lucas]<person:familyName=> <director=> <movie=>
0 2
title
3
director
![Page 50: Implémentation dun parseur validant pour YML/DML Travail de Master Présentation finale Catherine Pugin 21 avril 2005 catherine.pugin@unifr.ch.](https://reader036.fdocuments.net/reader036/viewer/2022062622/551d9dba497959293b8de0e7/html5/thumbnails/50.jpg)
50
Implémentation en 2 mots
Implémentation en Java. Utilisation de l’API JDOM. Quelques adaptations sont nécessaires :
Nœud root supérieur : YML_ROOT. Séquence -- interdite dans les
commentaires. Output XML.
![Page 51: Implémentation dun parseur validant pour YML/DML Travail de Master Présentation finale Catherine Pugin 21 avril 2005 catherine.pugin@unifr.ch.](https://reader036.fdocuments.net/reader036/viewer/2022062622/551d9dba497959293b8de0e7/html5/thumbnails/51.jpg)
51
Gestion des erreurs
2 gestions des erreurs possibles : Arrêt à la première erreur Lors d’une erreur, on remonte d’un niveau et
on continue la validation sur les frères. La seconde solution a été choisie.
Vision globale du document.
![Page 52: Implémentation dun parseur validant pour YML/DML Travail de Master Présentation finale Catherine Pugin 21 avril 2005 catherine.pugin@unifr.ch.](https://reader036.fdocuments.net/reader036/viewer/2022062622/551d9dba497959293b8de0e7/html5/thumbnails/52.jpg)
52
Tests Une base de test a été créée spécialement pour
le parseur. Elle comporte une série d’applications YML
pour tester les différentes erreurs possibles. Une application complète et réaliste traitant de
la Formule 1 en fait également partie. Créée initialement en XML et XML Schema. Traduite et adaptée aux langages YML et DML.
![Page 53: Implémentation dun parseur validant pour YML/DML Travail de Master Présentation finale Catherine Pugin 21 avril 2005 catherine.pugin@unifr.ch.](https://reader036.fdocuments.net/reader036/viewer/2022062622/551d9dba497959293b8de0e7/html5/thumbnails/53.jpg)
53
Tests (erreurs)
La difficulté de tester un parseur validant vient du fait qu’il faut répertorier toutes les erreurs possibles.
Une très bonne connaissance du DML est donc indispensable.
![Page 54: Implémentation dun parseur validant pour YML/DML Travail de Master Présentation finale Catherine Pugin 21 avril 2005 catherine.pugin@unifr.ch.](https://reader036.fdocuments.net/reader036/viewer/2022062622/551d9dba497959293b8de0e7/html5/thumbnails/54.jpg)
54
Conclusion générale (1) Des modifications ont été apportées au DML en
cours de route afin de rendre le méta-modèle déterministe.
On a ainsi pu constater la simplicité d’adaptation du parseur.
On peut donc valider une instance par rapport à son modèle DML, ou un modèle DML par rapport au méta-modèle de la même manière.
![Page 55: Implémentation dun parseur validant pour YML/DML Travail de Master Présentation finale Catherine Pugin 21 avril 2005 catherine.pugin@unifr.ch.](https://reader036.fdocuments.net/reader036/viewer/2022062622/551d9dba497959293b8de0e7/html5/thumbnails/55.jpg)
55
Conclusion générale (2)
Des améliorations sont encore envisageables pour le parseur : Meilleure gestion des préfixes. Meilleure localisation des automates. Meilleure relation entre les 2 parseurs.
Les versions futures des langages YML et DML entraîneront bien évidemment des modifications pour les deux parseurs.
![Page 56: Implémentation dun parseur validant pour YML/DML Travail de Master Présentation finale Catherine Pugin 21 avril 2005 catherine.pugin@unifr.ch.](https://reader036.fdocuments.net/reader036/viewer/2022062622/551d9dba497959293b8de0e7/html5/thumbnails/56.jpg)
56
Conclusion générale (3)
Malgré ces remarques, la combinaison des deux parseurs rend les langages YML et DML complètement fonctionnels.
Ils répondent complètement à l’utilisation requise actuellement qui est la validation des instances et des modèles.
![Page 57: Implémentation dun parseur validant pour YML/DML Travail de Master Présentation finale Catherine Pugin 21 avril 2005 catherine.pugin@unifr.ch.](https://reader036.fdocuments.net/reader036/viewer/2022062622/551d9dba497959293b8de0e7/html5/thumbnails/57.jpg)
57
Merci de votre attention !