DU24 Septembre Introduction à XML test et correction Université Paris II & LRI Michel de Rougemont 1.Introduction à XML 2.Test de propriétés, Correction Mots Arbres
DU24 Septembre XML (S. Abiteboul) eXtensible Markup Language "successeur" de HTML héritier de SGML XML est un métalangage de description et d’échange de documents structurés
DU24 Septembre Le monde XML Historique –"successeur" de HTML –héritier de SGML Structure DTD Espaces Nominaux XSL
DU24 Septembre Notion de balisage structurel Principe clé de SGML Idée fondamentale: Étant donné un document, il est souhaitable de séparer complètement les informations de structure des informations de présentation.
Exemple de document Saint Pétaouchnoque, Le 30 nivose 2004 Editions Duschmol, 12 rue Schmurz YT123 Rapis WindStar 2000 Les rosières en buget AB562 Saint Pétaouchnoque Tel: Fax: Objet: ben quoi? Monsieur, Bla bla bli, bli blo bla, kkkk vhlg vckjdhklbg fdskjbvhv feje slc ifehfe fhckh c jeflccj n khef iheznf jùkvbc lkhdklvn v Veuillez agréer patati patata vachement sincères. signature Pied de page Logo Date Destinataire Corps Pied de page En-tête Objet Salutation Formule de politesse Signature
Représentation XML … 30 Nivose 2004 Monsieur, Ici le premier paragraphe et là le deuxième &abrev-adresse; Mr Schnock rue des églantiers Saint Glin bla bla …
DU24 Septembre Points importants La représentation de cette lettre en XML ne comporte aucune indication sur sa mise en page. De nombreuses propriétés graphiques ou typographiques sont absentes du source XML. Ces propriétés seront définies par l'intermédiaire d'une feuille de style. Une feuille de style est un ensemble de règles pour spécifier la réalisation concrète d'un document sur un média particulier.
DU24 Septembre Exemples de documents XML Bonjour! Bonjour! Bonjour!
DU24 Septembre Structure d’un document Un document XML se compose –d’un prologue, éventuellement vide –d’un arbre d’éléments –de commentaires et d’instructions de traitement, facultatifs Bonjour!
DU24 Septembre Le prologue contient Une déclaration XML, facultative –de la forme: –indique au processeur qui va traiter le document: la version du langage XML utilisée le codage de caractères utilisé l'existence de déclarations extérieures au document Une déclaration de type de document, facultative –de la forme –indique la structure particulière à laquelle doit se conformer un document
DU24 Septembre Structure d'une DTD Une DTD peut comprendre deux parties –une partie externe la partie externe est définie en dehors du document. Elle est référencée par une référence DTD, le plus souvent un URL. Ce mécanisme permet d'assurer une réutilisation de DTDs souvent utilisées. –une partie interne utilisée pour spécialiser une DTD externe générique ou redéfinir certains types d'éléments
DU24 Septembre Structure d'un élément (1) Un élément est de la forme: contenu est la balise d'ouverture est la balise de fermeture. Sa présence est obligatoire, à l'exception très particulière des éléments vides, notés indifféremment ou. contenu est le contenu d'un élément. Il peut s'agir: attr='valeur' représente un ensemble éventuellement vide d'attributs, c'est à dire de paires (nom,valeur). Un élément ne peut posséder qu'un seul attribut de nom donné. – de vide – de texte – d'autres éléments – d'une imbrication de texte et d'éléments – d'instructions de traitement – de commentaires
DU24 Septembre Structure d'un élément (2) Un nom d'élément est une suite non vide de caractères pris parmi –les caractères alphanumériques –le tiret-souligné (undescore) –le signe moins –le point –le caractère deux-points (:) est utilisable, mais il a un sens particulier qui doit satisfaire les contraintes suivantes –le premier caractère doit être alphabétique ou un tiret- souligné –les trois premiers caractères ne doivent pas former une chaîne dont la représentation en lettres minuscules est "xml". Exemples de noms d'éléments correctsincorrects _ toto Nom_société xsl:rule X catalogue XmlSpécififica tion nom société
DU24 Septembre Syntaxe des attributs Un attribut est une paire nom='valeur' qui permet de caractériser un élément. Un élément peut avoir plusieurs attributs. Dans ce cas, les paires nom='valeur' seront séparées par un espace. Exemples – Le nom d'un attribut obéit aux mêmes règles que le nom d'un élément La valeur d'un attribut est une chaîne encadrée par des guillemets ( " ) ou des apostrophes simples ( ' ).
DU24 Septembre Arbre d'éléments Dire qu'un document XML contient un arbre d'éléments, c'est imposer les contraintes suivantes: –Il existe dans un document un et un seul élément père qui contient tous les autres. C'est l'élément racine du document. –Tout élément distinct de la racine est totalement inclus dans son père. Il ne peut donc y avoir recouvrement partiel. Ainsi: bla bla bla n'est pas une structure XML.
DU24 Septembre Documents bien formés Un document est dit bien formé si: –son prologue ne contient pas de déclaration de type de document –il contient un arbre d'éléments –Exemple Bonjour!
DU24 Septembre Documents valides Un document est dit valide si: –son prologue contient une déclaration de type de document –son arbre d'éléments respecte la structure définie par la déclaration de type <!DOCTYPE document [ ]> Bonjour!
DU24 Septembre Notion de DTD Un document valide doit contenir une Déclaration de Type de Document ou DTD. Cette déclaration peut faire référence, par l'intermédiaire d'une URL à un fichier externe. Bonjour!
DU24 Septembre Contenu d'une DTD Une DTD peut contenir des déclarations –d'éléments –de listes d'attributs –d'entités générales –d'entités paramètres –de notations ainsi que des commentaires
DU24 Septembre Déclaration d'élément Une déclaration d'élément est de la forme –ELEMENT est un mot-clef et s'écrit impérativement en majuscules –nom est un nom valide d'un élément –modèle est le modèle de contenu de cet élément. On distingue cinq modèles de contenu éléments données mixte libre vide
DU24 Septembre Modèle de contenu éléments (1/2) Séquence d'éléments fils (..,..,..) –Exemple Un élément chapitre doit contenir, impérativement et dans cet ordre, un sous-élément titre, intro et section. Alternative (..|..|..) –Exemple Indicateurs d'occurrence *, +, ? Un nom d'élément apparaissant dans le modèle d'un élément père peut-être suffixé par un indicateur d'occurrence. p* : p peut apparaître zéro, une ou plusieurs fois dans le contenu d'une instance p+ : p peut apparaître une ou plusieurs fois p? : p peut apparaître zéro ou une fois
DU24 Septembre Exemple simple Livre.dtd. <!ELEMENT auteur (#PCDATA) s1.xml <!DOCTYPE livre SYSTEM 'livre.dtd' [ ]> &ionesco; s1.xsl
DU24 Septembre Modèle de contenu éléments (2/2) Exemples <!ELEMENT chapitre ( titre, intro?, section+ ) > <!ELEMENT section ( titre-section, texte-section ) >
DU24 Septembre Modèle de contenu données La présence de données dans le contenu d'un élément est spécifiée par le mot-clé #PCDATA Exemple
DU24 Septembre Modèle de contenu mixte Ce modèle permet de définir des modèles de contenu autorisant de mêler données et éléments Forme du modèle (#PCDATA | nom 1 | …|nom n )* Exemples de déclarations <!ELEMENT p (#PCDATA | em | exposant | indice | renvoi)* > Exemple d'utilisation un paragraphe peut contenir du texte mis en évidence ou en exposant
DU24 Septembre Modèle de contenu libre (1/2) Un élément peut être défini comme ayant un contenu quelconque, sous réserve que ce contenu respecte les règles générales du langage XML. Exemple Pour que le contenu d'un élément de modèle de contenu libre soit valide, il faut que, s'il contient des éléments, ceux-ci soient déclarés dans la DTD
DU24 Septembre Modèle de contenu libre (2/2) Utilité: ce modèle de contenu est particulièrement utile lors de la création d'un DTD complexe Exemple
Saint Pétaouchnoque, Le 30 nivose 2004 Editions Duschmol, 12 rue Schmurz YT123 Rapis WindStar 2000 Les rosières en buget AB562 Saint Pétaouchnoque Tel: Fax: Objet: ben quoi? Monsieur, Bla bla bli, bli blo bla, kkkk vhlg vckjdhklbg fdskjbvhv feje slc ifehfe fhckh c jeflccj n khef iheznf jùkvbc lkhdklvn v Veuillez agréer patati patata vachement sincères. signature Pied de page Si lettre alors enfants Si entete alors … Si corps alors enfants para Si para alors Police new roman, taille 12, décaler première ligne Si … alors … Principe de fonctionnement des feuilles de style
DU24 Septembre XML : "successeur" de HTML HTML Hypertext Markup Language. Un ensemble prédéfini et limité de balises, défini par une norme (HTML 2.0, 3.2, 4.0). Ces balises ont des sémantiques variées: –h1,.., h6, title, address, … donnent des indications structurelles –center, hr, b, i, big, small,… ne servent qu'à décrire une mise en page.
DU24 Septembre Exemples (1) Attribut CDATA ' > L'attribut att1 des éléments de type f a une valeur constante. C'est la chaîne de caractères. Cette chaîne ne sera pas traitée et reconnue comme un balisage par un processeur XML. Attribut énuméré –Exemple 1 24 Mai L'attribut format est obligatoire, et doit prendre sa valeur parmi ANSI, ISO ou FR –Exemple 2 Jean Pierre Jacques
DU24 Septembre Exemples (2) Attributs ID et IDREF Ces types d'attributs permettent de créer des renvois à l'intérieur d'un document, par exemple vers une références bibliographiques, une note, une section... contenu d'une section autre section. Fait référence à la section X321 Problème: on ne référence pas en fait une section, mais un élément du document possédant un attribut de type ID et dont la valeur est X321.
DU24 Septembre Entités internes Entités prédéfinies –certains caractères, comme & ne peuvent être utilisés dans le texte d'un document –ces caractères doivent être représentés par des codes prédéfinis, appelées entités prédéfinies <: < >: > &: &
DU24 Septembre Entités internes Entités définies par l'utilisateur –il est possible de déclarer des entités dans la DTD –cette déclaration a pour forme Exemple la déclaration suivante <!DOCTYPE toto [ ]> ©right produira © Editions titi remarque: 00A9 est le codage Unicode du caractère ©
DU24 Septembre Entités externes adressées par URL Exemple <!DOCTYPE bouquin [ ]> XML par la joie &auteur; Il était une fois le Web… &chapitre1; &chapitre2; Contrainte: les entités externes doivent être des documents bien formés
DU24 Septembre Entités paramètres Les entités vues jusqu'à présent étaient définies dans une DTD pour être utilisées dans un document Elles jouent le rôle de constantes symboliques Il peut être intéressant de posséder le même mécanisme au sein d'une DTD, afin par exemple de nommer et réutiliser des modèles de contenu apparaissant de façon répétitive XML propose pour cela le mécanisme des entités paramètres
DU24 Septembre Déclaration d'entité paramètre Formes possibles Exemple
DU24 Septembre Espaces nominaux DTD : définition de structure réutilisable et modulaire Possiblité de composer un document à partir d'un ensemble de DTDs publiques Nécessité de pouvoir résoudre des conflits de noms d'éléments Objectif des espaces nominaux
DU24 Septembre Principe Préfixer un nom d'élément par un identificateur unique, le plus souvent un url Déclaration –Attribut spécial, xmlns: ="URL" Exemple <rapport xmlns:math=' TR/REC/MathML> …
DU24 Septembre DOM Document Object Model DOM –modèle de document –interface de programmation indépendante du langage et des plates- formes Permet d'accéder –la structure des documents (HTML et XML) –le contenu des documents –le style –Les événements API définie pour trois langages –OMG IDL, Java, ECMAScript
DU24 Septembre XPath Langage d'expressions de chemin –adresser des parties de documents XML Une expression élémentaire XPath contient –un axe qui spécifie la relation structurale : fils, descendants, ancêtres, frères, attributs,... –un test qui spécifie le type de noeud –des prédicats pour raffiner la sélection Brique de base d'autres applications XML –Xlink, XSLT, Xquery, …
DU24 Septembre XLink XML Linking Language –Hypertexte avancé –permet d'insérer dans les documents XML de quoi décrire les liens entre ressources Web Liens simples unidirectionnels à la HTML Liens hors document Liens multidirectionnels Comportement des liens XLink utilise XPath pour adresser l'intérieur des structures XML
DU24 Septembre Transformation de documents Le Web présente de multiples cas de transformation –Formatage –Réutilisation de document –Adaptation aux appareils de présentation –Conversion de format, par exemple XML vers HTML Trois approches –Des programmes utilisant le DOM –Les feuilles de transformation XSLT –Le langage de requêtes XQuery
DU24 Septembre XSLT Langage de transformation « le Perl de XML » Une feuille de transformation XSLT contient un ensemble de règles pattern/template Pattern –Contexte structurel dans l'arbre source –Expression XPath Template –Un fragment du résultat à produire pour le pattern correspondant Principe –Quand le pattern est reconnu dans le document source, le template correspondant est engendré dans le document résultat
DU24 Septembre XQuery « le SQL de XML » Un modèle de données pour les documents XML Un ensemble d'opérateurs sur ce modèle (algèbre) Un langage de requête fondé sur ces opérateurs (syntaxe) Les requêtes XQuery –Peuvent sélectionner des documents entiers ou des sous-arbres qui répondent à la requête –Peuvent construire des documents nouveaux fondés sur ce qui est sélectionné
DU24 Septembre Fonctions arithmétiques Vérifier si P(x,y) calcule x/y Que faire si P est incorrect? Corriger! Itérer P(x.r, y.r) pour r aléatoire. Majorité. 2.Langages réguliers 3.Langages d’arbres Vérification, Test et Correction
DU24 Septembre Property F on a class K Goldreich, Golwasser, Ron ~1995 An test for F is a probabilistic algorithm A such that –If U |= F, A accepts –If U is far from F, A rejects with high probability (>2/3) –Time(A) independent of n Test de propriété
DU24 Septembre Property testing on words F : 0*1* W |= F Prob [ H |= F’ ] =1 W is -far from F Prob [ H |= not F’] >2/3 H random subword Word W
DU24 Septembre A testable regular property W |= F Prob [ H |= F’ ] =1 W is -far from F Prob [ H |= not F’] >2/3 Many 10 appear in W. Repeating the test will detect it with high probability H random subword F’ Word W How can we verify F : 0*1* ? distance(w,w’) = Hamming distance
DU24 Septembre Regular properties are testable Theorem. Regular languages are testable. N. Alon, M. Krivelevich, I. Newman, M. Szegedy FOCS 99. General idea : if a word is far from a regular language, it contains many subwords which are infeasible and can be detected.
DU24 Septembre Tree-automata Logical definability on trees Tree grammar Regular expression Tree properties r(a,b(a,b(a,b(a,b(a,b(a,b)....)r(a(a,b(a,b(a(a,b),b)....),b)
DU24 Septembre Distance(T1,T2) = # flips T1 : T2 (when defined) Flips : Distance on Trees Distance(T1,T2) =2
DU24 Septembre Expansion. Operations on Trees
DU24 Septembre (q0, q0) q1 (q0,q1) q1 Tree automata q0 q1 q0 q1 q2 (q1,q1) q2 (q1,q0) q2 (q2,-) q2 (-,q2) q2
DU24 Septembre Logical definability on a class K of trees Tree properties Equivalence of : Automata definable Monadic Second-order Regular
DU24 Septembre Definition : a subtree t is feasible for L if there are subtrees (for its leaves) which reach states (q1...ql) such that the state of the root q=t(q1...ql) can reach an accepting state (in the automaton for L). Feasible subtree feasible infeasible
DU24 Septembre Theorem. If then the number of unfeasible subtrees of length a is O(n). Infeasible subtrees Intuition : if the Distance is large then there are many infeasible subtrees
DU24 Septembre Decision principle: analysis of the esssentially strongly connected component Deciding the transformation qq’ Q Find a path in the tree automaton from (q,q’) until Q. It will determine the sequence of flips and expansions.
DU24 Septembre Avoir un testeur est équivalent à avoir un correcteur, lorsque le mot n’est pas trop loin d’un langage. Projets: 1.Implémenter le testeur 2.Implémenter le correcteur Test et Correction
DU24 Septembre Conclusion XML : standard pour les documents WEB Manipulation d’arbres réguliers –DTD=Automate=Expression régulière. Arbres: –Les arbres réguliers sont testables –On peut les corriger.