La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

Techniques de R éé criture et Transformations Pierre-Etienne Moreau.

Présentations similaires


Présentation au sujet: "Techniques de R éé criture et Transformations Pierre-Etienne Moreau."— Transcription de la présentation:

1 Techniques de R éé criture et Transformations Pierre-Etienne Moreau

2 Application à XML

3 Document XML  XML permet de d é crire des documents structur é s Paul Mark Jurgen Julien Pierre  On peut voir un document XML comme un arbre

4 Transformation de documents XML  On a envie de pouvoir manipuler ces donn é es  pour y rechercher de l ’ information  pour g é n é rer de nouveaux documents (HTML, LaTeX, PDF, XML, etc.)  Quels sont les outils permettant de le faire  XSLT / XPath  Xquery  Xduce / Cduce  DOM  …  Peu permettent de manipuler un document XML en Java  Les manipulations se font souvent en utilisant DOM directement

5 Exemple  On veut savoir s ’ il existe un noeud de la forme Julien Paul Mark Jurgen Julien Pierre

6 Filtrage  Il faut savoir si un pattern XML filtre vers un noeud de document XML  On aimerait pouvoir é crire %match(t) { Julien -> { // Noeud trouv é }  Ou plus g é n é ralement : X -> { … }

7 Mod è le de donn é e (simplifi é ) ElementNode(name:str, attrList:TNodeList, childList:TNodeList) -> TNode AttributeNode(name:str, value:str) -> TNode TextNode(data:str) -> TNode conc(TNode*) -> TNodeList

8 XML vs. Term  Un document XML peut se voir comme un arbre est repr é sent é par : ElementNode("A", conc(AttributeNode("a", "at1")), conc(ElementNode("B",conc(),conc())) )

9 Pattern XML  On veut pouvoir é crire un pattern de la forme X qui sera encod é par : ElementNode("A", conc(AttributeNode("a", "at1")), conc(X) )

10 Questions  A-t-on :  X ?  Quel est le type de X ?  TNode ?  TNodeList ?  On voudrait pouvoir é crire  X*  Quelles sont les solutions ?

11 Questions  En fonction du parseur, peut être reconnu comme    A-t-on :  X   ?  X*   ?  Comment est encod é   ? ElementNode("A", conc(AttributeNode("a", "at1")), conc( TextNode("  "), ElementNode("B",conc(),conc()), TextNode("  ")) )  Est-ce que cela filtre ?

12 Notation explicite (_*,X,_*) qui correspond à : conc(_*,X,_*) A-t-on (_*,X,_*)   ? Oui, il y a 3 solutions

13 Notation implicite (_*,X,_*) qui correspond à : [X] qui correspond é galement à X A-t-on X   ? Oui, il y a 3 solutions

14 Attributs  Les attributs sont repr é sent é s par une liste de couples (nom,valeur)  Il existe é galement des notations implicites et explicites  Ainsi :  correspond à  qui correspond à

15 Questions  A-t-on :  ?  Pourquoi ?  car ?  A-t-on :  ?  Non, car :  (_*, a="at1", _*, b="at2", _*) !<< (b="at2", a="at1")  Il faudrait du filtrage AC avec é l é ment neutre!

16 Attributs dans Tom  On consid è re un ordre sur les noms d ’ attributs  et les formes canoniques o ù les attributs sont tri é s  Ainsi, est repr é sent é par ElementNode("A", conc(AttributeNode("a", "at1"), AttributeNode("b", "at2")), conc())  De même, pour les motifs

17 Utilisation dans Tom Node sort(Node subject) { %match(subject) { (X1*,p1,X2*,p2,X3*) -> { if(`compare(p1,p2) > 0) { return sort(`xml( X1* p2 X2* p1 X3* )); } return subject; }

18 Comparaison d ’ attributs int compare(Node t1, Node t2) { %match(t1, t2) { n1, n2 -> { return `a1.compareTo(`a2); } } return 0; }


Télécharger ppt "Techniques de R éé criture et Transformations Pierre-Etienne Moreau."

Présentations similaires


Annonces Google