Master Informatique 2 «RADI» Thème Applications Documentaires XML. Frédérik Bilhaut [email protected]
|
|
|
- Paulette Lussier
- il y a 10 ans
- Total affichages :
Transcription
1 Master Informatique 2 «RADI» Thème Applications Documentaires Frédérik Bilhaut [email protected] XML Frédérik Bilhaut Université de Caen MI2 RADI 2004/2005 1
2 Plan du cours (4 2h) La sphère XML Le document structuré Le document XML Les spécifications associées Les documents composites Spécification de schémas XML Document Type Definition : DTD Manipulation de documents XML Navigation dans les arbres : XPath Transformation d'arbres : XSLT Frédérik Bilhaut Université de Caen MI2 RADI 2004/2005 2
3 La sphère XML Frédérik Bilhaut Université de Caen MI2 RADI 2004/2005 3
4 Le document structuré Un document structuré distingue deux aspects : Les données (textuelles ou autre) Le marquage de leur structure (champs, types, relations, etc.) La «s émantique» des données fait partie intégrante du document Exemple de document non structuré : Dupond;Jean;42 rue St Pierre;14000;Caen;Enseignant Durand;Pierre;27 rue des Lilas;14520;Maltot;Commerçant... Exemple de document structuré : [Personne] Nom=Dupond Prénom=Jean Adresse=42 rue St Pierre CP=14000 Ville=Caen Profession=Enseignant... Frédérik Bilhaut Université de Caen MI2 RADI 2004/2005 4
5 Document structuré vs. non structuré Avantages du document non structuré : Moins volumineux Parsing peu coûteux Aucune variabilité syntaxique Inconvénients : Manque de souplesse : Tous les champs doivent être spécifiés Toutes les entrées doivent avoir le même format Quasi impossible à interpréter sans spécification externe du format Les données et rien que les données Faible pérennité Pour le document structuré, c'est l'inverse! Frédérik Bilhaut Université de Caen MI2 RADI 2004/2005 5
6 Le document XML XML : extensible Markup Language «S uccesseur» de S GML (Standard Generalized Markup Language) Recommandation du World Wide Web Consortium ( Standard ISO 8879 en 1986 Développé à partir de GML dans les années 70, dernière version en 2001 Exemples d'applications : HTML, DocBook Version 1.0 du 10 février 1998 (dernière édition le 6 octobre 2000) Version 1.1 du 4 février 2004 (changements mineurs) Définit une syntaxe pour les documents structurés Caractéristiques principales : Format textuel : tout document XML est aussi un fichier texte brut Modèle arborescent : tout document XML est aussi un arbre XML est un métalangage : c'est une syntaxe générique permettant de définir des langages spécifiques (des applications) tels que XHTML. Frédérik Bilhaut Université de Caen MI2 RADI 2004/2005 6
7 Aperçu de la syntaxe XML (document XHTML) <?xml version="1.0" encoding="utf 8"?> <html> <head> <title>exemple de document XML</title> </head> <! Ceci est un commentaire > <body> <h1>ceci est un exemple de document XML</h1> <p> Ceci est un paragraphe. Nous montrons ici un exemple de fichier XHTML. Successeur de HTML, ce langage est une application de <a href=" </p> <p align="right"> Ceci est un second paragraphe. Comme il est spécifié dans l'attribut <em>align</em>, il devra être aligné à droite. </p> </body> </html> Frédérik Bilhaut Université de Caen MI2 RADI 2004/2005 7
8 Les avantage de XML (1) : Le méta langage XML n'est pas révolutionnaire, seulement indispensable! Une spécification simple Syntaxe rudimentaire et fortement contrainte Structure strictement arborescente Facilité d'implémentation, conformité facilement vérifiable ( SGML) C'est un langage auto descriptif Format ouvert et universel pour l'échange de données à grande échelle Des organismes spécialisés centralisent la spécification des formats La structure des données est spécifiée explicitement Le contenu est accessible aussi bien à l'humain qu'à l'ordinateur C'est un langage modulaire Un même document peut incorporer plusieurs jeux de balises Les espaces de noms permettent d'éviter les conflits Frédérik Bilhaut Université de Caen MI2 RADI 2004/2005 8
9 Les avantage de XML (2) : Les spécifications et outils associés Standardisation de nombreux formats interopérables Ex : XHTML + MathML + SVG Parseurs XML disponibles dans tous les environnements Plus besoin de définir une syntaxe ad hoc pour chaque application Gain de temps : développer une syntaxe et un parseur n'est pas trivial! Interopérabilité : simplifie l'échange de données avec d'autres agents La structure d'un langage peut être spécifiée formellement (ex: DTD), les parseurs peuvent les utiliser pour vérifier la conformité d'un document Langages déclaratifs de manipulation de documents (ex: XSLT) Implémentations disponibles sous toutes les plate formes Outils de visualisation et d'édition des documents (ex: CSS) Outils de stockage et d'interrogation Bases de données XML, langages de requêtes (ex: XQuery) Frédérik Bilhaut Université de Caen MI2 RADI 2004/2005 9
10 Les différents aspects d'un document XML XML <document> <title> ABC </title> <section> <para> ABC </para>... </section> </document> Fichier «t exte» Ex : Unicode T Séq. Document «ren du» Ex : feuille de style CSS T T Structure arborescente Ex : DOM Frédérik Bilhaut Université de Caen MI2 RADI 2004/
11 Les différents aspects d'un document XML (2) Frédérik Bilhaut Université de Caen MI2 RADI 2004/
12 La syntaxe XML Un document XML comporte différents types d'objets : Des éléments (ou balises) : <title>... </title> Des attributs (sur les éléments) : <a href=" Des fragments de texte : Ceci est un fragment textuel Des commentaires : <! Ceci est un commentaire > Des instructions de traitement : <?xml stylesheet...?> Des entités : ©right; Les «ex ceptions» syntaxiques : Caractères réservés : < > & " deviennent < > & " Éléments vides : <a name="toto"/> Sections littérales : <![CDATA[X&Y; Z>T]]> Référence à une DTD : <!DOCTYPE article SYSTEM "article.dtd"> Le prologue : <?xml version="1.0"...?> Frédérik Bilhaut Université de Caen MI2 RADI 2004/
13 Correspondance arbre/document Chaque objet correspond à un noeud dans l'arbre Le document dans son ensemble a une structure strictement arborescente La racine de l'arbre doit être un élément. C'est le premier élément du document, et il ne peut avoir de frère Tout élément est un noeud ou une feuille de l'arbre Y compris le texte, les attributs, etc. Frédérik Bilhaut Université de Caen MI2 RADI 2004/
14 Correspondance arbre/document (2) article #comment "Exemple" title #text "Le titre" #text "Du texte ici " section #attr id=42 nl para <?xml version="1.0"?> <article> <! Exemple > <title>le titre</title> <section id="42"> <para> Du texte ici <nl/> et là. <acro>xml</acro>&tm; </para> </section> </article> #text " et là." acro #entity tm #text "XML" Frédérik Bilhaut Université de Caen MI2 RADI 2004/
15 Orientation document vs. orientation données On peut distinguer deux types d'arbres XML : Orientés «documents» Orientés «données» On représente un document textuel dans sa linéarité La structure de l'arbre coïncide avec la structure logique du document. La structure de l'arbre coïncide avec le modèle de données utilisé On peut trouver des documents hybrides <?xml version="1.0"?> <document lang="fr"> <title>le titre</title> <section> <para class="intro"> Voici un arbre XML orienté document. </para> </section> </document> <?xml version="1.0"?> <! Voici un arbre orienté données représentant un graphe > <graph name="mon graphe"> <node id="1">noeud 1</node> <node id="2">noeud 2</node> <node id="3">noeud 3</node> <arc from="1" to="2"/> <arc from="1" to="3">label</arc> </graph> Frédérik Bilhaut Université de Caen MI2 RADI 2004/
16 Gestion de l'encodage des caractères Un document XML peut (devrait) spécifier l'encodage utilisé En théorie, la fin d'un problème ancien mais persistant! Encodages courants : UTF 8 (Unicode), ISO (Latin 1) Il est possible de faire référence à des caractères «sp éciaux» Entités numériques spécifiant directement un numéro Unicode <?xml version="1.0" encoding="utf 8"?> <document> <paragraph> Pour spécifier des caractères spéciaux, on peut utiliser des entités "numériques" faisant référence à des caractères Unicode. </paragraph> <formula> x 0, f(x) < e </formula> </document> x 0, f x e Frédérik Bilhaut Université de Caen MI2 RADI 2004/
17 Gestion des sauts de lignes Différentes représentations des sauts de lignes (EOL) La spécification XML reconnaît toutes ces combinaisons Linux : h10 Windows : h13 + h10 Mac : h13... Un parseur doit les remplacer toutes par h10 L'application n'a pas à tenir compte du type de sauts de lignes utilisés XML 1.1 reconnaît de nouveaux types de fin de lignes IBM mainframes : h85 Fin de ligne Unicode : h2028 Frédérik Bilhaut Université de Caen MI2 RADI 2004/
18 Spécification de schémas XML étant un méta langage, son utilisation se traduit par la définition d'applications spécifiques (ex : XHTML, SVG,...) XML définit une syntaxe générique Chaque application définit un schéma (ou vocabulaire) spécifique Exemple de spécification informelle d'un schéma : Le présent document spécifie un schéma XML permettant de représenter des graphes orientés. Les différentes balises définies sont : graph (la racine), node et arc. Un élément graph décrit un graphe, et contient des éléments node (au moins un) et arc (de 0 à n). Il accepte l'attribut optionnel name spécifiant l'intitulé du graphe. Un élément node décrit un noeud du graphe, et contient éventuellement du texte définissant son label. Il demande l'attribut obligatoire id spécifiant un identifiant unique. Un élément arc décrit un arc du graphe, et contient éventuellement du texte définissant son label. Il demande les attributs obligatoires from et to, spécifiant respectivement les identifiants du noeud de départ et du noeud d'arrivée (ceux ci doivent obligatoirement être spécifiés au sein du même noeud graph). Frédérik Bilhaut Université de Caen MI2 RADI 2004/
19 Spécification de schémas (1bis) Frédérik Bilhaut Université de Caen MI2 RADI 2004/
20 Spécification de schémas (2) Pour un document donné, la spécification du schéma peut être : Implicite : Elle est (en principe) spécifiée dans un document échangé entre les utilisateurs du format. Cette spécification est plus ou moins formellement, par exemple en langage naturel «contraint» Elle n'est pas accessible aux processus informatiques Le bon fonctionnement de l'échange d'information repose uniquement sur la confiance entre les intervenants. Explicite : Elle est spécifiée formellement dans un format bien défini Elle est accessible à la fois aux humains et aux processus informatiques Un document peut indiquer explicitement le schéma auquel il se conforme Les outils informatiques peuvent vérifier la conformité d'un document relativement à un schéma, et indiquer d'éventuelles erreurs Frédérik Bilhaut Université de Caen MI2 RADI 2004/
21 Spécification de schémas (3) Plusieurs langages formels permettent de spécifier un schéma : Document Type Definition (DTD) XSchema Format ancien (date de SGML) et peu expressif, mais encore couramment utilisé (fait partie de la spécification XML) Utilise une syntaxe spécifique Son utilisation reste obligatoire pour définir des entités Spécification du W3C, en relation avec d'autres spécifications Plus puissant que DTD (modularité, gestion des types, des espaces de noms...) Il est lui même un vocabulaire XML ( par ex: génération auto. de la doc.) Mais relativement complexe et ne lève pas toutes les limitations des DTD Relax NG «Concurrent» de XSchema, aux propriétés semblables Spécification indépendante visant la normalisation ISO Se veut plus souple et plus simple que XSchema Frédérik Bilhaut Université de Caen MI2 RADI 2004/
22 Document bien formé vs. document valide Deux niveaux de conformité d'un document XML : Le document bien formé Respecte scrupuleusement la syntaxe XML Respecte l'encodage de caractères annoncé Intéressant en soi car la sémantique d'un document XML bien formé est clairement définie (par opposition aux documents HTML dont l'interprétation faut appel à des heuristiques propres à chaque navigateur) Le document valide Un document est dit valide relativement à un schéma donné (DTD ou autre) Un document valide est aussi bien formé Un document valide n'est plus considéré comme tel si le document spécifiant son schéma n'est pas accessible L'utilisation d'un schéma n'est pas obligatoire, mais devient quasi indispensable pour toute application «r éelle» : le schéma est totalement formalisé et sert de référence tant pour les processus informatiques que pour les intervenants humains Frédérik Bilhaut Université de Caen MI2 RADI 2004/
23 «Rendu» d'un document XML Différentes méthodes permettent de produire des «vues» d'un document XML On peut avoir plusieurs vues d'un même document À chaque vue correspondra une feuille de style Le procédé dépend principalement du type de document S'il est orienté document : Le plus souvent, une feuille de style type CSS convient La FdS spécifie les modalités d'affichage de chaque type de noeud Le document est affiché selon sa propre structure S'il est orienté données : Le plus souvent, une transformation est nécessaire (par ex. XSLT) Par exemple en XHTML, XSL:FO, etc. Frédérik Bilhaut Université de Caen MI2 RADI 2004/
24 Affichage d'un fichier XML orienté «document» avec une feuille de style <?xml version="1.0"?> <document lang="fr"> <title>le titre</title> <section> <para type="intro"> Voici un arbre XML. </para> <para> Du texte du texte. Du texte du texte. Du texte du texte. Du texte du texte. </para> <para> Encore du texte. Encore du texte. Encore du texte. </para> </section> </document> document { CSS display: block; } title { font size: 16pt; text align: center; } para { text indent: 5pt; } para[type=intro] { font style: italic; } Le titre Voici un arbre XML. Du texte du texte. Du texte du texte. Du texte du texte. Du texte du texte. Encore du texte. Encore du texte. Encore du texte. Frédérik Bilhaut Université de Caen MI2 RADI 2004/
25 Affichage d'un fichier XML orienté «données» avec transformation Exemple des graphes Orienté «données» : on va le tran sformer dans une représentation adaptée à la représentation visuelle Au moins deux représentations possibles : Matrice d'adjacence Tableau HTML Graphique (noeuds & arcs) Dessin SVG <?xml version="1.0"?> <graph> <node id="1">n1</node> <node id="2">n2</node> <node id="3">n3</node> <arc from="1" to="2"/> <arc from="2" to="3"/> <arc from="3" to="1"/> </graph> Frédérik Bilhaut Université de Caen MI2 RADI 2004/
26 Affichage d'un fichier XML orienté «données» avec transformation (1) transformation <?xml version="1.0"?> <graph> <node id="1">n1</node> <node id="2">n2</node> <node id="3">n3</node> <arc from="1" to="2"/> <arc from="2" to="3"/> <arc from="3" to="1"/> </graph> N1 N1 N3 X N2 N3 N2 X X <?xml version="1.0"?> <html> <table> XHTML <tr> <th/> <th>n1</th> <th>n2</th> <th>n3</th> </tr> [...] </table> </html> table { CSS width: 80%; } th { font weight: bold; } Frédérik Bilhaut Université de Caen MI2 RADI 2004/
27 Affichage d'un fichier XML orienté «données» avec transformation (2) transformation <?xml version="1.0"?> <graph> <node id="1">n1</node> <node id="2">n2</node> <node id="3">n3</node> <arc from="1" to="2"/> <arc from="2" to="3"/> <arc from="3" to="1"/> </graph> N1 N2 N3 <?xml version="1.0"?> <svg> <g> <circle x="5" y="20" radius="40"/> <text x="15" y="35"> N1 </text> [...] SVG </g> </svg> circle { border width: 2px; } text { CSS align: center; } Frédérik Bilhaut Université de Caen MI2 RADI 2004/
28 Affichage d'un fichier XML orienté «document» avec transformation transformation <?xml version="1.0"?> <document lang="fr"> <title>le titre</title> <section> <para type="intro"> Voici un arbre XML. </para> <para> Du texte du texte. Du texte du texte. Du texte du texte. Du texte du texte. </para> <para> Encore du texte. Encore du texte. Encore du texte. </para> </section> </document> <?xml version="1.0"?> <root> <page sequence> <flow> <block> Du texte [...] </block> [...] XSL:FO </flow> </page sequence> </root> Le titre Voici un arbre XML. PDF Du texte du texte. Du texte du texte. Du texte du texte. Du texte du texte. Encore du texte. Encore du texte. Encore du texte. Frédérik Bilhaut Université de Caen MI2 RADI 2004/
29 Exemple de document XML visualisé avec CSS Frédérik Bilhaut Université de Caen MI2 RADI 2004/
30 Exemple de documents visualisés après transformations en HTML Frédérik Bilhaut Université de Caen MI2 RADI 2004/
31 Exemple d'éditeur XML basé sur CSS (WYSIWYM) Frédérik Bilhaut Université de Caen MI2 RADI 2004/
32 Les espaces de noms Les espaces de noms (ou namespaces) permettent d'éviter les conflits entre des vocabulaires différents À chaque vocabulaire est associé un espace de noms Un espace de nom est identifié sans ambiguïté par une URI Fait partie de la spécification du vocabulaire XHTML : SVG : L'attribut xmlns permet de spécifier l'espace de nom utilisé : <?xml version="1.0" encoding="utf 8"?> <html xmlns=" <head> <title>exemple de document XML</title> </head> [...] </html> Frédérik Bilhaut Université de Caen MI2 RADI 2004/
33 Les espaces de noms (2) Les namespaces peuvent être spécifiés en tout point de l'arbre La déclaration d'un namespace s'applique pour l'ensemble du sous arbre <?xml version="1.0" encoding="utf 8"?> <html xmlns=" <head> <title>exemple de document XML</title> </head> <body> <p>voir le graphique ci dessous :</p> <g xmlns=" <circle... /> </g> </body> </html> Frédérik Bilhaut Université de Caen MI2 RADI 2004/
34 Les espaces de noms (3) Pour faire faciliter la cohabitation des namespaces, on peut leur associer des préfixes Il seront utilisés pour spécifier le namespace de chaque élément Le choix des préfixes est local et arbitraire <?xml version="1.0" encoding="utf 8"?> <html:html xmlns:html=" xmlns:svg=" <html:head> <html:title>exemple de document XML</html:title> </html:head> <html:body> <html:p>voir le graphique ci dessous :</html:p> <svg:g> <svg:circle... /> </svg:g> </html:body> </html:html> Frédérik Bilhaut Université de Caen MI2 RADI 2004/
35 Les espaces de noms (4) Les préfixes peuvent cohabiter avec le namespace par défaut Celui ci s'applique quand aucun préfixe n'est spécifié <?xml version="1.0" encoding="utf 8"?> <html xmlns=" xmlns:svg=" <head> <title>exemple de document XML</title> </head> <body> <p>voir le graphique ci dessous :</p> <svg:g> <svg:circle... /> </svg:g> </body> </html> Frédérik Bilhaut Université de Caen MI2 RADI 2004/
36 Exemple de document composé XHTML MathML SVG Frédérik Bilhaut Université de Caen MI2 RADI 2004/
37 Les parseurs XML Bibliothèques permettant la manipulation de documents XML Acceptent tout documents bien formé Éventuellement, valident le document relativement à un schéma Parseurs à «m odèle objet» (Document Object Model / DOM) Construit un modèle objet de l'arbre XML Ce modèle est indépendant du langage de programmation (spéc. W3C) Disponible dans tous les langages de programmation / scripts Possibilité de naviguer facilement dans tout le document Simplifie la création de nouveaux documents (sans se soucier de la syntaxe), permet la migration de fragments d'un document à l'autre Occupation mémoire proportionnelle à la taille du document la taille des documents manipulables dépend de la mémoire disponible Procède systématiquement à l'analyse de l'intégralité du document Frédérik Bilhaut Université de Caen MI2 RADI 2004/
38 Les parseurs XML (2) Extrait du «Document Object Model» Frédérik Bilhaut Université de Caen MI2 RADI 2004/
39 Les parseurs XML (3) Parseurs de type «év énementiel» (Simple API for XML / SAX) Le document est vu comme une liste plate d'objets élémentaires Balises de début/fin, fragments textuels, commentaires, etc. ( objets DOM) Le document est parcouru linéairement un événement est émis pour chaque élément rencontré Début du document Balise début: "article" Commentaire: "Exemple" <?xml version="1.0"?> Balise début: "titre" <article> Texte: "Le titre" <! Exemple > Balise fin: "title" <title>le titre</title> Balise début: "section", {id="42"} <section id="42"> Balise début: "para" <para> Texte: "Du texte ici" Du texte ici <nl/> Balise début: "nl" et là. Balise fin: "nl" </para> Balise fin: "para" </section> Balise fin: "section" </article> Balise fin: "article" Fin du document Frédérik Bilhaut Université de Caen MI2 RADI 2004/
40 Les parseurs XML (4) Parseurs de type «év énementiel» (suite) Des parseurs SAX sont disponibles dans quasiment tous les langages Leur implique l'implémentation d'une interface quasiment standard A chaque méthode correspond un événement Le parseur les appelle en fonction des évènements détectés Frédérik Bilhaut Université de Caen MI2 RADI 2004/
41 Les parseurs XML (5) Parseurs de type «év énementiel» (suite) Occupation mémoire minime car le document n'y est jamais représenté dans son ensemble Possibilité de traiter des documents de taille quelconque Traitement rapide On ne s'occupe que les éléments nécessaires Pas de temps consacré à la construction des objets du DOM On n'a pas de vue globale sur le document C'est à l'utilisateur de mémoriser le nécessaire au cours du traitement État courant, données en attente de traitement, etc. En général automate à pile En «lecture» s eulement (pas de génération de XML) Frédérik Bilhaut Université de Caen MI2 RADI 2004/
42 Vue d'ensemble de la sphère XML Modèles de documents XHTML SVG XForms Transformation & requêtes XSLT SOAP MathML DocBook Services Web SMIL XSL FO XQuery WSDL... Chemins, liens & pointeurs OpenOffice XML Web Sémantique RDF RDF Schema DOAP... FOAF OWL Spécification de schémas XSchema XPath XPointer XLink XInclude Spécifications associées DTD Relax NG Frédérik Bilhaut Université de Caen MI2 RADI 2004/2005 CSS HTTP URI Unicode ECMAScript 42
43 Exemples de documents XML DocBook : Documents LinguaStream XHTML + MathML + SVG composite.xhtml Fichier «A nt» Document annoté / annotations document.lsd, semantics.lss Chaîne de traitement stream.ls Document composite Documentation technique (entre autres) docbook.dbx Équivalent Java/XML du «M akefile» ant.svg Diagramme UML Fichier «D ia» diagramme.dia Document SVG diagramme.svg Frédérik Bilhaut Université de Caen MI2 RADI 2004/
44 La plate forme LinguaStream Frédérik Bilhaut Université de Caen MI2 RADI 2004/
45 Document Type Definitions Frédérik Bilhaut Université de Caen MI2 RADI 2004/
46 Document Type Definitions (DTD) Le format «D TD» permet de définir formellement un schéma (ou vocabulaire) XML. Format «d e base» (fait partie de la s pécification XML) Une alternative parmi d'autres (XSchema, RelaxNG,...) Une DTD définit en intension toutes les formes possibles d'un document conforme au schéma décrit Un schéma définit une classe de documents Chaque document est une instance particulière Un document XML peut indiquer la DTD à laquelle il se conforme Lien vers un document externe, intégrée au document, ou mixte Dans ce cas, un parseur XML pourra valider le document Si le document n'est pas conforme, le traitement est interrompu Frédérik Bilhaut Université de Caen MI2 RADI 2004/
47 Déclaration du type de document Par inclusion dans le document : <?xml version="1.0" standalone="yes"?> <!DOCTYPE document [ <! Définition du schéma > ]> <document>... </document> Dans un document séparé (préférable) : <?xml version="1.0" standalone="no"?> <?xml version="1.0"?> <!DOCTYPE document SYSTEM "schema.dtd"> <!ELEMENT document...> <document>... </document> <!ELEMENT section...> <!ELEMENT para...> document.xml schema.dtd Frédérik Bilhaut Université de Caen MI2 RADI 2004/
48 Aperçu de la syntaxe DTD <?xml version="1.0" encoding="utf 8"?> <!ELEMENT document (title, section+)> <!ATTLIST document lang NMTOKEN #IMPLIED> <!ELEMENT section (title, (para section)+> <!ATTLIST section id ID #IMPLIED lang NMTOKEN #IMPLIED> <!ELEMENT para (#PCDATA em sub exp)*> <!ELEMENT title (#PCDATA)> <!ELEMENT em (#PCDATA)> <!ELEMENT nl EMPTY> Frédérik Bilhaut Université de Caen MI2 RADI 2004/
49 Définition des éléments <!ELEMENT document (title, section+)> mot clef Obligatoirement en majuscules Nom de l'élément : modèle de contenu Mot clef : nom de l'élément Graphie exacte de la balise dans le document Nom XML valide : pas d'espaces, respect de la casse, etc. Modèle de contenu Définit les éléments autorisés à l'intérieur de cette balise Définit leur multiplicité, éventuellement un ordre, etc. Syntaxe type «expres sions régulières» Frédérik Bilhaut Université de Caen MI2 RADI 2004/
50 Modèle de contenu des éléments Cas général : liste de sous éléments Séparés par des virgules : ordre défini Séparés par des barres verticales : ordre non défini <!ELEMENT section (para section)> Premier parenthèses obligatoires Un parenthésage supplémentaire permet de combiner les opérateurs : <!ELEMENT chapitre (titre, intro, section)> <!ELEMENT section (intro, (para section))> Opérateurs de multiplicité : Optionnel non répétable (0~1) : x? Optionnel répétable (0~*) : x* Obligatoire répétable (1~*) : x+ <!ELEMENT chapitre (titre?, intro*, section+)> Frédérik Bilhaut Université de Caen MI2 RADI 2004/
51 Modèle de contenu des éléments (2) Rq : chaque élément «fils» doit à son tour définir son propre modèle de contenu <!ELEMENT toto (a b)*> <toto><a>...</a><b>...</b><b>...</b><a>...</a></toto> <toto><a>...</a><b>...<a>...</a>...</b></toto> Données textuelles Mot clef #PCDATA (Parsed Character Data) <!ELEMENT para (#PCDATA)> <para>en 3e année, on constate que...</para> Le contenu est fréquemment mixte : <!ELEMENT para (#PCDATA em sub exp)*> <para>en 3<exp>ème</exp> année, on constate...</para> Frédérik Bilhaut Université de Caen MI2 RADI 2004/
52 Modèle de contenu des éléments (3) Contenu non spécifié <!ELEMENT toto ANY> La structure du contenu n'est pas contrainte, mais : Peu intéressant en DTD (surtout utile durant la mise au point du schéma) Le contenu doit rester bien formé Les balises contenues doivent avoir été déclarées dans la DTD En XSchema, le «an y» pourra être associé à un namespace Contenu vide On peut demander qu'un élément soit obligatoirement vide <!ELEMENT toto EMPTY> <toto x="y"/> ou <toto x="y"></toto> (sauf en SGML) Un modèle peut autoriser un contenu vide sans le rendre obligatoire <!ELEMENT toto (#PCDATA x y)*> On ne peut pas mêler «empty» à d' autres éléments <!ELEMENT toto (EMPTY titi)> Frédérik Bilhaut Université de Caen MI2 RADI 2004/
53 Définition des attributs mot clef <!ATTLIST document attr1 type1 mode1 attr2 type2 mode2... > nom d'attribut Si la DTD est donnée, seuls les attributs déclarés pourront être spécifiés Un attribut donné ne peut être spécifié qu'une seule fois Nom de l'élément : déclaration de défaut Règles générales concernant les attributs type de donnée nom de l'élément Graphie exacte de la balise dont on définit les attributs Nom d'attribut Graphie exacte de l'attribut (règles XML habituelles) Les noms commençant par «xml» s ont interdits Frédérik Bilhaut Université de Caen MI2 RADI 2004/
54 Définition des attributs (2) Types de données disponibles : CDATA : chaîne de caractères littérale (Character Data) ID : identifiant unique au sein du document (un seul par élément) IDREF : référence à un identifiant du même document NMTOKEN(S) : un (ou plusieurs) symboles (Name Token) ENTITY et NOTATION : marginal et ± obsolète, cf. spécification XML Liste de choix possibles dans un ensemble de symboles prédéfinis Énumération des symboles séparés par des barres verticales : (a b c) Rq: XSchema est beaucoup plus expressif sur ce point (types «fins») Déclaration de défaut (ou mode) : Valeur par défaut : en vigueur lorsque l'attribut ne sera pas spécifié #REQUIRED : l'attribut devra obligatoirement être spécifié #IMPLIED : l'attribut est facultatif #FIXED : valeur figée et non re définissable Frédérik Bilhaut Université de Caen MI2 RADI 2004/
55 Définition des attributs (3) Exemples <!ELEMENT document...> <!ATTLIST document lang (fr en es de other unknown) #REQUIRED author CDATA #IMPLIED version CDATA #FIXED "1.2"> <!ELEMENT section...> <!ATTLIST section id ID #IMPLIED includeintoc (yes no) yes> <!ELEMENT para...> <!ATTLIST para class NMTOKEN #IMPLIED> <!ELEMENT xref...> <!ATTLIST xref target IDREF #REQUIRED> Frédérik Bilhaut Université de Caen MI2 RADI 2004/
56 Définition d'entités générales <!ENTITY nom "valeur"> nom de l'entité Permet de définir ses propres entités Elles seront remplacées par leur valeur de substitution lors du parsing Nom de l'entité valeur de substitution Graphie exacte de l'entité telle qu'elle apparaîtra dans les documents Règles XML habituelles Valeur de remplacement Texte et/ou références à d'autres entités (prédéfinies ou non) Frédérik Bilhaut Université de Caen MI2 RADI 2004/
57 Définition d'entités générales (2) Exemple <?xml version="1.0"?> <!DOCTYPE document [ <!ENTITY cp " "> <!ENTITY copyright "&cp; James Bond"> <!... > ]> <document> <para> Du texte et encore du texte. [...] </para> <para> ©right; </para> </document> Du texte et encore du texte. Du texte et encore du texte. James Bond Frédérik Bilhaut Université de Caen MI2 RADI 2004/
58 Retour sur l'exemple des graphes Le présent document spécifie un schéma XML permettant de représenter des graphes orientés. Les différentes balises définies sont : graph (la racine), node et arc. Un élément graph décrit un graphe, et contient des éléments node (au moins un) et arc (de 0 à n). Il accepte l'attribut optionnel name spécifiant l'intitulé du graphe. L'attribut figé version détermine la version de cette spécification (1.2). Un élément node décrit un noeud du graphe, et contient éventuellement du texte définissant son label. Il demande l'attribut obligatoire id spécifiant un identifiant unique. Un élément arc décrit un arc du graphe, et contient éventuellement du texte définissant son label. Il demande les attributs obligatoires from et to, spécifiant respectivement les identifiants du noeud de départ et du noeud d'arrivée (ceux ci doivent être spécifiés au sein du même noeud graph). Spécification informelle du schéma N1 N2 N3 Exemple de graphe <?xml version="1.0"?> <graph version="1.2"> <node id="1">n1</node> <node id="2">n2</node> <node id="3">n3</node> <arc from="1" to="2"/> <arc from="2" to="3"/> <arc from="3" to="1"/> </graph> Exemple d'instance Frédérik Bilhaut Université de Caen MI2 RADI 2004/
59 Retour sur l'exemple des graphes (2) : la DTD <?xml version="1.0" encoding="iso "?> <!ELEMENT graph (node+, arc*)> <!ATTLIST graph name CDATA #IMPLIED> version CDATA #FIXED "1.2"> <!ELEMENT node (#PCDATA)> <!ATTLIST node id ID #REQUIRED> <!ELEMENT arc EMPTY> <!ATTLIST arc to IDREF #REQUIRED from IDREF #REQUIRED> Frédérik Bilhaut Université de Caen MI2 RADI 2004/
60 Exercice : proposer une DTD à partir d'un document «type» <?xml version="1.0" encoding="utf 8"?> <project basedir="." default="compile" name="mon projet"> <description> Ceci est un exemple valide de fichier "Ant". </description> <property name="options" value=" v"/> <path id="monclasspath"> <pathelement location="lib/xerces.jar"/> <pathelement location="lib/xalan.jar"/> </path> <target name="compile" depends="clean"> <javac srcdir="." encoding="iso "> <classpath refid="monclasspath"/> </javac> <rmic base="." classname="fr.unicaen.test.serviceimpl"> <classpath refid="monclasspath"/> </rmic> </target> <target name="documentation"> <ant antfile="build.xml" target="pdf" dir="doc/manual"/> <ant antfile="build.xml" target="javahelp" dir="doc/manual"/> </target> <target name="clean"> <delete> <fileset dir="." includes="**/*.class"/> <fileset dir="." includes="**/*.java~" defaultexcludes="no"/> </delete> </target> </project> Frédérik Bilhaut Université de Caen MI2 RADI 2004/
61 Les limites du formalisme DTD Manque de modularité Pas de gestion de types évolués De plus en plus de documents sont composites, i.e. utilisent simultanément plusieurs schémas On ne peut ni associer une DTD à un namespace, ni combiner proprement plusieurs DTD Formats numériques, dates, contraintes sur les chaînes de caractère, etc. Limites sur les modèles de contenu Ex 1 : dans un graphe, au moins un noeud et zéro ou plusieurs arcs, dans n'importe quel ordre <!ELEMENT graph (arc*,node,(node arc)*)> (!) Ex 2 : un élément peut contenir trois types de sous éléments (a, b et c), avec au moins un de chaque, dans un ordre quelconque??? Frédérik Bilhaut Université de Caen MI2 RADI 2004/
62 Les limites du formalisme DTD (2) Pas de notion d'extensibilité ou d'héritage Il est fréquent que plusieurs éléments partagent des propriétés communes Des solutions existent en DTD mais sont très primitives On ne dispose que des commentaires pour documenter le schéma La syntaxe DTD n'est pas un vocabulaire XML Substitution de «macr os» Pas de gestion des annotations Ex : balises chapter, section, appendix etc. possédant toutes un attribut id et un premier sous élément title Impossible de manipuler le contenu d'une DTD avec les outils XML! Etc. DTD est hérité de SGML et n'a pas suivi toutes les évolutions de XML Mais il reste encore très fréquemment utilisé Heureusement, la plupart de ses limites sont levées par XSchema Frédérik Bilhaut Université de Caen MI2 RADI 2004/
63 XPath & XSLT Frédérik Bilhaut Université de Caen MI2 RADI 2004/
64 Transformation d'un document XML Retour sur l'exemple des graphes <?xml version="1.0"?> <graph> <node id="1">n1</node> <node id="2">n2</node> <node id="3">n3</node> <arc from="1" to="2"/> <arc from="2" to="3"/> <arc from="3" to="1"/> </graph> N1 N1 N3 X N2 N3 N2 X X <?xml version="1.0"?> <html> <table> <tr> <th/> <th>n1</th> <th>n2</th> <th>n3</th> </tr> <tr> <th>n1</th> <td></td> <td>x</td> <td></td> </tr> [...] </table> </html> Frédérik Bilhaut Université de Caen MI2 RADI 2004/
65 Transformation d'un document XML Un exemple plus complexe, réalisable en XSLT pur <?xml version="1.0"?> <Airport lat=" " lon=" " ident="lfrk"> <Runway length=" "> <ILS frequency="110.95"> [...] </ILS> </Runway> [...] </Airport> Document XML décrivant un aérodrome (schéma spécifique) Carte au format SVG ( OACI) Frédérik Bilhaut Université de Caen MI2 RADI 2004/
66 Transformation d'arbres La transformation d'arbres est une opération très courante : Pour exprimer les mêmes données sous un autre format ( équivalent) Pour exprimer les données sous un format directement affichable Ex : ne garder que les noeuds X ayant une propriété Y Ajouter des données «nouvelles» (même format ou par compos ition) Ex : DocBook HTML, GraphML SVG Pour sélectionner une partie de données Ex : OpenOffice WordML, GraphML GXL Ex : table des matières, index, etc. Deux façons de procéder : Impérative : programme utilisant un parseur et une API de génération Déclarative : utilisation d'un formalisme permettant de décrire les transformations à effectuer + moteur adéquat Ex : XSLT, XQuery, STX,... Frédérik Bilhaut Université de Caen MI2 RADI 2004/
67 exstensible Stylesheet Language (XSL) Spécification du W3C qui regroupe trois langages distincts XSLT : transformations d'arbres XML XPath : spécification de sous arbres XSL FO : Mise en forme (Formatting Objects, non traité ici) Trois spécifications maintenant indépendantes XSLT : version 1.0 en 1999, version 2.0 actuellement en doc. de travail XPath : version 1.0 en 1990, version 2.0 actuellement en doc. de travail XSL FO : version, 1.0 en 2001 XPath XSLT XQuery XPointer Frédérik Bilhaut Université de Caen MI2 RADI 2004/
68 XPath Frédérik Bilhaut Université de Caen MI2 RADI 2004/
69 Introduction à XPath La langage XPath est utilisé pour désigner un ou plusieurs noeuds d'un arbre XML Syntaxe compacte et non XML Inclusion simple dans les attributs XML, les URI, etc. La syntaxe XPath définit des expressions L'évaluation d'une expression s'opère dans un contexte bien défini Le contexte est généralement un noeud du document En évaluant une expression, on peut obtenir différents types de valeurs : Un ensemble de noeuds (liste non ordonnée et non redondante) Une chaîne de caractères Une valeur booléenne Une valeur numérique Frédérik Bilhaut Université de Caen MI2 RADI 2004/
70 Quelques exemples basiques Une expression est généralement un chemin dans l'arbre XML Principe similaire aux chemins d'accès dans un système de fichiers Le contexte est analogue au répertoire courant ( noeud courant) Mais : une expression XPath peut désigner plusieurs noeuds, et peut n'en désigner aucun Chemins simples : Noms d'éléments séparés par des «/» /document/section/paragraph tout paragraphe fils d'une section fille de la racine (document) Chemins relatifs (au contexte courant) : paragraph ou./paragraph tout paragraphe fils du noeud courant section/paragraph tout paragraphe fils d'une section fille du noeud courant Frédérik Bilhaut Université de Caen MI2 RADI 2004/
71 Quelques exemples basiques (2) Chemins simples (suite) : Utilisation du joker section/* section//* tout noeud descendant d'une section fille du noeud courant Accès aux noeuds parents../paragraph tout noeud fils direct d'une section fille du noeud courant tout noeud paragraphe fils direct du noeud parent Chemins à profondeur variable //paragraph.//paragraph n'importe quel paragraphe (dans l'ensemble du document) n'importe quel paragraphe descendant du noeud courant /document/section//paragraph un paragraphe descendant d'une section Frédérik Bilhaut Université de Caen MI2 RADI 2004/
72 Axes de déplacements dans l'arbre Pour chaque étape d'un chemin on peut spécifier un «axe» Celui ci spécifie la «direction» du déplacement Par défaut, l'axe suivi est celui des noeuds fils Pour alléger la notation ce dernier peut être omis (cf. ex. précédents) XPath définit les axes suivants : L'axe des noeuds fils (child) : contient tous les fils directs L'axe des noeuds descendants (descendant) : tous les fils, directs ou non L'axe parent (parent) : le noeud parent s'il existe L'axe des ancêtres (ancestor) : tous les noeuds parents, directs ou non L'axe des frères successeurs (following sibling) : tous les frères suivants (dans l'ordre du document) L'axe des frères prédécesseurs (preceding sibling) : idem pour les frères précédents Frédérik Bilhaut Université de Caen MI2 RADI 2004/
73 Axes de déplacements dans l'arbre (2) XPath définit les axes suivants (suite) : L'axe des successeurs (following) : tous les noeuds suivants dans l'ordre du document, à l'exclusion de la descendance, des attributs et des espaces de noms L'axe des prédécesseurs (preceding) : idem pour les noeuds précédents L'axe des attributs (attribute) : contient les attributs de l'élément courant s'il s'agit d'un élément (vide sinon) L'axe réflexif (self) : contient le noeud courant L'axe descendant ou réflexif (descendant or self) : contient le noeud courant et ses descendants L'axe ancêtre ou réflexif (ancestor or self) : idem pour les ancêtres L'axe des espaces de noms (namespace) : espaces de noms déclarés s'il s'agit d'un élément (vide sinon) Frédérik Bilhaut Université de Caen MI2 RADI 2004/
74 Axes de déplacements dans l'arbre (3) Remarque 1 : partitionnement du document Les axes des ancêtres, des descendants, des prédécesseurs, des prédécesseurs et réflexif partitionnent le document (sauf attributs et espaces de noms) : ils ne se recouvrent pas les uns les autres et, à eux tous, contiennent tous les noeuds d'un document. Remarque 2 : à chaque axe est associé un type de noeud principal Axe des attributs : attribute Axe des espaces de noms : namespace Tous les autres axes : element Frédérik Bilhaut Université de Caen MI2 RADI 2004/
75 Syntaxe complète d'une étape de localisation Un chemin comporte une ou plusieurs étapes de localisation La syntaxe de chaque étape est : axe::test[prédicat ]...[prédicat ] L'élément axe spécifie le «sens» du déplacement 1 parent, ancestor, following,... L'élément test est une contrainte sur type ou le nom du noeud N Nom de balise ou d'attribut, ex : child::document, attribute::id, etc. Joker * : vrai pour tout noeud du type de noeud principal, ex : attribute::* Contrainte text() : noeud textuel Contrainte comment() : commentaire Contrainte processing instruction() : instruction de traitement Contrainte node() : vrai pour tout noeud Les prédicats permettent de procéder à des filtrages supplémentaires Ex : sur la position dans l'arbre, sur les attributs (pour un élément), etc. Les prédicats seront détaillés plus loin Frédérik Bilhaut Université de Caen MI2 RADI 2004/
76 Syntaxe abrégée des étapes de localisation Pour alléger la syntaxe des raccourcis syntaxiques sont définis : L'axe des fils est implicite : section/para child::section/child::para Accès aux attributs attribute::class Descendants : //para /descendant or self::node()/child::para Noeud courant :./para self::node()/child::para Noeud parent :../para /parent::node()/child::para Exemples : chapter//para text() noeuds textuels fils du noeud descendants para des enfants chapter du noeud courant tous les attributs du noeud contextuel../@lang l'attribut lang du parent du noeud courant Frédérik Bilhaut Université de Caen MI2 RADI 2004/
77 Expressions simples La syntaxe XPath reconnaît également des expressions plus «cla ssiques» : XPath gère différents types de données Expressions booléennes : x or (y and z) Expressions arithmétiques : x * (y z) Appels fonctionnels : f(x,y,z) Appel à des variables : $v Valeurs littérales : 37.5, 'chaîne de caractères', "autre chaîne" Numérique (réels), booléen, chaîne, liste de noeuds, etc. Le typage est dynamique et implicite, avec possibilité de conversion explicites Appels fonctionnels : La spécification définit un ensemble de fonctions utilitaires XPath 2.0 élargit cet ensemble et permet d'écrire ses propre fonctions Frédérik Bilhaut Université de Caen MI2 RADI 2004/
78 Expressions simples (2) Expressions booléennes : Expressions arithmétiques : Opérateurs : and, or Fonctions de base : not(), true(), false() Comparateurs : =,!=, <, >, <=, >= Opérateurs : +,, *, div, mod (priorités habituelles) Exemples de fonctions disponibles (cf. spéc. pour liste complète) Sur des ensembles de noeuds : last() : retourne la dimension contextuelle (i.e. nombre de noeuds sélectionnés par l'étape précédente) position() : position dans le contexte (dans la liste des noeuds sélectionnés par le test ou le prédicat précédent) count($ns) : nombre de noeuds dans la liste de noeuds $ns name($ns) : retourne le nom du noeud en première position dans $ns (il existe aussi local name() et namespace uri() pour gérer les espaces de noms) Frédérik Bilhaut Université de Caen MI2 RADI 2004/
79 Expressions simples (3) Exemples de fonctions disponibles (suite) : Sur les valeurs numériques : sum($nl) : retourne la somme de tous les objets présents dans $nl une fois convertis en numériques floor($v) : retourne le plus grand nombre entier inférieur à l'argument round($v) : retourne le nombre entier le plus proche de l'argument Sur les chaînes de caractères : concat($v1,...,$vn) : retourne le résultat de la concaténation des arguments starts with($s1,$s2) : retourne vrai si $s1 commence par la chaîne $s2 contains($s1,$s2) : retourne vrai si $s1 contient la chaîne $s2 Conversion de type (selon des règles bien définies, cf. spécification) : string($v) : retourne une chaîne représentant $v boolean($v) : retourne un booléen «éq uivalent» à $v (nombre 0, liste de noeuds non vide, chaîne de longueur non nulle, etc.) number($v) : retourne un équivalentn umérique de $v (si possible, NaN sinon) Frédérik Bilhaut Université de Caen MI2 RADI 2004/
80 Les prédicats Un prédicat ajoute une contrainte sur les noeuds sélectionnés à l'étape de localisation à laquelle il appartient 1 N Les prédicats sont appliqués dans l'ordre de leur apparition Rappel de la syntaxe d'une étape : axe::test[prédicat ]...[prédicat ] Le premier s'applique aux noeuds sélectionnés par le couple axe/test Chacun d'entre eux s'applique à l'ensemble sélectionné par les précédents Un prédicat est une expression XPath quelconque Son contexte d'évaluation sera le noeud auquel le prédicat est appliqué Elle est évaluée pour chaque noeud préalablement sélectionné Si le résultat est un nombre : le noeud est sélectionné si ce nombre est égal à sa position contextuelle Sinon, le résultat sera converti en valeur booléenne selon les règles de la fonction boolean (le noeud est sélectionné si cette valeur est vraie) Frédérik Bilhaut Université de Caen MI2 RADI 2004/
81 Les prédicats (2) Exemples : para[3] : désigne le troisième fils para du noeud courant para[last()] : le dernier fils para du noeud courant /doc/chapter[5]/section[2] : le 2 ème noeud section du 5ème chapter de doc para[@type='warning'] : les fils para du noeud courant qui ont un attribut type dont la valeur est "warning" ème para[@type='warning'][5] : le 5 fils para du noeud courant parmi ceux qui ont un attribut type dont la valeur est "warning" ème para[5][@type='warning'] : le 5 fils para du noeud courant à condition qu'il possède un attribut type dont la valeur est "warning" chapter[title='introduction'] : les fils chapter du noeud courant ayant au moins un fils title dont le contenu textuel est "Introduction" employee[@secretary : les fils employee du noeud courant qui possèdent simultanément les attributs secretary et assistant Frédérik Bilhaut Université de Caen MI2 RADI 2004/
82 Exercice : soit le document XML suivant... <?xml version="1.0" encoding="utf 8"?> <project basedir="." default="compile" name="mon projet"> <description> Ceci est un exemple valide de fichier "Ant". </description> <property name="options" value=" v"/> <path id="monclasspath"> <pathelement location="lib/xerces.jar"/> <pathelement location="lib/xalan.jar"/> </path> <target name="compile" depends="clean"> <javac srcdir="." encoding="iso "> <classpath refid="monclasspath"/> </javac> <rmic base="." classname="fr.unicaen.test.serviceimpl"> <classpath refid="monclasspath"/> </rmic> </target> <target name="documentation"> <ant antfile="build.xml" target="pdf" dir="doc/manual"/> <ant antfile="build.xml" target="javahelp" dir="doc/manual"/> </target> <target name="clean"> <delete> <fileset dir="." includes="**/*.class"/> <fileset dir="." includes="**/*.java~" defaultexcludes="no"/> </delete> </target> </project> Frédérik Bilhaut Université de Caen MI2 RADI 2004/
83 ... Formuler les «requêtes» XPath suivantes : (1) L'ensemble des noeuds target qui dépendent du but dont le nom est "clean" (2) Le noeud target par défaut (son nom est égal à l'attribut default du noeud project) (3) La taille en caractères de la description du projet (4) La valeur de la propriété "options" (5) Le nombre de buts dépendant d'autres buts (6) Tous les descendants du projet ayant un attribut srcdir différent de son basedir (7) La dernière tâche du but "documentation" (8) Toutes les tâches à effectuer pour le but "compile" (9) Le deuxième pathelement de chaque path (10) Les tâches javac qui contiennent au moins un classpath (11) Les tâches javac qui contiennent au moins deux classpath (12) Les tâches javac suivies d'une tâche rmic dont le classname débute par "fr.unicaen" Frédérik Bilhaut Université de Caen MI2 RADI 2004/
84 Solutions de l'exercice (1) 'clean')] (2) = (3) string length(/project/description) (4) = (5) (6) (7) = 'documentation']/*[last()] (8) = 'compile']/* (9) //path/pathelement[2] (10) //javac[classpath] (11) //javac[count(classpath) >= 2] (12) //javac[following::rmic[starts 'fr.unicaen')]] Frédérik Bilhaut Université de Caen MI2 RADI 2004/
85 XSLT Frédérik Bilhaut Université de Caen MI2 RADI 2004/
86 Introduction à XSLT Formalisme de représentation déclarative d'un procédé de transformation d'arbres XML C'est un vocabulaire XML Son espace de noms est : Recommandation du W3C : La spécification XSLT définit une syntaxe et sa sémantique Comme il est d'usage, le préfixe utilisé dans le présent document sera xsl Il existe de multiples implémentations ( dans tous les langages) Ex. en Java : Xalan ( Les grandes lignes d'une transformation XSLT : Analyse de la feuille XSLT Chargement du document source en mémoire (arbre DOM) Application des règles de transformation au document source Fabrication et sortie du document résultat Frédérik Bilhaut Université de Caen MI2 RADI 2004/
87 Introduction à XSLT (2) Une feuille XSLT est principalement composée d'en ensemble de modèles (ou templates) Chaque template est spécifie des règles de transformation applicables à un ou plusieurs types de noeuds Un template est composé de deux éléments principaux : Spécification des noeuds auxquels il s'applique (en général) Spécification du sous arbre XML à générer Expression XPath Éléments statiques (noeuds XML quelconques) Éléments dynamiques (noeuds XSLT) Application aux descendants des autres templates Création dynamique de noeuds XML à partir d'expressions XPath Le moteur se charge d'appliquer les templates autant que possible Les templates par défaut sont appliqués le cas échéant Frédérik Bilhaut Université de Caen MI2 RADI 2004/
88 Introduction à XSLT (3) Feuille XSLT T T Moteur XSLT T T T T Document Source T Document Résultat Frédérik Bilhaut Université de Caen MI2 RADI 2004/
89 Premier aperçu du langage XSLT <?xml version="1.0" encoding="utf 8"?> <xsl:stylesheet xmlns:xsl=" <xsl:template match="/document"> <html> <head> <title> <xsl:value of select="title/text()"/> </title> </head> <body> <xsl:apply templates/> </body> </html> </xsl:template> <xsl:template match="title"> <h1><xsl:apply templates/></h1> </xsl:template> <xsl:template match="paragraph"> <p><xsl:apply templates/></p> </xsl:template> [...] </xsl:stylesheet> Frédérik Bilhaut Université de Caen MI2 RADI 2004/
90 Exemple de transformation avec la feuille précédente <?xml version="1.0"?> <?xml version="1.0"?> <document> <title>le titre</title> <paragraph> Du texte du texte. Du texte du texte. Du texte du texte. Du texte du texte. </paragraph> <paragraph> Encore du texte. Encore du texte. Encore du texte. </paragraph> </document> <html> <head> <title>le titre</title> </head> <body> <h1>le titre</h1> <p> Du texte du texte. Du texte du texte. Du texte du texte. Du texte du texte. </p> <p> Encore du texte. Encore du texte. Encore du texte. </p> </body> </html> Frédérik Bilhaut Université de Caen MI2 RADI 2004/
91 Templates Une feuille de style contient une liste ordonnée de templates Un template = une règle de transformation, généralement applicable à un sous ensemble déterminé des noeuds du document source Ex : tous les éléments paragraph Chaque template définit un modèle de sous arbre Lorsqu'un template est applicable, il est instancié pour générer un fragment du document résultat Différents types de templates : Templates filtrants : définissent un modèle de noeud (expr. XPath) Templates nommés : pas de modèle de noeud mais un identifiant Appliqués aux noeuds du document source identifiés par cette expression Appliqués lorsqu'ils sont appelés explicitement par un autre template Templates implicites : appliqués lorsqu'aucun template filtrant n'est applicable Frédérik Bilhaut Université de Caen MI2 RADI 2004/
92 Contenu et instanciation d'un template Un template peut combiner : Des éléments XSL quelconques (dits statiques ou littéraux) N'appartiennent pas à l'espace de nom XSLT Seront reproduits à l'identique dans le document résultat D'autres éléments XSLT (dit dynamiques) Appartiennent à l'espace de nom XSLT Instructions pour la génération d'un fragment XML Interprétées par le moteur, elles seront remplacées par les noeuds résultants Exemples de contenu dynamique : Application des templates à tous ou certains descendants Appel d'un template nommé Fabrication de noeuds à partir des propriétés du noeud courant Instructions conditionnelles ou itératives Évaluation d'expressions XPath, création de pseudo variables, etc. Frédérik Bilhaut Université de Caen MI2 RADI 2004/
93 Processus de transformation Au départ, le moteur cherche un template s'appliquant à la racine du document et l'instancie Durant le parcours de l'arbre source, le moteur cherche un template à appliquer pour chaque noeud à traiter Ce noeud sera remplacé dans l'arbre résultant par le modèle spécifié une fois instancié Le noeud traité constitue le noeud courant au sein du template En général, celui ci demande le traitement de ses descendants Toute expression XPath contenue dans le template sera évaluée avec le noeud courant pour contexte Remarque : Les noeuds descendants ne seront traités que si le template le demande explicitement (instruction apply templates) Frédérik Bilhaut Université de Caen MI2 RADI 2004/
94 Instructions XSLT pour l'écriture de modèles : Application des templates aux descendants Contenu purement statique <xsl:template match="paragraph"> <p> Ce modèle est purement statique. </p> </xsl:template> Application des templates à tous les descendants : apply templates <xsl:template match="section"> <div class="section"> <xsl:apply templates/> </div> </xsl:template> Application des templates à certains descendants seulement <xsl:template match="section"> <div class="section"> <xsl:apply templates select="title paragraph"/> </div> </xsl:template> Frédérik Bilhaut Université de Caen MI2 RADI 2004/
95 Instructions XSLT pour l'écriture de modèles : Évaluation d'expressions XPath Génération de contenu par évaluation d'expressions XPath : value of <xsl:template match="title"> <h1> <xsl:value of select="../section/position()"/>. <xsl:value of select="text()"/> </h1> </xsl:template> <xsl:template match="document"> <html> <head> <title><xsl:value of select="title/text()"/></title> <meta name="author"><xsl:value of select="@author"/> </head> <body> <xsl:apply templates/> </body> </html> </xsl:template> Frédérik Bilhaut Université de Caen MI2 RADI 2004/
96 Instructions XSLT pour l'écriture de modèles : Évaluation d'expressions XPath (2) Évaluation d'expressions XPath dans des attributs : {expression} <xsl:template match="section"> <a name="sec{@id}"/> <h1 class="{@class}"> <xsl:value of select="title/text()"/> </h1> <xsl:apply templates/> </xsl:template> Une expression XPath entre accolades dans un attribut sera remplacée par le résultat de son évaluation relativement au noeud courant, converti en chaîne de caractères. Ne fonctionne que dans les éléments littéraux (statiques), et ne peut être utilisé dans les déclarations d'espaces de noms (xmlns). Remarque : Pour écrire des accolades littérales dans un attribut (i.e. ne devant pas être interprétées comme une expression XPath), il suffit de les doubler : <xyz abc="valeur littérale {{entre accolades}}"/> Frédérik Bilhaut Université de Caen MI2 RADI 2004/
97 Instructions XSLT pour l'écriture de modèles : Expressions conditionnelles Instructions conditionnelles : if <xsl:template match="paragraph"> <xsl:if test="@type='warning'"> <em>attention : </em> </xsl:if> <xsl:apply templates/> </xsl:template> Le test est une expression XPath quelconque. Le résultat de son évaluation sera converti en booléen selon les règles habituelles. Le fragment sera écrit seulement si la valeur obtenue est vraie. Frédérik Bilhaut Université de Caen MI2 RADI 2004/
98 Instructions XSLT pour l'écriture de modèles : Expressions conditionnelles (2) Instructions conditionnelles : choose/when/otherwise <xsl:template match="paragraph"> <p> <xsl:choose> <xsl:when test="@type='important'"> <font color="red"><xsl:apply templates/></font> </xsl:when> <xsl:when test="@type='note'"> <it><xsl:apply templates/></it> </xsl:when> <xsl:otherwise> <xsl:apply templates/> </xsl:otherwise> </xsl:choose> </p> </xsl:template> Frédérik Bilhaut Université de Caen MI2 RADI 2004/
99 Instructions XSLT pour l'écriture de modèles : Expressions conditionnelles (3) Remarque : on privilégiera autant que possible la multiplication des templates aux instructions conditionnelles. Pour l'exemple précédent : <xsl:template match="paragraph[@type='important']"> <p> <font color="red"><xsl:apply templates/></font> </p> </xsl:template> <xsl:template match="paragraph[@type='note']"> <p> <it><xsl:apply templates/></it> </p> </xsl:template> <xsl:template match="paragraph"> <p> <xsl:apply templates/> </p> </xsl:template> Frédérik Bilhaut Université de Caen MI2 RADI 2004/
100 Instructions XSLT pour l'écriture de modèles : Structures itératives XSLT est essentiellement déclaratif : le moteur se charge d'appliquer des règles «statiques». Il est toutefois possible de conduire l'itération explicitement : <xsl:template match="liste clients"> <table> <xsl:for each select="./client"> <tr> <td><xsl:value of select="@prénom"/></td> <td><xsl:value of select="@nom"/></td> </tr> </xsl:for each> </table> </xsl:template> Remarque : comme pour les expressions conditionnelles, on exploitera autant que possible l'approche déclarative, en n'utilisant les structures itératives qu'en dernier recours (rare). Frédérik Bilhaut Université de Caen MI2 RADI 2004/
101 Instructions XSLT pour l'écriture de modèles : Création dynamique d'éléments Il est possible de créer dynamiquement des éléments de l'arbre résultat. L'instruction element permet de créer un élément, et l'instruction attribute des attributs. <xsl:template match="..."> <xsl:element name="concat('toto', position())" namespace="..."> <xsl:attribute name="'attr1'"> <xsl:value of select="titi/@tutu"/> </xsl:attribute> <tata> <xsl:apply templates/> </tata> </xsl:template> Ces instructions sont utiles si le nom d'un élément et/ou d'un attribut doivent être calculés : tout expression XPath retournant un nom valide peut être utilisée dans l'attribut name. Pour la valeur des attributs, c'est aussi une alternative à l'utilisation des accolades. Remarque : les noeuds attributs doivent impérativement arriver avant tout noeud générant un fils de l'élément créé. Frédérik Bilhaut Université de Caen MI2 RADI 2004/
102 Instructions XSLT pour l'écriture de modèles : Copie du noeud courant L'instruction copy permet de copier le noeud courant. Ni les noeuds fils (ni les attributs le cas échéant) ne sont copiés. <xsl:template match="paragraph"> <xsl:copy> <xsl:apply templates/> </xsl:copy> </xsl:template> Pour que tout élément soit systématiquement copié à l'identique quand aucun autre template ne s'applique, on peut définir le template suivant : <xsl:template match="@* node()"> <xsl:copy> <xsl:apply templates select="@* node()"/> </xsl:copy> </xsl:template> Ce template peut aussi être nommé (et son apply templates remplacé par un call template) pour n'être appelé qu'en cas de besoin. Frédérik Bilhaut Université de Caen MI2 RADI 2004/
103 Instructions XSLT pour l'écriture de modèles : Tris Par défaut, les noeuds sont traités dans l'ordre du document. Il est possible d'utiliser l'instruction sort pour spécifier un ordre. <xsl:template match="liste clients"> <table> <xsl:apply templates select="client"> <xsl:sort select="@nom" order="ascending"/> <xsl:sort data type="text" select="@prénom"> </xsl:apply templates> </table> </xsl:template> Cette instruction peut aussi être utilisée dans un for each. Les critères de tri, spécifiés dans l'attribut select par une expression XPath dont le contexte est le noeud trié, sont appliqués dans l'ordre. L'attribut data type permet de spécifier le type de donnée et donc de tri (numérique ou alphanumérique). L'attribut order permet de spécifier le sens. L'attribut lang peut être utiliser pour spécifier la langue (ex: «f r», «en», et c.). Frédérik Bilhaut Université de Caen MI2 RADI 2004/
104 Instructions XSLT pour l'écriture de modèles : Nombres formatés L'instruction number facilite l'écriture de valeurs numériques, en particulier pour la numérotation. La valeur peut être spécifiée dans l'attribut value : <xsl:template match="title"> <h1> <xsl:number value="../section/position()" format="1. "/> <xsl:value of select="text()"/> </h1> </xsl:template> Elle est plus utile avec l'attribut count, qui permet de compter des noeuds pour générer une numérotation complexe. L'attribut level permet de spécifier si on compte uniquement les frères ou également les ancêtres. <xsl:template match="title"> <h1> <xsl:number level="multiple" format="1.1 " count="chapter section subsection"/> </h1> <xsl:apply templates/> </xsl:template> Frédérik Bilhaut Université de Caen MI2 RADI 2004/
105 Instructions XSLT pour l'écriture de modèles : Création de commentaires et d'instructions de traitement L'instruction comment permet de créer un commentaire, et l'instruction processing instruction des instructions de traitement. <xsl:template match="/"> <xsl:processing instruction name="xml stylsheet"> type="text/css" href="style.css" </xsl:processing instruction> <xsl:comment> Cet document a été généré par une feuille XSLT </xsl:comment> <root> <xsl:apply templates/> </root> </xsl:template> Frédérik Bilhaut Université de Caen MI2 RADI 2004/
106 Fonctions XPath supplémentaires La fonction current() permet d'accéder au noeud courant (i.e. en train d'être transformé) quel que soit le contexte XPath La fonction generate id() permet de générer automatiquement un identifiant unique pour un noeud donné Ex : /document//section[@id = current()/@idref] Ex : <toto id="{generate id(.)}"/> La fonction document() permet d'accéder à l'arbre contenu dans un autre document XML Prend en paramètre une URI absolue ou relative au document source Retourne la racine du document pointé Ex : document('resources/toto.xml')//tutu[@x=42] Frédérik Bilhaut Université de Caen MI2 RADI 2004/
107 Gestion des caractères «blancs» Texte littéral explicite Par défaut, les fragments textuels «b lancs» sont ignorés dans les modèles et dans le document source Pour le document source, paramétrage possible avec xsl:strip space et xsl:preserve space (cf. spécification) L'élément xsl:text permet de délimiter explicitement un fragment textuel en préservant les blancs <xsl:template match="..."> <toto> Texte </toto> </xsl:template> <xsl:template match="..."> <toto> <xsl:text> Texte </xsl:text> </toto> </xsl:template> <toto> Texte </toto> <toto> Texte </toto> Frédérik Bilhaut Université de Caen MI2 RADI 2004/
108 Modes Au sein d'une même feuille, on peut vouloir traiter les mêmes éléments de plusieurs façons différentes Par exemple, pour des éléments section, deux cas possibles : Création du marquage typographique de la section, de son titre, etc. Création d'une entrée dans la table des matières XSLT intègre la notion de mode : La recherche des templates applicables s'effectue dans un mode donné Seuls les templates du mode courant seront sélectionnés Tout template filtrant peut spécifier un mode dans lequel il s'applique Si aucun mode n'est spécifié, le mode par défaut s'applique Frédérik Bilhaut Université de Caen MI2 RADI 2004/
109 Modes (2) Pour définir le mode d'un template : <xsl:template match="..." mode="m"> [...] </xsl:template> Pour définir le mode courant : <xsl:apply templates mode="m"/> <xsl:template match="document"> <body> <b>table des matières :</b> <ol><xsl:apply templates mode="toc"/></ol> <hr/> <xsl:apply templates/> </body> </xsl:template> <xsl:template match="section"> <h1><xsl:value of select="title/text()"/></h1> <xsl:apply templates/> </xsl:template> <xsl:template match="section" mode="toc"> <li><xsl:value of select="title/text()"/></li> </xsl:template> Frédérik Bilhaut Université de Caen MI2 RADI 2004/
110 Templates implicites Racine et éléments : descente récursive <xsl:template match="* /"> <xsl:apply templates/> </xsl:template> Quand un mode est spécifié, il est transmis récursivement <xsl:template match="* /" mode="m"> <xsl:apply templates mode="m"/> </xsl:template> Texte et attributs : copie du contenu textuel <xsl:template <xsl:value of select="."/> </xsl:template> Commentaires et instructions de traitement sont ignorés par défaut <xsl:template match="processing instruction() comment()"> </xsl:template> Frédérik Bilhaut Université de Caen MI2 RADI 2004/
111 Templates nommés Les templates nommés ne définissent pas de pattern Leur nom est spécifié par l'attribut name de l'élément template Ils ne sont jamais appelés par le moteur Ils doivent au contraire être appelés explicitement avec call template Ils réalisent généralement des tâches génériques pouvant s'appliquer à des éléments divers Leur contexte (ou noeud courant) est celui du template appelant <xsl:template name="toto"> <xyz><xsl:value of </xsl:template> <xsl:template match="..."> <xsl:call template name="toto"/> <xsl:apply templates select="..."/> </xsl:template> Frédérik Bilhaut Université de Caen MI2 RADI 2004/
112 Paramétrage d'un template Un template peut déclarer un ou plusieurs paramètres La valeur par défaut peut se trouver dans le contenu (fragment XSLT) Ou dans l'attribut select (expression XPath) <xsl:param name="nom" select="valeur par défaut"/> Dans le template, les paramètres sont accessibles sous forme de variables XPath <xsl:param name="nom">valeur par défaut</xsl:param> <xsl:value of select="$p * 3"/> (par exemple) Les templates appelants pourront éventuellement attribuer des valeurs aux paramètres Fonctionne avec xsl:apply templates et xsl:call template La valeur est spécifiée comme pour xsl:param (ordre indifférent) : <xsl:with param name="nom">valeur xslt</with xsl:param> <xsl:with param name="nom" select="valeur xpath"/> Frédérik Bilhaut Université de Caen MI2 RADI 2004/
113 Paramétrage d'un template (2) <xsl:template name="draw circle"> <xsl:param name="x">0</xsl:param> <xsl:param name="y">0</xsl:param> <xsl:param name="r">100</xsl:param> <xsl:param name="w">2</xsl:param> <svg:circle x="{$x}" y="{$y}" radius="{$r}" style="stroke width:{$w}"/> </xsl:template> <xsl:template match="gml:node"> <xsl:call template name="draw circle"> <xsl:with param name="x" <xsl:with param name="y" </xsl:call template> <xsl:if <xsl:call template name="draw circle"> <xsl:with param name="x" <xsl:with param name="y" <xsl:with param name="w" select="5"/> <xsl:with param name="r" select="110"/> </xsl:call template> </xsl:if> </xsl:template> Frédérik Bilhaut Université de Caen MI2 RADI 2004/
114 Paramétrage d'une feuille XSLT Comme un template, la feuille de style elle même peut prendre des paramètres Ils sont déclarés avec les mêmes balises, en tant que filles directes du noeud xsl:stylesheet Leur valeur peut être spécifiée au lancement du moteur XSLT En ligne de commande Via l'api du moteur de transformations <?xml version="1.0" encoding="utf 8"?> <xsl:stylesheet xmlns:xsl=" <xsl:param name="baseref"> <xsl:template match="image"> <img </xsl:template> </xsl:stylesheet> Frédérik Bilhaut Université de Caen MI2 RADI 2004/
115 Variables XSLT donne la possibilité de définir des (in)variables Globales ou internes à un template (comme les paramètres) Utiles pour stocker le résultat d'un calcul qui sera utilisé plusieurs fois Ne correspondent pas aux variables des langages de programmation car leur valeur ne peut pas être modifiée Définies avec l'élément xsl:variable dont le fonctionnement est identique à celui de xsl:param Elles sont accessibles sous la forme de variables XPath <xsl:template match="xxx"> <xsl:variable name="count" select="count(//*)"/> <p> Nombre de noeuds : <xsl:value of select="$count"/> </p> <xsl:if test="$count > 1000"> <p> C'était une bonne idée d'utiliser une variable!</p> </xsl:if> </xsl:template> Frédérik Bilhaut Université de Caen MI2 RADI 2004/
116 Combinaison de feuilles XSLT Il est possible d'exploiter les templates d'une autre feuille XSLT Deux mécanismes sont disponibles : xsl:include : inclusion en lieu et place d'une autre feuille xsl:import : import d'une autre feuille avec possibilité de surcharge Tous deux demandent un paramètre href qui spécifie l'uri de la feuille cible relativement à la feuille appelante Les noeuds include ou import doivent obligatoirement être fils directs du noeud stylesheet Mécanisme d'inclusion : Les templates de la feuille cible sont insérés en lieu et place de l'appel à l'instruction include Tout se passe comme si ses templates appartenaient à la feuille appelante Les instructions d'inclusion peuvent se trouver à n'importe position dans le noeud stylesheet Frédérik Bilhaut Université de Caen MI2 RADI 2004/
117 Combinaison de feuilles XSLT (2) Mécanisme d'import : Semblable à l'inclusion mais gère la surcharge de templates : Les templates de la feuille cible sont importés dans la feuille appelante mais peuvent être surchargés par les templates locaux Ils peuvent également être surchargés par les templates d'une autre feuille importée après elle Plus généralement, la priorité d'un template est d'autant plus faible que sa profondeur d'import est grande (i.e. sa profondeur dans l'arbre des imports) Exemple : si la feuille A importe B puis C, B importe D, C importe E, alors les priorités par ordre décroissant sont : A, C, E, B, D L'élément import doit nécessairement apparaître avant tout autre noeud fils du noeud stylesheet L'instruction xsl:apply imports permet d'appeler explicitement le template surchargé Frédérik Bilhaut Université de Caen MI2 RADI 2004/
118 Résolution des conflits Quand plusieurs templates sont applicables à un même noeud, un jeu de priorités s'applique La priorité d'un template est définie par une valeur numérique Elle peut être spécifiée explicitement par l'attribut priority Les règles de résolution des conflits sont : La priorité est donnée aux templates de plus faible profondeur d'import Si une ambiguïté persiste, les priorités s'appliquent. Si la priorité d'un template n'est pas spécifiée explicitement, sa priorité par défaut est : 0 si le pattern est de la forme (child attribute)::name (c.à.d 0,25 si le pattern est de la forme (child attribute)::namespace:* 0,5 si le pattern est un test sur le type de noeud : text(), comment(), etc. 0,5 dans tous les autres cas Si une ambiguïté persiste encore, c'est en principe une erreur Le moteur peut continuer en choisissant le dernier template trouvé Frédérik Bilhaut Université de Caen MI2 RADI 2004/
119 Spécification des paramètres de sortie L'élément output permet de spécifier divers paramètres sur la forme du document résultat Il doit être fils direct du noeud stylesheet Les principaux attributs autorisés sont : method : html, xml ou text. Par exemple, la méthode html empêche l'écriture de balises de fin pour les éléments vides doctype public : déclaration du DOCTYPE : d'identificateur public doctype system : déclaration du DOCTYPE : chemin vers la DTD encoding : encoding à utiliser dans le document résultat omit xml declaration : empêche l'écriture du prologue (yes ou no) indent : spécifie si la sortie doit être indentée (yes ou no) Rq : tous les attributs ne sont pas applicables à toutes les méthodes de sortie. Voir la spécification pour plus de détails. Frédérik Bilhaut Université de Caen MI2 RADI 2004/
120 Envoi de messages et déclenchement d'erreurs On peut demander au moteur XSLT l'écriture de messages En cas d'erreur irrécupérable on peut demander l'interruption du processus de transformation Sortie sur la console, boîte de dialogue, fichiers de log, etc. Ex : <xsl:message>information ou avertissement</xsl:message> Ex : <xsl:message terminate="yes">erreur fatale!</xsl:message> Exemple d'utilisation avec system property : <xsl:template match="xxx"> <xsl:if test="system property(xsl:version) <= 2.0"> <xsl:message terminate="yes"> Cette feuille nécessite un moteur XSLT 2.0 ou plus. </xsl:message> </xsl:if> [...] </xsl:template> Frédérik Bilhaut Université de Caen MI2 RADI 2004/
121 Quelques détails sur le fonctionnement des espaces de noms L'espace de nom réservé à XSLT distingue sans ambiguïté les instructions XSLT de tous les autres noeuds (littéraux) Le cas échéant, les autres namespaces utilisés dans la feuille seront automatiquement déclarés dans le document résultat Il est possible de fabriquer des noeuds XSLT au sein même d'une feuille XSLT : <xsl:stylesheet version="1.0" xmlns:axsl=" xmlns:xsl=" <xsl:namespace alias stylesheet prefix="axsl" result prefix="xsl"/> <xsl:template match="/"> <axsl:stylesheet> <xsl:apply templates/> </axsl:stylesheet> </xsl:template> </xsl:stylesheet> Frédérik Bilhaut Université de Caen MI2 RADI 2004/
122 Appliquer une feuille de style à document Les modalités précises d'utilisation sont spécifiques à chaque moteur XSLT La plupart sont disponibles en ligne de commande ou sous forme d'api (souvent les deux) Xalan, Saxon, XSLTProc, MSXML, Sablotron, etc. Exemple en shell : $ xsltproc feuille.xsl input.xml o output.xml Exemple Xalan : $ java jar xalan.jar XSL feuille.xsl... Ils permettent quasiment toujours de spécifier des valeurs pour les paramètres de la feuille de style Ex : $ xsltproc param name value feuille.xsl input.xml... Frédérik Bilhaut Université de Caen MI2 RADI 2004/
123 Lier un document XML à une feuille de style XSLT Comme pour une feuille CSS, l'instruction de traitement xml stylesheet permet d'associer une feuille XSLT à un document Recommandation W3C : stylesheet/ Le type spécifié doit être xml/text Un outil intégrant un moteur XSLT pourra transformer le document avant affichage Le vocabulaire XML utilisé dans le document devra bien sûr être visualisable par cet outil (ex : XHTML, MathML, SVG,...) Exemple : affichage dans un navigateur (Mozilla, IE,...) <?xml version="1.0" encoding="utf 8"?> <?xml:stylesheet type="text/xml" href="feuille.xsl"?> <document> [...] </document> Frédérik Bilhaut Université de Caen MI2 RADI 2004/
124 <FIN/> Frédérik Bilhaut Université de Caen MI2 RADI 2004/
XML par la pratique Bases indispensables, concepts et cas pratiques (3ième édition)
Présentation du langage XML 1. De SGML à XML 17 2. Les bases de XML 18 2.1 Rappel sur HTML 18 2.2 Votre premier document XML 19 2.3 Les avantages de XML 21 3. La syntaxe XML 21 3.1 La première ligne du
Langage HTML (2 partie) <HyperText Markup Language> <tv>lt La Salle Avignon BTS IRIS</tv>
Langage HTML (2 partie) «Je n'ai fait que prendre le principe d - hypertexte et le relier au principe du TCP et du DNS et alors boum! ce fut le World Wide Web!» Tim Berners-Lee
Thierry BOULANGER. par la pratique. Bases indispensables Concepts et cas pratiques XML. 3 ième édition. Nouvelle édition
XML par la pratique Bases indispensables Concepts et cas pratiques 3 ième édition Nouvelle édition Thierry BOULANGER Table des matières 1 Les éléments à télécharger sont disponibles à l'adresse suivante
Faculté de Génie Chaire industrielle en infrastructures de communication. La technologie XML. Wajdi Elleuch
Faculté de Génie Chaire industrielle en infrastructures de communication La technologie XML Wajdi Elleuch Octobre 2004 SOMMAIRE Content : - XML : Définition - XML : Solution pour des applications réparties
Module BDWEB. Maîtrise d informatique Cours 9 - Xquery. Anne Doucet. [email protected]
Module BDWEB Maîtrise d informatique Cours 9 - Xquery Anne Doucet [email protected] 1 Langages de requêtes XML Concepts des langages de requêtes XML motivations caractéristiques Navigation dans les documents
XML : documents et outils
XML : documents et outils Pierre-Alain Reynier Université de Provence [email protected] http://www.lif.univ-mrs.fr/~preynier/xml Cours adapté du travail de Rémi Eyraud, Silvano Dal Zilio...
XML, PMML, SOAP. Rapport. EPITA SCIA Promo 2004 16 janvier 2003. Julien Lemoine Alexandre Thibault Nicolas Wiest-Million
XML, PMML, SOAP Rapport EPITA SCIA Promo 2004 16 janvier 2003 Julien Lemoine Alexandre Thibault Nicolas Wiest-Million i TABLE DES MATIÈRES Table des matières 1 XML 1 1.1 Présentation de XML.................................
Gestion Électronique de Documents et XML. Master 2 TSM
Gestion Électronique de Documents et XML Master 2 TSM I n t r o d u c t i o n Les formats de données F o r m a t s d e d o n n é e Format de donnée : manière de représenter des informations dans un document
XML et Bases de données. Les bases de données XML natives.
XML et Bases de données. Les bases de données XML natives. Introduction. Une définition de l'expression «Base de données XML Native» : Une base de données XML native définit un modèle (logique) de document
Autour du web. Une introduction technique Première partie : HTML. Georges-André SILBER Centre de recherche en informatique MINES ParisTech
Autour du web Une introduction technique Première partie : HTML Georges-André SILBER Centre de recherche en informatique MINES ParisTech [email protected] http://www.cri.ensmp.fr/people/silber/cours/2010/web
Chapitre IX. L intégration de données. Les entrepôts de données (Data Warehouses) Motivation. Le problème
Chapitre IX L intégration de données Le problème De façon très générale, le problème de l intégration de données (data integration) est de permettre un accès cohérent à des données d origine, de structuration
Gestion documentaire (Extraits du CCI version 1.2)
Standard du gouvernement du Québec sur les ressources informationnelles PROJET Gestion documentaire (Extraits du CCI version 1.2) 12 juillet 2004 SGQRI 000[-00] Nom du [ : Nom de la partie] Projet, version
Evolution et architecture des systèmes d'information, de l'internet. Impact sur les IDS. IDS2014, Nailloux 26-28/05/2014 pascal.dayre@enseeiht.
Evolution et architecture des systèmes d'information, de l'internet. Impact sur les IDS IDS2014, Nailloux 26-28/05/2014 [email protected] 1 MVC et le web 27/05/14 2 L'évolution des systèmes informatiques
Qu'est-ce que XML? XML : Extensible Markup Language. Exemple de document SGML SGML
XML : Extensible Markup Language SGML Une introduction (1) http://kiwi.emse.fr/3a/dn.html Ph. Jaillon / J.J. Girardot J.J. GIRARDOT - EMSE 10/2004 1 Standard Generalized Markup Language Norme ISO-8879
INTERNET est un RESEAU D ORDINATEURS RELIES ENTRE EUX A L ECHELLE PLANETAIRE. Internet : interconnexion de réseaux (anglais : net = réseau)
CS WEB Ch 1 Introduction I. INTRODUCTION... 1 A. INTERNET INTERCONNEXION DE RESEAUX... 1 B. LE «WEB» LA TOILE, INTERCONNEXION DE SITES WEB... 2 C. L URL : LOCALISER DES RESSOURCES SUR L INTERNET... 2 D.
OASIS www.oasis-open.org/committees/xacml/docs/docs.shtml Date de publication
Statut du Committee Working Draft document Titre XACML Language Proposal, version 0.8 (XACML : XML Access Control Markup Language) Langage de balisage du contrôle d'accès Mot clé Attestation et sécurité
Programmation des Applications Réparties. Parsers XML DOM et SAX
Programmation des Applications Réparties Parsers XML DOM et SAX Luiz Angelo Steffenel [email protected] Steffenel Programmation des Applications Réparties Master M1-2007-2008 1 Comment
Document Object Model (DOM)
Document Object Model (DOM) Jean-Claude Charr Maître de conférences IUT de Belfort Montbéliard Université de Franche Comté Description générale Définit un standard pour accéder aux documents structurés
Plan. Exemple: Application bancaire. Introduction. OCL Object Constraint Language Le langage de contraintes d'uml
OCL Object Constraint Language Le langage de contraintes d'uml Plan 1. Introduction 2. Les principaux concepts d'ocl Object Constraint Language 1 Object Constraint Language 2 Exemple: une application bancaire
Programmation Internet Cours 4
Programmation Internet Cours 4 Kim Nguy ên http://www.lri.fr/~kn 17 octobre 2011 1 / 23 Plan 1. Système d exploitation 2. Réseau et Internet 3. Web 3.1 Internet et ses services 3.1 Fonctionnement du Web
Faculté Polytechnique de Mons. Le processus d Extraction, Transformation et Load (ETL) dans des entrepôts de données XML
Faculté Polytechnique de Mons Johnny TSHEKE SHELE Le processus d Extraction, Transformation et Load (ETL) dans des entrepôts de données XML Travail de fin d études présenté en vue de l obtention du grade
RapidMiner. Data Mining. 1 Introduction. 2 Prise en main. Master Maths Finances 2010/2011. 1.1 Présentation. 1.2 Ressources
Master Maths Finances 2010/2011 Data Mining janvier 2011 RapidMiner 1 Introduction 1.1 Présentation RapidMiner est un logiciel open source et gratuit dédié au data mining. Il contient de nombreux outils
Programmation Web. Madalina Croitoru IUT Montpellier
Programmation Web Madalina Croitoru IUT Montpellier Organisation du cours 4 semaines 4 ½ h / semaine: 2heures cours 3 ½ heures TP Notation: continue interrogation cours + rendu à la fin de chaque séance
Systèmes d'informations historique et mutations
Systèmes d'informations historique et mutations Christophe Turbout SAIC-CERTIC Université de Caen Basse-Normandie Systèmes d'informations : Historique et mutations - Christophe Turbout SAIC-CERTIC UCBN
Livre Blanc WebSphere Transcoding Publisher
Livre Blanc WebSphere Transcoding Publisher Introduction WebSphere Transcoding Publisher vous permet d'offrir aux utilisateurs des informations Web adaptées à leurs besoins. Il vous permet, par exemple,
Les services usuels de l Internet
Les services usuels de l Internet Services principaux (applications) disponibles sur l Internet Courrier électronique (mail) - protocole SMTP (Simple Mail Transfer Protocol) inclut maintenant tous types
Introduction aux concepts d ez Publish
Introduction aux concepts d ez Publish Tutoriel rédigé par Bergfrid Skaara. Traduit de l Anglais par Benjamin Lemoine Mercredi 30 Janvier 2008 Sommaire Concepts d ez Publish... 3 Système de Gestion de
Gestion collaborative de documents
Gestion collaborative de documents ANT box, le logiciel qui simplifie votre GED Les organisations (entreprises, collectivités, associations...) génèrent chaque jour des millions de documents, e-mails,
Les outils de création de sites web
Tuto 1ère séance - p1 Les outils de création de sites web Sources : Réalisez votre site web avec HTML5 et CSS3 de Mathieu Nebra (Edition Le Livre du Zéro) site fr.openclassrooms.com (anciennement «site
Outils logiciels pour l'ingénierie documentaire
Ingénierie Documentaire Outils logiciels pour l'ingénierie documentaire http://doc.crzt.fr STÉPHANE CROZAT 16 octobre 2014 Table des matières I - L'IDE XML Oxygen 5 A. Fichiers XML...5 B. Schémas XML...6
HMTL. Exemple de fichier HTML. Structure d un document HTML. Exemple de fichier HTML. Balises HTML. IFT1147 Programmation Serveur Web avec PHP
IFT1147 Programmation Serveur Web avec PHP Un bref survol du langage HTML HMTL HTML: Hypertext Markup Language HTML est essentiellement un langage de description de structure de document (par exemple titre,
SII Stage d informatique pour l ingénieur
SII Stage d informatique pour l ingénieur Création d un site Web École nationale supérieure de techniques avancées SII Stage d informatique pour l ingénieur 1 / 15 L informatique et le temps qui passe...
4. SERVICES WEB REST 46
4. SERVICES WEB REST 46 REST REST acronyme de REpresentational State Transfert Concept introduit en 2000 dans la thèse de Roy FIELDING Est un style d architecture inspiré de l architecture WEB En 2010,
Université de Bangui. Modélisons en UML
Université de Bangui CRM Modélisons en UML Ce cours a été possible grâce à l initiative d Apollinaire MOLAYE qui m a contacté pour vous faire bénéficier de mes connaissances en nouvelles technologies et
L'essentiel de XML. Cours XML. Olivier Carton
L'essentiel de XML Cours XML Olivier Carton L'essentiel de XML: Cours XML Olivier Carton Version du 18/12/2014 Copyright 2007-2014 Olivier Carton Résumé Support du cours XML en M2 Pro à l'université Paris
Cahier Technique. «Développer une application intranet pour la gestion des stages des étudiants» Antonin AILLET. Remi DEVES
Antonin AILLET Remi DEVES Thibaut AZZOPARDI 2 ème année de DUT Informatique Cahier Technique «Développer une application intranet pour la gestion des stages des étudiants» Encadré par Didier BOULLE Année
Master d Informatique Corrigé du partiel novembre 2010
Universités d Aix-Marseille I & II Technologies XML Master d Informatique Corrigé du partiel novembre 2010 Année 2010-11 Documents autorisés Exercice 1 : Documents XML et Applications XML (4 points) Georges,
Auguria_PCM Product & Combination Manager
Auguria_PCM Product & Combination Manager Guide utilisateurs v1.5 Auguria 9, rue Alfred Kastler 44300 NANTES FRANCE +33251135012 [email protected] Plan 1 Description générale du module...3 2 Mise en
! Text Encoding Initiative
Format XML: suite! le contenu d un élément est la concaténation de! texte! et d éléments (imbrication)! => structure arborescente! pas de chevauchement de balises! => exemple : une analyse syntagmatique
PROSOP : un système de gestion de bases de données prosopographiques
PROSOP : un système de gestion de bases de données prosopographiques Introduction : Ce document présente l outil en développement PROSOP qui permet la gestion d'une base de donnée prosopographique de la
LANGAGUE JAVA. Public Développeurs souhaitant étendre leur panel de langages de programmation
ING 01 LANGAGUE JAVA Durée : 21 heures 1090 HT / jour Dates : à définir en 2012 Concevoir et développer des programmes en langage Java Comprendre le fonctionnement de la machine virtuelle S approprier
Expression des contraintes. OCL : Object C o n t r a i n t L a n g u a g e
P r o b l é m a t i q u e OCL : O b j e c t C o n s t r a i n t L a n g u a g e Le langage de contraintes d UML Les différents diagrammes d UML permettent d exprimer certaines contraintes graphiquement
Internet. DNS World Wide Web. Divers. Mécanismes de base Exécution d'applications sur le web. Proxy, fire-wall
Internet DNS World Wide Web Mécanismes de base Exécution d'applications sur le web Divers Proxy, fire-wall 1 Les services usuels de l Internet Services principaux (applications) disponibles sur l Internet
Fichiers, dossiers, enregistrer et arborescence
Fichiers, dossiers, enregistrer et arborescence La notion de fichiers Dans les années 1960, les supports magnétiques (disques durs, disquettes,...) étaient encore très chers. D'autres méthodes ont été
Formation HTML / CSS. ar dionoea
Formation HTML / CSS ar dionoea le HTML Hyper Text Markup Language langage descriptif composé de balises interprété par le navigateur page HTML = simple fichier texte (bloc notes, vim,...) les déclarations
XML et DOM. Matériel de cours. mars 1999 version 0.3 dernière modification: 24/3/99
XML XML et DOM Matériel de cours mars 1999 version 0.3 dernière modification: 24/3/99 http://tecfa.unige.ch/guides/xml/slides/xml.html - (moche!) http://tecfa.unige.ch/guides/xml/slides/xml.pdf - (lecture
basée sur le cours de Bertrand Legal, maître de conférences à l ENSEIRB www.enseirb.fr/~legal Olivier Augereau Formation UML
basée sur le cours de Bertrand Legal, maître de conférences à l ENSEIRB www.enseirb.fr/~legal Olivier Augereau Formation UML http://olivier-augereau.com Sommaire Introduction I) Les bases II) Les diagrammes
STAGE IREM 0- Premiers pas en Python
Université de Bordeaux 16-18 Février 2014/2015 STAGE IREM 0- Premiers pas en Python IREM de Bordeaux Affectation et expressions Le langage python permet tout d abord de faire des calculs. On peut évaluer
Travaux pratiques avec RapidMiner
Travaux pratiques avec RapidMiner Master Informatique de Paris 6 Spécialité IAD Parcours EDOW Module Algorithmes pour la Fouille de Données Janvier 2012 Prise en main Généralités RapidMiner est un logiciel
CRÉER, ROUTER ET GÉRER UNE NEWSLETTER, UN E-MAILING
CRÉER, ROUTER ET GÉRER UNE NEWSLETTER, UN E-MAILING Durée : 3J / 21H Formateur : Consultant expert en PAO et Web-marketing. Groupe de : 4 max Formation au web marketing Objectifs : Mettre en oeuvre des
Créer une base de données vidéo sans programmation (avec Drupal)
Créer une base de données vidéo sans programmation (avec Drupal) 10.10.2013 Nicolas Bugnon ([email protected]) Centre de documentation Alliance Sud www.alliancesud.ch Résultat de l atelier
HMI target Visu / PLC HMI. Pour réaliser une interface homme machine avec PLC control
HMI target Visu / PLC HMI Pour réaliser une interface homme machine avec PLC control VERSION : 1.4 / PH DATE : 5 Novembre 2014 Sommaire Ce manuel explique de manière pratique les étapes successives pour
PRODIGE V3. Manuel utilisateurs. Consultation des métadonnées
PRODIGE V3 Manuel utilisateurs Consultation des métadonnées Pour plus d'information sur le dispositif : à remplir par chaque site éventuellement 2 PRODIGE V3 : Consultation des métadonnées SOMMAIRE 1.
.. CSS. Damien Nouvel. Damien Nouvel (Inalco) CSS 1 / 15
.. CSS Damien Nouvel Damien Nouvel (Inalco) CSS 1 / 15 Feuilles de styles Plan 1. Feuilles de styles 2. Sélecteurs 3. Attributs Damien Nouvel (Inalco) CSS 2 / 15 Feuilles de styles Déportation des styles
L architecture des services Web
Chapitre 1 L architecture des services Web La combinaison des canons esthétiques et idéaux politiques, reflets de leur époque, et de la généralisation de nouveaux matériaux préside souvent au développement
< Atelier 1 /> Démarrer une application web
MES ANNOTATIONS SONT EN ROUGE : Axel < Atelier 1 /> Démarrer une application web Microsoft France Tutorial Découverte de ASP.NET 2.0 Sommaire 1 INTRODUCTION... 3 1.1 CONTEXTE FONCTIONNEL... 3 1.2 CONTEXTE
Initiation à html et à la création d'un site web
Initiation à html et à la création d'un site web Introduction : Concevoir un site web consiste à définir : - l'emplacement où ce site sera hébergé - à qui ce site s'adresse - le design des pages qui le
THEME PROJET D ELABORATION D UNE BASE DE DONNEES SOUS LE SERVEUR MYSQL
. THEME PROJET D ELABORATION D UNE BASE DE DONNEES SOUS LE SERVEUR MYSQL Mr MEZRED MOHAMED Ingénieur météorologue INTRODUCTION Il existe de nombreuses manières de construire une base de données. En effet,
Intelligence Artificielle et Systèmes Multi-Agents. Badr Benmammar [email protected]
Intelligence Artificielle et Systèmes Multi-Agents Badr Benmammar [email protected] Plan La première partie : L intelligence artificielle (IA) Définition de l intelligence artificielle (IA) Domaines
Petite définition : Présentation :
Petite définition : Le Web 2.0 est une technologie qui permet la création de réseaux sociaux, de communautés, via divers produits (des sites communautaires, des blogs, des forums, des wiki ), qui vise
Créer une base de données
Access Créer une base de données SOMMAIRE Généralités sur les bases de données... 3 Création de la base de données... 4 A) Lancement d'access... 4 B) Enregistrement de la base de données vide... 4 Création
Notes pour l utilisation d Expression Web
EICW Formation Webmaster Notes pour l utilisation d Expression Web G. Barmarin 2008-2009 1 /21 Table des matières 1 Introduction... 3 2 Installer Expression Web... 4 3 Explorer et personnaliser l interface
7.0 Guide de la solution Portable sans fil
7.0 Guide de la solution Portable sans fil Copyright 2010 Sage Technologies Limited, éditeur de ce produit. Tous droits réservés. Il est interdit de copier, photocopier, reproduire, traduire, copier sur
INTRODUCTION A JAVA. Fichier en langage machine Exécutable
INTRODUCTION A JAVA JAVA est un langage orienté-objet pur. Il ressemble beaucoup à C++ au niveau de la syntaxe. En revanche, ces deux langages sont très différents dans leur structure (organisation du
HTML, CSS, JS et CGI. Elanore Elessar Dimar
HTML, CSS, JS et CGI Elanore Elessar Dimar Viamen GPAs Formation, 13 avril 2006 Sommaire Qu est-ce que HTML? HTML : HyperText Marckup Language XML : extensible Marckup Language Qu est-ce que HTML? HTML
Introduction à MATLAB R
Introduction à MATLAB R Romain Tavenard 10 septembre 2009 MATLAB R est un environnement de calcul numérique propriétaire orienté vers le calcul matriciel. Il se compose d un langage de programmation, d
TP 1. Prise en main du langage Python
TP. Prise en main du langage Python Cette année nous travaillerons avec le langage Python version 3. ; nous utiliserons l environnement de développement IDLE. Étape 0. Dans votre espace personnel, créer
Devenez un véritable développeur web en 3 mois!
Devenez un véritable développeur web en 3 mois! L objectif de la 3W Academy est de former des petits groupes d élèves au développement de sites web dynamiques ainsi qu à la création d applications web
Formation Webmaster : Création de site Web Initiation + Approfondissement
Contactez notre équipe commerciale au 09.72.37.73.73 Aix en Provence - Bordeaux - Bruxelles - Geneve - Lille - Luxembourg - Lyon - Montpellier - Nantes - Nice - Paris - Rennes - Strasbourg - Toulouse Formation
Cours d introduction à l informatique. Partie 2 : Comment écrire un algorithme? Qu est-ce qu une variable? Expressions et instructions
Cours d introduction à l informatique Partie 2 : Comment écrire un algorithme? Qu est-ce qu une variable? Expressions et instructions Qu est-ce qu un Une recette de cuisine algorithme? Protocole expérimental
FileMaker Server 11. Publication Web personnalisée avec XML et XSLT
FileMaker Server 11 Publication Web personnalisée avec XML et XSLT 2007-2010 FileMaker, Inc. Tous droits réservés. FileMaker, Inc. 5201 Patrick Henry Drive Santa Clara, Californie 95054 FileMaker est une
Formation : WEbMaster
Formation : WEbMaster Objectif et Description : Centre Eclipse vous propose une formation complète WebMaster, vous permettant de : Utiliser dès maintenant les nouveautés du web2, ainsi alléger les besoins
Climat Scolaire - Manuel utilisateur - Chapitre 2 : «Créer, Editer et suivi d un texte»
Climat Scolaire - Manuel utilisateur - Chapitre 2 : «Créer, Editer et suivi d un texte» Espace collaboratif Co-Ment Date : 01/12/2013 Référence du Projet : Chef de Projet : www.cndp.fr/climatscolaire Caroline
PRODIGE V3. Manuel utilisateurs. Consultation des métadonnées
PRODIGE V3 Manuel utilisateurs Consultation des métadonnées Pour plus d'information sur le dispositif : à remplir par chaque site éventuellement 2 PRODIGE V3 : Consultation des métadonnées SOMMAIRE 1.
4D v11 SQL BREAKING THE LIMITS * Les nouveautés
BREAKING THE LIMITS * *Dépasser les limites 4D v11 SQL Les nouveautés SQL natif intégré Nouveau moteur de base de données ultra-performant Productivité de développement inégalée Architecture Universal
Qlik Sense Cloud. Qlik Sense 2.0.2 Copyright 1993-2015 QlikTech International AB. Tous droits réservés.
Qlik Sense Cloud Qlik Sense 2.0.2 Copyright 1993-2015 QlikTech International AB. Tous droits réservés. Copyright 1993-2015 QlikTech International AB. Tous droits réservés. Qlik, QlikTech, Qlik Sense, QlikView,
Les bases de données Page 1 / 8
Les bases de données Page 1 / 8 Sommaire 1 Définitions... 1 2 Historique... 2 2.1 L'organisation en fichier... 2 2.2 L'apparition des SGBD... 2 2.3 Les SGBD relationnels... 3 2.4 Les bases de données objet...
Projet 2. Gestion des services enseignants CENTRE D ENSEIGNEMENT ET DE RECHERCHE EN INFORMATIQUE. G r o u p e :
CENTRE D ENSEIGNEMENT ET DE RECHERCHE EN INFORMATIQUE Projet 2 Gestion des services enseignants G r o u p e : B E L G H I T Y a s m i n e S A N C H E Z - D U B R O N T Y u r i f e r M O N T A Z E R S i
BASE. Vous avez alors accès à un ensemble de fonctionnalités explicitées ci-dessous :
BASE BioArray Software Environment (BASE) est une base de données permettant de gérer l importante quantité de données générées par des analyses de bio-puces. BASE gère les informations biologiques, les
BIRT (Business Intelligence and Reporting Tools)
BIRT (Business Intelligence and Reporting Tools) Introduction Cette publication a pour objectif de présenter l outil de reporting BIRT, dans le cadre de l unité de valeur «Data Warehouse et Outils Décisionnels»
Plateforme PAYZEN. Définition de Web-services
Plateforme PAYZEN Définition de Web-services Ordre de paiement Version 1.1 Rédaction, Vérification, Approbation Rédaction Vérification Approbation Nom Date/Visa Nom Date/Visa Nom Date/Visa Lyra-Network
Présentation du langage et premières fonctions
1 Présentation de l interface logicielle Si les langages de haut niveau sont nombreux, nous allons travaillé cette année avec le langage Python, un langage de programmation très en vue sur internet en
Tutoriel QSOS. Version 2.0-13/02/2013
Version 2.0-13/02/2013 1 Table des matières 1 Note de licence 4 2 Historique des modifications 4 3 Introduction 4 4 Gérer les templates 4 4.1 Généralités sur les templates.................... 4 4.2 Créer
chapitre 4 Nombres de Catalan
chapitre 4 Nombres de Catalan I Dénitions Dénition 1 La suite de Catalan (C n ) n est la suite dénie par C 0 = 1 et, pour tout n N, C n+1 = C k C n k. Exemple 2 On trouve rapidement C 0 = 1, C 1 = 1, C
Introduction à Microsoft InfoPath 2010
Introduction à Microsoft InfoPath 2010 Couplé à Microsoft SharePoint Designer 2010, InfoPath 2010 simplifie la création de solutions de bout en bout sur SharePoint Server 2010, qui contiennent des formulaires
Learning Object Metadata
Page 1 of 7 Learning Object Metadata Le LOM (Learning Object Metadata), est un schéma de description de ressources d enseignement et d apprentissage. Le LOM peut être utilisé pour décrire des ressources
Note de cours. Introduction à Excel 2007
Note de cours Introduction à Excel 2007 par Armande Pinette Cégep du Vieux Montréal Excel 2007 Page: 2 de 47 Table des matières Comment aller chercher un document sur CVMVirtuel?... 8 Souris... 8 Clavier
Pourquoi l apprentissage?
Pourquoi l apprentissage? Les SE sont basés sur la possibilité d extraire la connaissance d un expert sous forme de règles. Dépend fortement de la capacité à extraire et formaliser ces connaissances. Apprentissage
Configuration Interface for MEssage ROuting
Configuration Interface for MEssage ROuting Cahier des Charges Date : 05/04/07 Version : 1.1 Statut : diffusable Auteurs : BAGNARD Natacha FOROT Julien 1/16 Table des révisions Version Date Modifications
ECLIPSE ET PDT (Php development tools)
ECLIPSE ET PDT (Php development tools) Eclipse Eclipse est un IDE (Integrated Development Environment)).C estun projet de la Fondation Eclipse visant à développer tout un environnement de développement
Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère
L'héritage et le polymorphisme en Java Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère En java, toutes les classes sont dérivée de la
Tutoriel: Création d'un Web service en C++ avec WebContentC++Framework
Tutoriel: Création d'un Web service en C++ avec WebContentC++Framework Gaël de Chalendar CEA LIST / LIC2M Journée de Présentation des Technologies WebContent INSTN 14/12/2009 Présentation de gsoap Plan
NFE204 Bases de données avancées
NFE204 Bases de données avancées Bases de données documentaires et NOSQL Philippe Rigaux, Nicolas Travers Conservatoire National des Arts et Métiers October 8, 2013 WebDam (CNAM) NFE204 Bases de données
Outils de traitements de logs Apache
Outils de traitements de logs Apache 1) Anonymisation des logs 2) Outil visuel d'exploration des données 3) Adaptation d'un robot 1 Anonymisation des logs Objectifs : Anonymiser les logs du point de vue
Éléments de programmation et introduction à Java
Éléments de programmation et introduction à Java Jean-Baptiste Vioix ([email protected]) IUT de Dijon-Auxerre - LE2I http://jb.vioix.free.fr 1-20 Les différents langages informatiques
NFA016 : Introduction. Pour naviguer sur le Web, il faut : Naviguer: dialoguer avec un serveur web
NFA016 : Introduction O. Pons, S. Rosmorduc Conservatoire National des Arts & Métiers Pour naviguer sur le Web, il faut : 1. Une connexion au réseau Réseau Connexion physique (câbles,sans fils, ) à des
BD et XML : Exercices
BD et XML : Exercices 1 Stockage XML Voici un arbre XML : A B E C F C F C F D C C D D D 1.1 Stockage générique Exercice 1.1.1 : Définissez un schéma de stockage relationnel générique (sans prendre en compte
Magento. Magento. Réussir son site e-commerce. Réussir son site e-commerce BLANCHARD. Préface de Sébastien L e p e r s
Mickaël Mickaël BLANCHARD BLANCHARD Préface de Sébastien L e p e r s Magento Préface de Sébastien L e p e r s Magento Réussir son site e-commerce Réussir son site e-commerce Groupe Eyrolles, 2010, ISBN
Déployer les Fonts, Icones, et Images avec Forms Services 11G
Déployer les Fonts, Icones, et Images avec Forms Services 11G 1. Le fichier Registry.dat Le fichier Registry.dat permet de gérer les correspondances de font entre celles utilisées pour le développement
