SUPPORTS DE COURS SUR LE LANGAGE XML

Save this PDF as:
 WORD  PNG  TXT  JPG

Dimension: px
Commencer à balayer dès la page:

Download "SUPPORTS DE COURS SUR LE LANGAGE XML"

Transcription

1 SUPPORTS DE COURS SUR LE LANGAGE XML 1

2 1 COURS D'INTRODUCTION A XML GENERALITES XML n'est pas un langage à proprement parler comme peut l'être HTML : XML est une famille de langages ayant en commun le respect de certaines règles Nous allons voir que là où HTML est simple, bien défini et non contraignant à la fois, XML est extensible et rigoureux En pratique, un fichier XML est un simple fichier texte, contenant des balises La particularité de XML est qu'aucune balise n'est prédéfinie : c'est au concepteur de définir les balises qui ont du sens pour lui Ces éléments permettent d'ores et déjà de dégager les intérêts de XML : Les documents sont faciles à compléter ou à modifier, il suffit d'un simple éditeur de texte parce qu'il s'agit de fichiers texte avec un format connu et simple ; l'aspect textuel autorise également des recherches de base, soit à travers l'éditeur de texte, soit à l'aide des commandes de base du système d'exploitation (grep sous Linux) ; comme il s'agit d'un format ouvert, des outils génériques sont disponibles et directement utilisable, du parser (lecture et chargement du fichier en mémoire) à la transformation automatique avec XSLT ; l'utilisateur peut différencier le fond de la forme, ne travailler que sur la structure logique du document sans se soucier de sa présentation ; cela car XML est clairement avant tout une solution de stockage et pas de publication Sur l'aspect stockage et recherche, le langage XML semble s'opposer aux bases de données On l'a vu XML permet la saisie et les modifications sans autre logiciel qu'un traitement de texte Même une modification du schéma est facile à gérer en XML, au moins sur un unique document XML De plus, XML ne nécessite pas dans un premier temps l'apprentissage d'un langage comme SQL Cependant, l'efficacité des recherches reste l'avantage des bases de données 2

3 XML est donc un standard ouvert et universel On le trouve aujourd'hui dans les domaines les plus variés : édition (description d'ouvrage avec DocBook), graphisme (format SVG), mathématiques (formules avec MathML), chimie (CML permet la description de molécules en 3D), musique (partition musicale avec MusicML), etc UN DOCUMENT XML EN PRATIQUE On a dit qu'un document XML était essentiellement du texte Au milieu de ce texte, on va pouvoir trouver des éléments (ou balises), des attributs associés aux éléments et enfin des entités Les règles que doit suivre un document XML sont les suivantes (si toutes ces contraintes sont respectées, le document XML est dit bien formé) : la première ligne doit être de la forme <?xml version="10" encoding="iso "?> ; les deux attributs spécifient la version de XML utilisée (10 ou 11) et le codage des caractères (utf-8 par défaut) ; les balises sont repérées par les caractères < et >, on écrira par exemple <balise>contenu</balise> ; la balise ouvrante peut contenir des attributs ; toujours donner une valeur aux attributs, en suivant la syntaxe<balise attr="val"> (les guillemets sont obligatoires, les attributs ne sont pas répétés dans la balise fermante) ; les entités sont systématiquement de la forme &nom; ; fermer toutes les balises ouvertes ; une balise sans contenu pourra être ouverte et immédiatement fermée en faisant suivre son nom d'un slash, par exemple avec la balise br(passage à la ligne en HTML) : <br /> ; veiller à l'ordre de fermeture des balises : la première ouverte est toujours la dernière fermée ; respecter la casse : on peut utiliser majuscules et minuscules dans les noms de balises mais une fois qu'un nom d'élément a été fixé, il faut s'y tenir, la balise <cv> ne pourra être fermée ni par </Cv> ni par </CV> ; 3

4 ne pas utiliser de caractères réservés à XML dans le texte du document : <, > et & ; ces caractères pourront être respectivement obtenues à l'aide des entités <, > et& ; les noms de balises et d'attributs doivent être des noms XML : o o o le premier caractère est une lettre quelconque ou un _(underscore ou tiret bas) ; les caractères suivants peuvent être des lettres, des chiffres, des tirets bas (_), des traits d'union (-) ou des points () ; il n'y a pas de limitation sur la longueur d'un nom XML À noter que cette dernière règle interdit à un nom de balise de commencer par un chiffre Cependant, la liberté pour choisir un nom d'élément reste grande car on peut y faire figurer n'importe quelle lettre or, le codage privilégié dans les documents et applications XML est l'utf-8 qui contient les alphabets latin, arabe, japonais, etc Plus spécifiquement, on n'hésitera pas à utiliser des lettres accentuées dans les noms d'éléments Finalement, voici un exemple de document XML bien formé : <?xml version="10" encoding="iso "?> <!-- commentaire : voici mon curriculum vitae --> <cv> <!-- commentaire : état civil --> <identité naissance="1980"> <nom>moustique</nom> <prénom>jules</prénom> <prénom>édouard</prénom> <nationalité>grolandaise</nationalité> </identité> <!-- commentaire : mes diplômes maintenant --> <diplome année="2005" intitulé="master ID" mention="tb" /> <diplome année="2003" intitulé="licence " mention="ab" /> </cv> TECHNOLOGIES LIEES La simplicité et l'ouverture de XML fait qu'un document XML peut facilement être modifier par un être humain, sans outil spécifique La rigueur de XML (sensibilité à la casse, guillemets obligatoires pour encadrer les valeurs des attributs, fermeture systématique des balises, etc) autorise des traitements automatiques, qui pourront être partagés par tous les langages XML 4

5 contraindre un langage XML : DTD, Schémas, Relax NG ; mise en page avec CSS <?xml-stylesheet type="text/css"> href="livrescss" en particulier utilisation de la propriété display (block ouinline) ; interrogration, requêtes sur un document XML avec XPath ou XQuery ; transformation de documents avec XSLT ; mise en page avec XSL-FO (Formatting Objects) et un programme comme FOP) L'ECRITURE DE DTD 2 COURS SUR L'ECRITURE DE DTD MOTIVATIONS Nous avons vu comment il était possible d'écrire du XML en respectant ses règles de syntaxe et d'obtenir ainsi un document XMLbien formé Nous allons maintenant décrire comment spécifier des contraintes plus précises et propres à notre langage XML Cela va prendre ici la forme d'une DTD (Définition de Type de Document) On dira alors qu'en plus d'être bien formé, le document est valide par rapport à une certaine DTD Cette spécification d'une grammaire pour un langage et la possibilité de tester automatiquement son respect par un document donné, présentent les avantages suivants : faciliter l'échange et la mise en commun de documents produits par des rédacteurs différents ; aider les développeurs qui conçoivent des outils automatiques pour traiter les documents respectant la même DTD LIER UN FICHIER XML A UNE DTD 5

6 DTD INTERNE Dans ce cas, la spécification de la DTD arrive dans l'entête du document XML : on trouve d'abord le mot-clef DOCTYPE suivi de l'élément servant de racine au document et enfin la DTD elle-même entre crochets : <?xml version="10" encoding="iso "?> <!DOCTYPE cv [ ]> <cv> </cv> DTD EXTERNE Cette fois, la DTD est détachée dans un fichier séparé, on se contente d'y faire référence dans l'entête du document XML On retrouve le mot-clef DOCTYPE suivi de l'élément servant de racine, puis le mot-clef SYSTEMsuivi d'une URI menant au fichier DTD À noter également que la première ligne doit faire apparaître l'attributstandalone avec la valeur no <?xml version="10" encoding="iso " standalone="no"?> <!DOCTYPE cv SYSTEM "cvdtd"> <cv> </cv> À noter que, sans toucher au document XML, il est possible de faire le lien au moment de la validation Par exemple, avec xmllint, on écrira : xmllint --dtdvalid madtddtd mondocxml --noout 6

7 DTD MIXTE Enfin, il est possible de mélanger les deux notations pour avoir une partie de la DTD dans un fichier séparé et une autre partie embarquée dans le document XML : <?xml version="10" encoding="iso " standalone="no"?> <!DOCTYPE cv SYSTEM "cvdtd" [ ]> <cv> </cv> DEFINIR LES ELEMENTS ET LEURS CONTENUS Il s'agit ici de déclarer les éléments autorisés à apparaître dans le document, ainsi que leurs imbrications possibles La forme générale est la suivante : <!ELEMENT nom_element modèle_de_contenu> Les noms des éléments (comme ceux des attributs) doivent être desnoms XML : le premier caractère est une lettre quelconque ou un _(underscore ou tiret bas) ; les caractères suivants peuvent être des lettres, des chiffres, des tirets bas (_), des traits d'union (-) ou des points () ; il n'y a pas de limitation sur la longueur d'un nom XML Nous passons maintenant en revue les différents modèles de contenu utilisables dans les DTD CONTENU PUREMENT TEXTUEL Si l'élément peut contenir du texte brut mais pas de nouvelles balises, on utilisera le modèle de contenu PCDATA : <!ELEMENT téléphone (#PCDATA)> 7

8 Aucune balise n'est donc tolérée dans ce type de contenu mais, par contre, il est possible d'y utiliser des entités SOUS-ELEMENTS Ici, on va lister les sous-éléments pouvant apparaître dans le contenu, par exemple : <!ELEMENT identité (prénom,nom)> indique que l'élément identité doit contenir, dans l'ordre, un élémentprénom, un élément nom, et rien d'autre Il est possible de moduler le nombre d'apparitions d'un sous-élément en utilisant des quantifieurs après les noms d'éléments Les quantifieurs utilisables dans les DTD sont :? : 0 ou 1 fois ; * : 0, 1 ou plus ; + : 1 ou plus L'exemple suivant indique que l'élément identité doit contenir, toujours en respectant l'ordre, un ou plusieurs éléments prénom, un élément surnom facultatif et exactement un élément nom : <!ELEMENT identité (prénom+,surnom?,nom)> ALTERNATIVES Il est également possible de définir les sous-éléments qui peuvent apparaître de manière exclusive : si c'est l'un, ça n'est pas les autres Dans l'exemple cidessous, une expérience professionnelle peut être soit unemploi, soit un stage : <!ELEMENT expérience (stage emploi)> COMBINAISONS Enfin, il est possible de combiner les syntaxes vues précédemment : <!ELEMENT diplôme ( (intitulé,année) (année,compétences,stage?)+ )> Dans ce cas, un diplôme est : 8

9 soit l'intitulé du diplôme et l'année d'obtention ; soit une suite d'année, avec les compétences acquises cette année là, éventuellement validées par un stage CONTENU MIXTE Une possibilité intéressante est de pouvoir mixer du texte brut avec des balises sans mettre plus de contraintes sur l'ordre et le nombre d'apparitions de ces balises Cela se fait avec une alternative entre un contenu de type PCDATA et des sous-éléments, cette alternative pouvant se répéter plusieurs fois : <!ELEMENT parcours (#PCDATA diplôme)*> Ici, on a un élément parcours qui a un contenu mixte : du texte pouvant contenir un nombre quelconque de sous-éléments diplôme CONTENU VIDE Un élément peut également n'avoir aucun contenu, comme c'est le cas par exemple de la balise br (retour à la ligne en HTML) Cela se précise dans la DTD de la manière suivante : <!ELEMENT br EMPTY> Une telle balise sera donc ouverte et immédiatement refermée avec la notation suivante : <br /> CONTENU QUELCONQUE On termine avec la possibilité d'autoriser n'importe quel contenu à apparaître dans un élément <!ELEMENT mavie ANY> Dans ce cas, l'élément mavie pourra contenir du texte brut mélangé avec toute balise définie dans la DTD, dans n'importe quel ordre, autant de fois que l'on veut Ce modèle de contenu est en contradiction avec l'esprit des DTD, lesquelles visent plutôt à restreindre au maximum le rédacteur Une utilisation cependant pratique du ANY intervient lors de la rédaction d'une DTD alors que les documents XML sont déjà existants : dans ce cas, on définit les éléments de plus haut niveau en indiquant ANY pour leurs contenus, si les documents sont valides, on reprend la DTD en affinant le contenu de chacun des éléments, etc 9

10 UN EXEMPLE SIMPLE ET COMPLET Une DTD que l'on enregistre dans un fichier nommé livresdtd : <!ELEMENT liste_livres (livre+)> <!ELEMENT livre (titre,auteur+,éditeur,description?,prix)> <!ELEMENT titre (#PCDATA)> <!ELEMENT auteur (#PCDATA)> <!ELEMENT éditeur (#PCDATA)> <!ELEMENT description (#PCDATA)> <!ELEMENT prix (#PCDATA)> et un fichier XML la respectant : <?xml version="10" encoding="iso " standalone="no"?> <!DOCTYPE liste_livres SYSTEM "livresdtd"> <liste_livres> <livre> <titre>comprendre XSLT</titre> <auteur>bernd Amann</auteur> <auteur>philippe Rigaux</auteur> <éditeur>o'reilly</éditeur> <description> Le livre suit une double démarche de présentation des aspects les plus simples, puis, progressivement, les plus complexes du langage XSLT, et d'application des mécanismes de ce langage à des cas concrets d'utilisation Il débute par un chapitre introductif en forme d'étude de cas qui propose, sur une application de type "Officiel des spectacles" adaptée au Web, une déclinaison des différents thèmes couverts </description> <prix>33 euros</prix> </livre> <livre> <titre>learning XML</titre> <auteur>erik T Ray</auteur> <éditeur>o'reilly</éditeur> <prix>40 dollars</prix> </livre> </liste_livres> DEFINIR LES ATTRIBUTS 10

11 La syntaxe des DTD utilise cette fois le mot ATTLIST, suivi du nom de l'élément concerné, suivi de la liste de ses attributs : pour chacun, on trouvera son nom, son type et son caractère optionnel ou non Comme nous l'avons déjà indiqué, les noms des attributs doivent être des noms XML : le premier caractère est une lettre quelconque ou un _(underscore ou tiret bas) ; les caractères suivants peuvent être des lettres, des chiffres, des tirets bas (_), des traits d'union (-) ou des points () ; il n'y a pas de limitation sur la longueur d'un nom XML Une déclaration d'attributs typique aura la forme suivante : <!ATTLIST identité prénom CDATA #REQUIRED nom CDATA #REQUIRED surnom CDATA #IMPLIED> Dans ce cas, l'élément identité possède trois attributs prénom, nom et surnom Les deux premiers sont obligatoires (REQUIRED) et le dernier est optionnel (IMPLIED) À noter également la possibilité pour un attribut d'être FIXED, c'est-à-dire de prendre systématiquement la même valeur Nous passons maintenant en revue les différents types d'attributs CDATA C'est le type le plus général, il permet de saisir un texte quelconque pour un attribut de ce type Il est même possible d'utiliser ici les caractères habituellement réservés à XML : <, > et & NMTOKEN Il s'agit ici un nom XML mais sans restriction sur le premier caractère (qui peut donc être un chiffre) Une contrainte essentielle est donc qu'un attribut de ce type ne contiendra pas d'espace Par exemple, un code postal pourra être déclaré de ce type : <!ATTLIST ville nom CDATA #REQUIRED code NMTOKEN #REQUIRED> NMTOKENS Une suite de NMTOKEN, séparés par des espaces 11

12 ÉNUMERATION Dans ce cas, l'attribut ne peut prendre qu'un nombre fini de valeurs et l'on en donne la liste exhaustive, ces valeurs étant séparées par des <!ATTLIST date jour (lundi mardi mercredi jeudi vendredi samedi dimanche) #REQUIRED num NMTOKEN #REQUIRED mois NMTOKEN #REQUIRED année NMTOKEN #REQUIRED> ID Il doit s'agir d'un nom XML qui identifie de manière unique l'élément Autrement dit, une valeur qui apparaît dans un tel attribut ne peut pas apparaître une seconde fois dans le même document <!ATTLIST diplôme intitulé CDATA #REQUIRED code ID #REQUIRED> Cette notion est tout à fait comparable à la clef primaire d'une table dans une base de données Cependant, il faut garder à l'esprit qu'un ID ne peut pas être un nombre (car la valeur d'un ID doit être un nom XML) IDREF Un attribut de type IDREF doit contenir une valeur utilisée comme IDailleurs dans le document <!ATTLIST stage entreprise CDATA #REQUIRED diplôme IDREF #REQUIRED> IDREFS Une suite de IDREF, séparées par des espaces ENTITY La valeur d'un attribut de ce type doit être une entité définie dans la DTD (voir section suivante pour la définition des entités) ENTITIES Une suite de ENTITY, séparées par des espaces 12

13 DEFINIR LES ENTITES Intuitivement, il s'agit de définir des raccourcis (ou des alias) qui seront utilisables dans les documents XML liés à la DTD Certaines entités sont déjà définies en XML : < (<), > (>),& (&), " ("), et &apos; (') ENTITES GENERALES Le mot ENTITY suivi du nom de l'entité, puis de sa valeur entre guillemets ou apostrophes <!ENTITY ac "anticonstitutionnellement"> Cette déclaration permettra d'utiliser &ac; dans le document XML associé à la DTD La valeur de l'entité peut contenir du texte, des balises et des entités (le code XML ainsi défini doit être bien formé) Par exemple, <!ENTITY piedpage '<hr /> <p> Copyright 2005, dernière mise à jour octobre 2005 </p>'> ENTITES GENERALES EXTERNES Si le code associé à une entité devient très important, il peut être intéressant de le détacher dans un fichier à part, ce que permet la syntaxe suivante : <!ENTITY piedpage SYSTEM "ppxml"> Dans ce cas, le fichier ppxml doit être un fichier XML bien formé (première ligne de déclaration de la version XML et du codage utilisé, fermeture systématique des balises ouvertes, etc) ENTITES GENERALES EXTERNES NON PARSEES Enfin, il y a le cas où le fichier externe représenté par l'entité ne contient pas du XML et ne doit donc pas être parcouru par les applications traitant le document <!NOTATION jpeg SYSTEM "image/jpeg"> <!ENTITY maphoto SYSTEM "totojpg" NDATA jpeg> 13

14 Ici, en plus du fichier externe, on trouve NDATA pour Notation Data etjpeg faisant référence à une NOTATION définie précédemment LaNOTATION doit permettre à l'application de traiter le fichier externe : il peut s'agir d'un type MIME comme ici ou d'une commande à exécuter Une telle entité pourra apparaître comme valeur d'un attribut défini avec le type ENTITY INTEGRER LES ENTITES Naturellement, les entités définies dans la DTD et utilisées dans le document XML devront tôt ou tard être remplacées par leurs véritables valeurs Certains navigateurs opèrent ce remplacement lorsque l'on les utilise pour visualiser ce document XML Ca n'est pas le cas de Firefox par exemple qui choisit de ne pas remplacer les entités et cela pour des raisons de sécurité Un moyen de tester les entités est d'utiliser xmllint : xmllint docxml --valid --noent on charge la dtd avec --valid et on demande la substitution des entités avec -- noent ENTITES PARAMETRES Ce type d'entité permet d'éviter de répéter les mêmes informations Par exemple, on donnera toujours le nom et le prénom d'une personne, quel que soit son statut dans le document : <!ELEMENT identité (nom,prénom,naissance)> <!ELEMENT enseignant (nom,prénom)> L'utilisation d'une entité paramètre comme suit permet de ne pas répéter et autorise à enrichir ultérieurement la description d'une personne : <!ENTITY % elements_personne "nom,prénom"> <!ELEMENT identité (%elements_personne;,naissance)> <!ELEMENT enseignant (%elements_personne)> DTD MODULAIRES 14

15 Des instructions (INCLUDE et IGNORE) permettent de prendre en compte un bloc de la DTD, ou de l'ignorer La syntaxe est la suivante : <![IGNORE[ <!ELEMENT personne (nom,prénom)> <!ELEMENT nom (#PCDATA)> <!ELEMENT prénom (#PCDATA)> ]]> <![INCLUDE[ <!ELEMENT entreprise (dénomination,taille)> <!ELEMENT dénomination (#PCDATA)> <!ELEMENT taille (#PCDATA)> ]]> Ce mécanisme devient puissant avec l'utilisation conjointe d'entitésparamètres <!ENTITY % bloc_personnes "INCLUDE"> <!ENTITY % bloc_entreprises "IGNORE"> <![%bloc_personnes;[ <!ELEMENT personne (nom,prénom)> <!ELEMENT nom (#PCDATA)> <!ELEMENT prénom (#PCDATA)> ]]> <![%bloc_entreprises[ <!ELEMENT entreprise (dénomination,taille)> <!ELEMENT dénomination (#PCDATA)> <!ELEMENT taille (#PCDATA)> ]]> Il est notable que ce choix ait été fait par le W3C pour définir la DTD du XHTML BILAN SUR LES DTD Les reproches suivants sont systématiquement faits aux DTD : l'élément racine n'est pas spécifié pas dans la DTD ; un document peut être valide en utilisant n'importe quelle balise de la DTD comme racine ; 15

16 le nombre d'apparitions d'un élément ne peut pas être contraint précisément, puisque l'on ne dispose que des quantifieurs?, * et +, on aimerait pouvoir dire qu'un élément doit apparaître plus de 2 fois mais toujours moins de 5 ; on ne dispose pas de types pour les contenus des attributs et des éléments (nom, date, code postal, numéro de téléphone, url, adresse mail, etc) ; on ne peut pas contraindre la forme de ces contenus (entre 5 et 20 caractères, contenant un etc ) ; enfin, le langage utilisé pour définir une DTD n'est pas un langage XML! Pour palier à ces manques, d'autres propositions ont été faites, permettant elles aussi de spécifier un langage XML, citons les XML Schema et Relax NG 3 COURS SUR L'ECRITURE DE XML SCHEMAS DTD VERSUS XML SCHEMA Les DTD : types pauvres, peu de contraintes sur les contenus nombre d'apparitions d'un élément à choisir entre 0 et 1 pas de gestion des espaces de noms pas un format XML Les schémas : utilisation et définition de types, contraintes sur les contenus possibilité de définir précisément le nombre d'apparitions d'un élément espaces de noms supportés format XML, parsable facilement LA BASE PRATIQUE Le fichier XML : <racine 16

17 xmlns:xsi=" xsi:nonamespaceschemalocation="monschemaxsd"> </racine> Le fichier contenant le schéma (xsd) : <?xml version="10"?> <xs:schema xmlns:xs=" </xs:schema> La validation avec xmllint par exemple : xmllint --schema monschemaxsd undocxml MODELES DE CONTENU ET TYPES On distingue deux familles de types : les simples qui caractérisent le contenu d'un noeud textuel ou d'un attribut ; les complexes sont utilisés pour décrire les autres formes de contenu Cela nous amène à distinguer différents modèles de contenu pour un élément selon la nature de ses noeuds fils autorisés : vide : aucun noeud fils ; simple : ne contient que des noeuds textuels ; complexe : que des sous-éléments ; mixte : à la fois du texte et des sous-éléments Dès qu'un élément possède un attribut, il est considéré comme étant de type complexe, même si son contenu est vide ou simple LES TYPES SIMPLES PREDEFINIS Consulter la recommandation du W3C pour avoir la liste exhaustive des types prédéfinis Parmi ceux-ci, citons : string decimal, integer, positiveinteger, real 17

18 date, datetime, duration ID, IDREF, ENTITY, NMTOKEN, etc (venant des DTD) Liste de valeurs d'un même type simple <xs:simpletype name="telephone"> <xs:list itemtype="xs:integer" /> </xs:simpletype> Union de types simples DEFINIR UN NOUVEAU TYPE SIMPLE <xs:simpletype name="contact"> <xs:union membertypes="adresse telephone" /> </xs:simpletype> Restriction d'un type simple consiste à ajouter des contraintes à un type de base, on distingue différents types de contraintes, appelés facettes, différents suivant le type qui subit la restriction Énumération pour les chaînes de caractères, nombres et dates <xs:simpletype name="joursemaine"> <xs:restriction base="xs:string"> <xs:enumeration value="lundi" /> <xs:enumeration value="mardi" /> <xs:enumeration value="mercredi" /> <xs:enumeration value="jeudi" /> <xs:enumeration value="vendredi" /> <xs:enumeration value="samedi" /> <xs:enumeration value="dimanche" /> </xs:restriction> </xs:simpletype> longueur fixe, minimale ou maximale des chaînes de caractères <xs:simpletype name="telephone"> <xs:restriction base="xs:string"> <xs:length value="10" /> </xs:restriction> </xs:simpletype> <xs:simpletype name="motdepasse"> <xs:restriction base="xs:string"> <xs:minlength value="8" /> <xs:maxlength value="20" /> </xs:restriction> </xs:simpletype> <xs:simpletype name="telephone"> <xs:restriction base="xs:string"> <xs:length value="10" /> </xs:restriction> </xs:simpletype> 18

19 bornes sur les entiers et les dates <xs:simpletype name="temperature"> <xs:restriction base="xs:integer"> <xs:mininclusive value="-15" /> <xs:maxinclusive value="+35" /> </xs:restriction> Supports de cours sur le langage XML 2012 </xs:simpletype> aussi minexclusive et maxexclusive nombre de chiffres sur les nombre <xs:simpletype name="codepostal"> <xs:restriction base="xs:integer"> <xs:totaldigits value="5" /> </xs:restriction> </xs:simpletype> <xs:simpletype name="prix"> <xs:restriction base="xs:decimal"> <xs:fractiondigits value="2" /> </xs:restriction> </xs:simpletype> expressions régulières sur tous les types simples (?) <xs:simpletype name="mail"> <xs:restriction base="xs:string"> <xs:pattern /> </xs:restriction> </xs:simpletype> DEFINIR UN ATTRIBUT utilisation de la balise <xs:attribute /> ; indiquer le nom de l'attribut avec l'attribut <xs:attribute name="score" /> ; définir le type du contenu de l'élément en utilisant l'attributtype ; préciser son caractère obligatoire ou optionnel (required ouoptional) à l'aide de l'attribut use ; éventuellement, indiquer une valeur par défaut avec l'attributdefault <xs:attribute name="score" type="xs:integer" use="required" default="0" /> DEFINIR UN ELEMENT DE TYPE SIMPLE utilisation de la balise <xs:element /> ; indiquer le nom de l'élément avec l'attribut name ; 19

20 préciser le nombre d'apparition autorisé pour cet élément à l'aide des attributs minoccurs et maxoccurs ; définir le type du contenu de l'élément en utilisant l'attributtype ; Finalement : <xs:element name="nom" minoccurs="1" maxoccurs="1" type="xs:string" /> <xs:element name="prénom" minoccurs="1" maxoccurs="unbounded" type="xs:string" /> <xs:element name="surnom" minoccurs="0" maxoccurs="1" type="xs:string" /> DEFINIR UN ELEMENT DE TYPE COMPLEXE on définit les sous-éléments puis les attributs CONTENU VIDE AVEC ATTRIBUT <xs:element name="br"> <xs:complextype> <xs:attribute name="class" type="string" /> </xs:complextype> </xs:element> CONTENU SIMPLE AVEC ATTRIBUT extension ou restriction sur un type simple <xs:element name="title"> <xs:complextype> <xs:simplecontent> <xs:extension base="string"> <xs:attribute name="lang" type="string" /> </xs:extension> </xs:simplecontent> </xs:complextype> </xs:element> CONTENU COMPLEXE Il s'agit à nouveau d'utiliser <xs:complextype> puis de lister les sous-éléments autorisés au sein de l'une de ces balises : <xs:sequence> : les sous-éléments doivent tous apparaître, dans l'ordre ; <xs:all> : les sous-éléments doivent tous apparaître, mais dans un ordre quelconque ; <xs:choice> : seulement un des sous-éléments peut apparaître, au choix <xs:element name="auteur"> 20

21 <xs:complextype> <xs:sequence> <xs:element name="nom" minoccurs="1" maxoccurs="1" type="xs:string" /> <xs:element name="prénom" minoccurs="1" maxoccurs="unbounded" type="xs:string" /> <xs:element name="surnom" minoccurs="0" maxoccurs="1" type="xs:string" /> </xs:sequence> </xs:complextype> </xs:element> CONTENU MIXTE On définit pour cela un type complexe en précisant un attribut mixed, celui-ci indiquant que du texte peu se glisser entre tous les sous-éléments autorisés <xs:element name="p"> <xs:complextype mixed="true"> <xs:choice minoccurs="0" maxoccurs="unbounded"> <xs:element name="em" type="xs:string" /> <xs:element name="strong" type="xs:string" /> </xs:choice> </xs:complextype> </xs:element> STRATEGIES D'ECRITURE D'UN SCHEMA En suivant l'arborescence des documents : <?xml version="10"?> <xs:schema xmlns:xs=" <xs:element name="championnat"> <xs:complextype> <xs:sequence> <xs:element name="journee" maxoccurs="38"> <xs:complextype> <xs:sequence> <xs:element name="rencontre" maxoccurs="10"> <xs:complextype> <xs:attribute name="domicile" type="xs:string" /> <xs:attribute name="exterieur" type="xs:string" /> <xs:attribute name="scored" type="xs:string" /> <xs:attribute name="scoree" type="xs:string" /> </xs:complextype> </xs:element> </xs:sequence> <xs:attribute name="numero" type="xs:integer" /> <xs:attribute name="date" type="xs:string" /> </xs:complextype> </xs:element> </xs:sequence> <xs:attribute name="division" type="xs:integer" /> <xs:attribute name="saison" type="xs:string" /> 21

22 </xs:complextype> </xs:element> </xs:schema> ou à plat avec références aux éléments déjà définis : <?xml version="10"?> <xs:schema xmlns:xs=" <xs:attribute name="domicile" type="xs:string" /> <xs:attribute name="exterieur" type="xs:string" /> <xs:attribute name="scored" type="xs:string" /> <xs:attribute name="scoree" type="xs:string" /> <xs:attribute name="numero" type="xs:integer" /> <xs:attribute name="date" type="xs:string" /> <xs:attribute name="division" type="xs:integer" /> <xs:attribute name="saison" type="xs:string" /> <xs:element name="rencontre"> <xs:complextype> <xs:attribute ref="domicile" /> <xs:attribute ref="exterieur" /> <xs:attribute ref="scored" /> <xs:attribute ref="scoree" /> </xs:complextype> </xs:element> <xs:element name="journee"> <xs:complextype> <xs:sequence> <xs:element ref="rencontre" maxoccurs="10" /> </xs:sequence> <xs:attribute ref="numero" /> <xs:attribute ref="date" /> </xs:complextype> </xs:element> <xs:element name="championnat"> <xs:complextype> <xs:sequence> <xs:element ref="journee" maxoccurs="38" /> </xs:sequence> <xs:attribute ref="division" /> <xs:attribute ref="saison" /> </xs:complextype> </xs:element> </xs:schema> La première stratégie contraint l'élément racine, pas la seconde La seconde est plus modulaire et permet de réutiliser des parties du schéma CONTRAINTES D'UNICITE ET DE CLEF 22

23 On peut toujours utiliser les ID et IDREF des DTD mais c'est plus pauvre que le mécanisme offert par XML-Schémas Celui-ci utilise (un sous-ensemble) des expressions XPath <xs:element name="bibliotheque"> <xs:complextype> </xs:complextype> <xs:unique name="uniquelivre"> <xs:selector xpath="book" /> <xs:field xpath="isbn" /> </xs:unique> </xs:element> on peut mettre plusieurs fields UNICITE <xs:element name="bibliotheque"> <xs:complextype> </xs:complextype> <xs:key name="cleflivre"> <xs:selector xpath="livre" /> <xs:field xpath="isbn" /> </xs:key> </xs:element> CLES pareil que unique avec présence obligatoire de la clé en plus REFERENCE <xs:keyref name="refcleflivre" refer="cleflivre"> <xs:selector xpath="citation"/> <xs:field xpath="ref" /> </xs:keyref> REGROUPEMENTS REGROUPER DES ATTRIBUTS <xs:attributegroup name="attrs_photo"> <xs:attribute name="source" type="nomfichier" /> <xs:attribute name="alt" type="xs:string" /> </xs:attributegroup> <xs:element name="identite"> <xs:complextype> <xs:attributegroup ref="attrs_photo" /> <xs:attribute name="personne" type="xs:string" /> </xs:complextype> 23

24 </xs:element> <xs:element name="paysage"> <xs:complextype> <xs:attributegroup ref="attrs_photo" /> <xs:attribute name="lieu" type="xs:string" /> </xs:complextype> </xs:element> REGROUPER DES ELEMENTS regrouper par all, choice, ou sequence <xs:group name="elems_text"> <xs:choice> <xs:element ref="refacteur" /> <xs:element ref="film" /> <xs:element ref="realisateur" /> <xs:element ref="annee" /> </xs:choice> </xs:group> <xs:element name="p"> <xs:complextype mixed="true"> <xs:choice minoccurs="0" maxoccurs="unbounded"> <xs:group ref="elems_text" /> </xs:choice> </xs:complextype> </xs:element> 4 COURS SUR LES REQUETES XPATH GENERALITES XPath est un langage d'interrogation des documents XML Il permet de sélectionner certaines parties d'un document XML : des sous-arbres, des noeuds, des attributs, etc XPath est central dans le monde XML, il intervient comme brique de base dans d'autres technologies XML : XML Schémas (expression des contraintes d'unicité et de clefs), les transformations XSLT, XQuery XLink XPointer, etc 24

25 Voir la recommandation du W3C sur XPath : l'officielle sur le site du W3C ; une version française hébergée par XMLfr LA SYNTAXE GENERALE Le premier concept est celui de noeud courant : c'est l'endroit d'où l'on part En première lecture on peut imaginer qu'il s'agit de la racine du document, mais n'importe quel noeud peut jour ce rôle À partir de là, on considère trois éléments : un axe : la direction dans laquelle on se dirige à partir du noeud courant (vers le père, vers les fils, vers les frères de gauche, etc) ; un filtre : le type de noeuds qui nous intéresse dans l'axe choisi (des noeuds quelconques, des éléments quelconques ou un élément précis, des commentaires, etc) ; un prédicat optionnel : des conditions supplémentaires pour sélectionner des noeuds parmi ceux retenus par le filtre dans l'axe Ils constituent à eux trois une étape et on les noteaxe::filtre[prédicat] L'enchaînement de plusieurs étapes constitue une chemin XPath : axe1::filtre1[prédicat1]/axe2::filtre2[prédicat2] Exemple concret : parent::*/child::node()[position()=2] Si le chemin commence par un /, il s'agit d'un chemin absolu, c'est-à-dire prenant son origine à la racine du document et non pas au noeud courant Il est possible de faire une disjonction de requêtes XPath avec le signe ; on obtient alors l'union des deux ensembles de noeuds correspondants axe1::filtre1[prédicat1]/axe2::filtre2[prédicat2] axe3::filtre3[prédicat3] Chaque étape renvoie un ensemble de noeuds et pour chacun d'entre eux, on applique les étapes suivantes 25

26 LES AXES self : le noeud courant lui-même ; child : les enfants du noeud courant ; descendant, descendant-or-self : tous les descendants du noeud courant ; parent : le père du noeud courant ; ancestor, ancestor-or-self : les ancêtres du noeud courant ; attribute : les attributs du noeud courant ; preceding, following : les noeuds, précédants ou suivants, du noeud courant, dans l'ordre de lecture du document ; preceding-sibling, following-sibling : les frères, précédant ou suivant, le noeud courant ; namespace : les espaces de noms LES FILTRES node() : tous les noeuds ; text() : les noeuds textuels ; * : tous les éléments ; nom : les éléments portant ce nom ; comment() : les noeuds commentaires ; processing-instruction('cible') : les noeuds instructions, seulement les instructions cible si cet argument est fourni LES PREDICATS Ils prennent la forme de tests que les noeuds sélectionnés devront vérifier Ces tests peuvent impliquer des fonctions ou de nouveaux chemins XPath child::toto[position()=2] Il est possible de combiner ces tests à l'aide des opérateurs logiques classiques (and, or et not) ou de les enchaîner : child::toto[contains(text(),'coucou') and position()=2] child::toto[contains(text(),'coucou')][position()=2] Les deux dernières requêtes ne sont pas équivalentes : 26

27 la première renvoie le deuxième fils toto si celui-ci contient le texte coucou ; la seconde sélectionne tous les fils toto qui contiennent le texte coucou et parmi ceux-ci renvoie le deuxième LES FONCTIONS Ces fonctions peuvent apparaître dans des prédicats ou être utilisées directement dans un évaluateur d'expressions XPath Il y a des fonctions sur les chaînes de caractères et qui vont donc porter sur les contenus textuels de noeuds : concat : colle ensemble les chaînes de caractères passées en paramètres ; string-length : la longueur de la chaîne fournie ; contains, starts-with, ends-with : tests d'appartenance d'une chaîne dans une autre Des fonctions qui prennent en argument une requête XPath et vont donc porter sur des ensembles de noeuds : count : le nombre de noeuds dans l'ensemble sélectionné par la requête ; name : le nom de l'élément courant Et enfin, nous disposons de fonctions sans paramètre mais liées au noeud courant : position : le numéro du noeud courant dans la liste des noeuds considérés ; last : le nombre de noeuds sélectionnés à l'étape courante LA SYNTAXE ABREGEE Cette notation est plus simple mais pas aussi expressive que la notation étendue De plus, l'équivalent étendu de certaines notations abrégées n'est pas toujours celui que l'on pense SYNTAXE ABREGEE SYNTAXE ETENDUE self::node() 27

28 toto child::toto /toto attribute::titi //toto /descendant-or-self::node()/child::toto //toto descendant-or-self::node()/child::toto toto[2] child::toto[position() = 2] Notez bien que la notation // implique de repartir depuis la racine ; si l'on veut un descendant-or-self depuis le noeud courant, on écrira // Il faut prendre garde également au fait que //toto[2] n'est pas équivalent à mais à autrement dit : /descendant-or-self::toto[position()=2] /descendant-or-self::node()/child::toto[position()=2], //toto[2] fournit tous les noeuds toto qui sont deuxième fils de leur père ; /descendant-or-self::toto[position()=2] désigne un unique noeud, le deuxième noeud toto du document 5 COURS SUR LES TRANSFORMATIONS XSLT MOTIVATIONS ET GENERALITES 28

29 XSLT est un langage central dans le monde XML et beaucoup de qualités reconnues de XML reposent en fait sur l'utilisation de XSLT : productions de versions diffusables (HTML, PDF, etc), pérennité des documents, ouverture des formats, interopérabilité, etc La première motivation est d'associer un style à un document XML, tout comme on associe une feuille de style CSS à une page HTML Les CSS sont utilisables avec les documents XML mais présentent plusieurs défauts : les CSS ne permettent pas d'extraire les valeurs des attributs pour les faire apparaître ; il est possible avec les CSS de placer les blocs les uns par rapport aux autres, d'en faire disparaître certains, mais pas de tout réorganiser de fond en comble, encore moins de créer de nouvelles données ; le langage CSS n'est pas un langage XML Cela amène à la définition d'un nouveau format : XSL pour extensible Stylesheet Language Cependant, les critiques des CSS ont fait apparaître deux besoins bien différents : mettre en page le document XML et, par ailleurs, lui faire subir des transformations D'où la définition de deuxlangages XML : XSL-FO (XSL Formating Objects) et XSLT (XSL Transformations) Dans ce cours, on ne s'intéresse qu'à la partie XSLT Une transformation XSLT est donc d'abord un fichier XML, auquel on donne en général l'extension xsl et qui au minimum contient : <?xml version="10"?> <xsl:stylesheet version="10" xmlns:xsl=" ici des règles de transformation </xsl:stylesheet> De manière générale, XSLT permet de transformer un document XML en un autre document XML Parmi les formats utilisés comme sortie de XSLT citons : FO, XHTML, SVG, DocBook, etc Pour appliquer une feuille de transformation XSLT à un document XML, une première solution consiste à introduire un lien dans la transformation dans le document : <?xml version="10"?> <?xml-stylesheet type="text/xsl" href="doc2htmlxsl"?> <document> </document> 29

30 Ainsi, les programmes traitant le document et disposant d'un processeur XSLT pourront choisir d'appliquer la transformation, c'est le cas par exemple des navigateurs Une autre solution est d'indiquer explicitement la feuille XSLT à appliquer au moment de la transformation, par exemple avec xsltproc : xsltproc doc2htmlxsl docxml > dochtml Terminons avec OpenOffice qui est lui aussi capable d'appliquer des transformations XSLT pour charger des documents dans un format XML quelconque EXTRAIRE DU DOCUMENT D'ORIGINE Le premier besoin est de pouvoir récupérer des valeurs dans le document XML d'origine, où qu'elles se trouvent Pour cela, on met à contribution le langage XPath qui permet précisément d'obtenir une valeur ou un ensemble de noeuds particuliers L'INSTRUCTION VALUE-OF Dans sa forme la plus simple et la plus utilisée, l'élément value-of est associé à son attribut select qui lui contient une requête XPath désignant une valeur (le contenu d'en élément textuel, d'un attribut ou encore le résultat d'un calcul) En voici quelques exemples : <xsl:value-of select="nom" /> <xsl:value-of /> <xsl:value-of /> <xsl:value-of select="" /> <xsl:value-of select="count(/personnes/personne)" /> <xsl:value-of select="position()" /> L'instruction value-of possède un autre attribut disable-output-escaping qui peut prendre deux valeurs yes ou no Vaut no par défaut indiquant que les caractères comme < ou > doivent être remplacés par leurs entités : respectivement < et > On le met donc à yes pour contraindre la sortie de ces caractères sans modification L'appel à linstruction value-of provoque la sortie de la valeur calculée dans le document final LES VARIABLES Un autre besoin est de récupérer une valeur ou des noeuds et simplement de les stocker avant de les traiter Pour cela, on définit une variable comme dans 30

31 un langage de programmation quelconque, ici avec un élément noté xsl:variable, un attribut name pour nommer la variable et, à nouveau, un attribut select contenant une requête XPath <xsl:variable name="nomdefamille" select="nom" /> <xsl:variable name="ladate" /> <xsl:variable name="nbpersonne" select="count(/personnes/personne)" /> <xsl:variable name="lapersonne" /> <xsl:variable name="lesgens" select="/personnes/personne" /> Une fois la variable définie, on peut l'utiliser (typiquement dans une nouvelle requête XPath) en utilisant son nom avec le signe dollar devant : <xsl:variable name="refpersonne" /> <xsl:value-of /> <xsl:variable name="nb_matches" select="count(//rencontre)" /> <xsl:variable name="nb_victoires" /> <xsl:variable name="pc_victoires" select="100*$nb_victoires div $nb_matches" /> <xsl:value-of select="format-number($pc_victoires,'####')" /> XSLT est un langage de programmation fonctionnel et par conséquent les variables ne sont pas modifiables Il est donc déraisonnable d'écrire quelque chose comme : <xsl:variable name="i" select="$i+1" /> COPY ET COPY-OF L'instruction copy-of reproduit un ensemble de noeuds récupéré par unselect, avec la sous-arborescence de chacun L'instruction copy elle ne recopie que le noeud courant lui-même, sans son contenu et sans ses fils (il va donc falloir définir le nouveau contenu et les nouveaux descendants) <xsl:copy-of select="*" /> <xsl:copy-of select="diplome" /> <xsl:copy> coucou </xsl:copy> Des exemples plus précis seront fournis dans les prochaines sections LES REGLES DE TRANSFORMATION Les règles constituent les briques de base : on va y décrire une transformation portant sur un certains type de noeuds Une telle règle est représentée par l'élément xsl:template et contient le code XML à produire pour créer le nouveau 31

32 document Ce code doit être bien formé, cela signifie en particulier que toute balise ouverte dans une règle, doit être refermée dans cette même règle On y trouve donc des balises du nouveau format (dans la suite on produit du XHTML) mais aussi des instructions XSLT comme celles déjà vues (xsl:valueof, xsl:variable, etc) et éventuellement des appels à d'autres règles de transformation Dans un langage de programmation classique, ce bloc peut être identifié à une procédure ou un fonction LES PRINCIPES DE BASE Dans l'utilisation la plus courante, l'élément xsl:template est muni d'un attribut match contenant une requête XPath : les noeuds concernés par la transformation sont ceux qui vérifient cette requête <xsl:template match="diplome"> <xsl:template match="mesdiplomes"> Lorsque l'on décrit une règle de transformation, il faut garder à l'esprit que les requêtes XPath sont évaluées par rapport aux noeud courant Dans l'exemple suivant, nom sont respectivement un sous élément et un attribut du diplôme que l'on est en train de transformer <xsl:template match="diplome"> <h2> <xsl:value-of select="nom" /> </h2> <p> Obtenu en <xsl:value-of /> </p> Enfin, les appels se font à l'aide de l'instruction apply-templates et d'un attribut select contenant une requête XPath : celle-ci sélectionne des noeuds pour lesquels on va chercher des règles de transformation à activer Ci dessous, une feuille XSLT complète, qui commence par traiter la racine <?xml version="10"?> <xsl:stylesheet version="10" xmlns:xsl=" <xsl:template match="/"> <html> <body> <xsl:apply-templates select="mesdiplomes" /> </body> </html> 32

33 <xsl:template match="mesdiplomes"> <h1>mon cursus</h1> <xsl:apply-templates select="diplome" /> <xsl:template match="diplome"> <h2> <xsl:value-of select="nom" /> </h2> <p> Obtenu en <xsl:value-of /> </p> </xsl:stylesheet> Précisons que l'attribut select de apply-templates n'est pas obligatoire, il peut être omis Dans ce cas, on va chercher à appliquer les règles de transformation à chacun des noeuds fils (ce qui revient à poserselect="node()" par défaut) Cela est particulièrement intéressant dans le cas d'un contenu mixte : <xsl:template match="paragraph"> <p> <xsl:apply-templates /> </p> <xsl:template match="important"> <em><xsl:value-of select="" /></em> Lors de la transformation d'un paragraphe, les noeuds texte seront recopiés à l'identique, tandis que les éléments important seront traités par la seconde règle Terminons avec des utilisations des instructions copy-of et copy L'exemple suivant remplace les éléments paragraph en éléments p tandis que le contenu, probablement mixte (texte et balises), est recopié à l'identique : <xsl:template match="paragraph"> <p> <xsl:copy-of select="*" /> </p> La règle ci-dessous permet de récupérer l'ensemble d'un document XML en ajoutant un attribut à chacune des balises ouvertes : <xsl:template match="* /"> <xsl:copy> <xsl:attribute name="lang">fr</xsl:attribute> <xsl:apply-templates /> </xsl:copy> 33

34 LES MODES Pour pouvoir traiter plusieurs fois mais de manière différente les mêmes éléments, il est possible de spécifier un mode, dans la règle de transformation et dans son appel <?xml version="10"?> <xsl:stylesheet version="10" xmlns:xsl=" <xsl:template match="/"> <html> <body> <h1>mon cursus</h1> <ul> <xsl:apply-templates select="diplome" mode="sommaire" /> </ul> <xsl:apply-templates select="diplome" mode="tout" /> </body> </html> <xsl:template match="diplome" mode="sommaire" > <li> <xsl:value-of select="nom" /> </li> <xsl:template match="diplome" mode="tout"> <h2> <xsl:value-of select="nom" /> </h2> <p> Obtenu en <xsl:value-of /> </p> </xsl:stylesheet> NOTATIONS ET INSTRUCTIONS ALTERNATIVES Une difficulté apparaît lorsque l'on faire apparaître une valeur récupérée par value-of comme valeur d'attribut dans le nouveau document Cela conduirait à un code XML mal formé : <a href="<xsl:value-of />"> <xsl:value-of select="lien/texte" /> </a> Dans ce cas, on préférera utiliser une notation entre accolades : <a <xsl:value-of select="lien/texte" /> </a> 34

35 Une autre possibilité est de recourir aux instructions xsl:element etxsl:attribute : <xsl:element name="a"> <xsl:attribute name="href"> <xsl:value-of /> </xsl:attribute> <xsl:value-of select="lien/texte" /> </xsl:element> LES REGLES IMPLICITES ET LES PRIORITES D'après la recommandation du W3C, les règles suivantes sont implicitement définies dans toute feuille de style : <xsl:template match="* /"> <xsl:apply-templates /> <xsl:template <xsl:value-of select="" /> <xsl:template match="processing-instruction() comment()" /> Autrement dit, la première transformation que nous avons considérée et qui était vide, produit déjà un résultat : le contenu textuel de chaque élément Il faut observer que le premier xsl:apply-template sélectionne tous les noeuds qui ne sont pas des attributs, par conséquent la deuxième règle produira le contenu textuel des éléments mais pas celui des attributs puisque ceux-ci ne lui sont pas fournis Il apparaît maintenant que, pour un noeud sélectionné, plusieurs règles de transformation peuvent s'appliquer et il s'agit d'en choisir une Pour cela, chaque règle de transformation se voit attribuer une priorité, cela permet de déterminer quelle règle doit être appliquée lorsqu'un noeud en active plusieurs L'attribution des priorités est la suivante et traduit l'intuition que la règle la plus spécifique (selon son match) est celle à appliquer : "element" et ont chacun une priorité valant 0 ; "node()", "*", et "processing-instruction()" ont chacun une priorité valant -0,5 ; +0,5 dans les autres cas Ainsi, les règles implicites ont la priorité la plus basse (-0,5) et perdront systématiquement contre des règles plus spécifiques 35

36 En cas d'égalité, la recommandation du W3C laisse le choix aux processeurs XSLT de s'arrêter en signalant une erreur ou de choisir la règle activable avec la priorité la plus haute et qui apparaît en dernier dans le fichier de transformation Enfin, indiquons qu'il est possible de définir soi-même la priorité d'une règle avec l'attribut priority de l'élément xsl:template LES REGLES NOMMEES ET LEURS PARAMETRES Il est possible d'activer une règle simplement en lui donnant un nom et en l'appellant à l'aide de l'instruction call-template : <xsl:template name="signature"> <hr /> Fabien Torre Copyright 2006 <xsl:template select=""> <xsl:call-template name="signature" /> On voit ici clairement le parallèle avec les procédures et fonctions des autres langages de programmation et l'étape suivante est naturellement de munir les règles de transformation de paramètres Cela se fait avecxsl:param pour la déclaration des paramètres dans la règle et xsl:with-param pour leur instanciation au moment de l'appel : <xsl:template name="faireunlien"> <xsl:param name="url" /> <xsl:param name="texte" /> <a href="{$url}"> <xsl:value-of select="$texte" /> </a> <xsl:template select="personne" mode="lien"> <xsl:call-template name="faireunlien"> <xsl:with-param name="texte" select="concat(prénom,' ',nommarital,' ',nom)" /> <xsl:with-param name="url" /> </xsl:call-template> 36

37 LES REGLES RECURSIVES Terminons avec un cas particulier de l'appel de règle, celui où appelante et appelée ne sont qu'une seule et même règle L'exemple suivant montre une telle règle qui produit le chemin conduisant au noeud courant : <xsl:template match="domaine"> <xsl:apply-templates select="parent::domaine" /> <li><a /></a></li> Naturellement, la récursivité est encore plus explicite avec une règle nommée <xsl:template name="ancêtres"> <xsl:param name="noeud" /> <xsl:if test="name($noeud)='domaine'"> <xsl:call-template name="ancêtres"> <xsl:with-param name="noeud" select="$noeud/parent::*" /> </xsl:call-template> <li><a /></a></li> </xsl:if> LES STRUCTURES DE CONTROLE LE TEST UNIQUE AVEC XSL:IF Comme dans tout langage de programmation, on retrouve avec xsl:ifla possibilité de faire un test et des actions en fonction du résultat Ici, on regarde si un attribut est renseigné et on produit du code seulement si c'est le cas : <xsl:if ''"> <a </xsl:if> Dans la cas suivant, on récupère un ensemble de noeuds et on vérifie qu'il est non vide avant de le traiter : <xsl:variable name="tout" select="mesdiplomes/diplome" /> <xsl:if test="count($tout)>0"> <h2>mon cursus</h2> <xsl:apply-templates select="$tout" /> </xsl:if> Notons que cette instruction if ne dispose pas de else 37

Introduction à XML. 1. Notions de base. Introduction à XML

Introduction à XML. 1. Notions de base. Introduction à XML Introduction à XML INTRODUCTION À XML 1. NOTIONS DE BASE 2. EXEMPLE SIMPLE 3. SYNTAXE XML 3.1. LES CARACTÈRES SPÉCIAUX 4. DTD 5. DOCUMENT XML AVEC FEUILLE DE STYLE CSS 6. XLS ET XSLT 6.1. EXEMPLE DE DOCUMENT

Plus en détail

Le langage XML. Sébastien Jean. IUT de Valence Département Informatique. v3.3, 10 novembre 2008

Le langage XML. Sébastien Jean. IUT de Valence Département Informatique. v3.3, 10 novembre 2008 Le langage XML Sébastien Jean IUT de Valence Département Informatique v3.3, 10 novembre 2008 Qu est ce que XML? Généralités XML = extensible Markup Language Spécification du W3C Version 1.0 (1998-2004)

Plus en détail

XML, DTD. Dan VODISLAV. Université de Cergy-Pontoise. Licence Informatique L3. Plan

XML, DTD. Dan VODISLAV. Université de Cergy-Pontoise. Licence Informatique L3. Plan XML, DTD Dan VODISLAV Université de Cergy-Pontoise Licence Informatique L3 Plan XML: pourquoi et comment Principes et caractéristiques de base Comparaison avec HTML et les BD relationnelles Le format XML

Plus en détail

XML (extensible Markup Language)

XML (extensible Markup Language) XML (extensible Markup Language) Références : XML, Micro Application e-poche http://giles.chagnon.free.fr/cours/xml/base.html http://www.cgmatane.qc.ca/forgetj/formation/int4/xml.php 1. Qu est-ce que XML?

Plus en détail

XML. Nicolas Singer. Maître de conférence, université Champollion

XML. Nicolas Singer. Maître de conférence, université Champollion XML Nicolas Singer Maître de conférence, université Champollion XML? Langage de description de documents électroniques : Pour stocker et échanger des documents Par extension, pour représenter tout type

Plus en détail

Internet statique et dynamique XML. Programmation de sites web statiques et dynamiques. extended Markup Language (XML) Jean CARTIER MASTER INI

Internet statique et dynamique XML. Programmation de sites web statiques et dynamiques. extended Markup Language (XML) Jean CARTIER MASTER INI Programmation de sites web statiques et dynamiques extended Markup Language () Jean CARTIER MASTER INI jcartier@laposte.net 1 extented Markup Language () Le HTML est un langage très bien adapté à la diffusion

Plus en détail

DTD (Document Type Definition) - XML (extensible Markup Language)

DTD (Document Type Definition) - XML (extensible Markup Language) DTD (Document Type Definition) - XML (extensible Markup Language) Références : XML, Micro Application e-poche http://giles.chagnon.free.fr/cours/xml/base.html http://www.cgmatane.qc.ca/forgetj/formation/int4/xml.php

Plus en détail

" extensible Markup Language " XML

 extensible Markup Language  XML " extensible Markup Language " XML Sylvie Vignes, Département Informatique et Réseaux École Nationale Supérieure des Télécommunications 46, rue Barrault 75634 Paris cedex 13 Département Informatique et

Plus en détail

Les technologies XML. Cours 2 : Transformation et Formatage de documents XML : Cours 2.2 : XSLT. Novembre 2010 - Version 3.2 -

Les technologies XML. Cours 2 : Transformation et Formatage de documents XML : Cours 2.2 : XSLT. Novembre 2010 - Version 3.2 - Les technologies XML Cours 2 : Transformation et Formatage de documents XML : Cours 2.2 : XSLT Novembre 2010 - Version 3.2 - SOMMAIRE DU COURS TRANSFORMATIONS DE DOCUMENTS XML Introduction à XSL Noeuds

Plus en détail

IV. Localisation des composants avec XPath

IV. Localisation des composants avec XPath IV. Localisation des composants avec XPath 90 Langage XPath Est un langage d expression (non XML) Standard du W3C: XPath1.0 (1999), XPath2.0 (2010), XPath3.0 (2014) Objectif: exprimer des requêtes pour

Plus en détail

Université de Reims Champagne-Ardenne XML. DTD : Document Type Definition. F. Nolot Licence professionnelle CMSII 2004-2005 1

Université de Reims Champagne-Ardenne XML. DTD : Document Type Definition. F. Nolot Licence professionnelle CMSII 2004-2005 1 Université de Reims Champagne-Ardenne XML DTD : Document Type Definition F. Nolot Licence professionnelle CMSII 2004-2005 1 Qu'est qu'une DTD? Permet de vérifier qu'un document XML est conforme à une syntaxe

Plus en détail

Introduction. Transformer des documents XML. XPath. XPath. Langage d'expressions de chemins dans un. permet de désigner un noeud (sous-arbre)

Introduction. Transformer des documents XML. XPath. XPath. Langage d'expressions de chemins dans un. permet de désigner un noeud (sous-arbre) Introduction Transformer des documents 1 Désignation d un nœud (sous-arbre) d un document : XPATH Associer une présentation à un document : CSS Transformer un document en un autre document (HTML) : XSLT

Plus en détail

XML et DTD: rappels Cours Document et Web Sémantique. Quelques concepts importants. Évolution de XML. Organisation

XML et DTD: rappels Cours Document et Web Sémantique. Quelques concepts importants. Évolution de XML. Organisation Plan et : rappels Cours Document et Web Sémantique Nicolas Malandain 1 Généralités Organisation Les éléments Les attributs Les sections littérales Les Entités Conseils 2 Organisation Les éléments Les attributs

Plus en détail

XSL Langage de transformation de XML. Approfondissements

XSL Langage de transformation de XML. Approfondissements XSL Langage de transformation de XML Approfondissements http://www.zvon.org/xxl/xsltreference/output/index.html Retour sur les modèles (template) Une feuille de style peut contenir plusieurs modèles Chaque

Plus en détail

Programmation d applications pour le Web

Programmation d applications pour le Web Programmation d applications pour le Web Cours 2 ème année ING ISI-Tunis Elaboré par: Hela LIMAM Chapitre 3 Partie 2 XML+XSL Année universitaire 2011/2012 Semestre 2 1 Le XML ne fait rien. Il faudra passer

Plus en détail

2. XML. Cours Web. extended Markup Language (XML) 2. XML 2. XML. extented Markup Language (XML) Lionel Seinturier. Université Pierre & Marie Curie

2. XML. Cours Web. extended Markup Language (XML) 2. XML 2. XML. extented Markup Language (XML) Lionel Seinturier. Université Pierre & Marie Curie Cours Web extended Markup Language (XML) Lionel Seinturier Université Pierre & Marie Curie Lionel.Seinturier@lip6.fr extented Markup Language (XML) Constat sur HTML langage très bien adapté à la diffusion

Plus en détail

INTRODUCTION. Plan du cours. Introduction à XML XML? XML

INTRODUCTION. Plan du cours. Introduction à XML XML? XML Plan du cours Introduction à XML Fabrice Rossi http://apiacoa.org/contact.html. Université Paris-IX Dauphine 1. XML : (a) introduction (b) le langage (c) les DTD (d) les espaces de noms 2. les schémas

Plus en détail

Introduction au langage XML. Nhan Le Thanh

Introduction au langage XML. Nhan Le Thanh Introduction au langage XML Nhan Le Thanh 1 Plan du cours extensible Markup Language Éléments de base du XML DTD : Document Type Description S1 XPath : XML Path Language XML Schema S2 XSLT : Transformations

Plus en détail

Créer des documents XML

Créer des documents XML 1 Créer des documents XML La spécification XML définit comment écrire un document au format XML. XML n est pas un langage en lui-même mais, en revanche, un document XML est écrit dans un langage à balises

Plus en détail

Outil pour le Web XML. Polytech Marseille. E. Tranvouez. Département Génie Industriel et Informatique

Outil pour le Web XML. Polytech Marseille. E. Tranvouez. Département Génie Industriel et Informatique Outil pour le Web XML E. Tranvouez erwan.tranvouez@polytech.univ-mrs.fr http://erwan.tranvouez.free.fr Polytech Marseille Département Génie Industriel et Informatique 1 Sommaire 2 Problématique Contexte,

Plus en détail

XML, DOM & XSL Synthèse de lecture

XML, DOM & XSL Synthèse de lecture Dorine MAZEYRAT XML, DOM & XSL Synthèse de lecture Novembre 2008 NFE107 - Urbanisation des SI 0 SOMMAIRE 1. LE LANGAGE XML...2 1.1. Définition...2 1.2. Historique...2 1.3. Objectif...2 1.4. Présentation

Plus en détail

INTRODUCTION. méta-langage

INTRODUCTION. méta-langage INTRODUCTION renault twingo Bic 1999 etc.. XML : extensible

Plus en détail

Résumé DTD. A- Définir des éléments complexes ( = éléments possédant des éléments fils)

Résumé DTD. A- Définir des éléments complexes ( = éléments possédant des éléments fils) DTD, Document Type Definition 1-Utilité de la DTD La DTD permet la définition de la STRUCTURE d un type de documents. C est une forme de grammaire qui va servir à spécifier les noms des éléments et la

Plus en détail

Bases de Données Avancées

Bases de Données Avancées Bases de Données Avancées Enseignant / chargé de TD : Dario COLAZZO www.lri.fr/~colazzo Chargée de TP : Jesús CAMACHO-RODRIGUEZ www.lri.fr/~camacho Plan Tuning d index Concurrence Reprise sur panne Données

Plus en détail

Plan. 1.Rappels 2.Type de documents 3.Définition de types de documents (DTD) 4.Syntaxe des DTD 5.Utilisation des DTD. Référence :

Plan. 1.Rappels 2.Type de documents 3.Définition de types de documents (DTD) 4.Syntaxe des DTD 5.Utilisation des DTD. Référence : Définitions de types de documents : DTD Plan 1.Rappels 2.Type de documents 3.Définition de types de documents (DTD) 4.Syntaxe des DTD 5.Utilisation des DTD Référence : Extensible Markup Language (XML)

Plus en détail

Rapport TP4. Nicolas LERMÉ nicolas.lerme@ig-edu.univ-paris13.fr. Dernière MAJ : 16 avril 2007 @ 22:58. Cours de Web Sémantique

Rapport TP4. Nicolas LERMÉ nicolas.lerme@ig-edu.univ-paris13.fr. Dernière MAJ : 16 avril 2007 @ 22:58. Cours de Web Sémantique Cours de Web Sémantique Nicolas LERMÉ nicolas.lerme@ig-edu.univ-paris13.fr Dernière MAJ : 16 avril 2007 @ 22:58 A propos de ce document Cet article est généré par LATEX, un outil de compilation open-source

Plus en détail

Web et présentation d information spatiale

Web et présentation d information spatiale Université de La Rochelle LUP-SIG 2004-2005 Programmation SIG et Internet Cartographique Web et présentation d information spatiale Format XML Jean-Michel FOLLIN jmfollin@univ-lr.fr Limitations HTML Limitations

Plus en détail

Introduction à XPath

Introduction à XPath Introduction à XPath Introduction à XPath xml-xpath Code: xml-xpath Originaux url: http://tecfa.unige.ch/guides/tie/html/xml-xpath/xml-xpath.html url: http://tecfa.unige.ch/guides/tie/pdf/files/xml-xpath.pdf

Plus en détail

XPATH XSLT. Objectif du cours. Plan. XPath. Exemples d utilisations. Localisation de documents XML XPATH XSLT

XPATH XSLT. Objectif du cours. Plan. XPath. Exemples d utilisations. Localisation de documents XML XPATH XSLT Objectif du cours XPATH XSLT Yannick Prié UFR Informatique Université Lyon 1 UE2.2 Master SIB M1 20042005 Xpath syntaxe permettant de désigner des informations dans un arbre XML sous la forme de chemins

Plus en détail

Organisation d un document XSLT

Organisation d un document XSLT Les comportements serveur XSLT CHAPITRE 6 375 tion, et générera un document résultat pouvant être une page XHTML, ou tout type de format selon le média visé (XML, WML, texte, etc.). Voir figure 6-5-a.

Plus en détail

Modélisation et interopérabilité : Semaine 40, cours 3

Modélisation et interopérabilité : Semaine 40, cours 3 Modélisation et interopérabilité : Semaine 40, cours 3 Benoît Valiron http://inf356.monoidal.net/ 1 Question pratique : Evaluation Trois choses : Un examen final (coef 2/3)

Plus en détail

Devoir XML / XSLT / Unicode

Devoir XML / XSLT / Unicode Devoir XML / XSLT / Unicode Frédérik Bilhaut Université de Caen Département d'informatique Les fichiers fournis pour réaliser le devoir sont à récupérer ici : http://www.info.unicaen.fr/~fbilhaut/ens/radi/devoir.tgz

Plus en détail

II- Validation d'un document XML. Prof. M.D. RAHMANI Technologies XML Master IT 2013-2014 1

II- Validation d'un document XML. Prof. M.D. RAHMANI Technologies XML Master IT 2013-2014 1 II- Validation d'un document XML DTD (Document Type Definition) 1 Validation d'un document XML par une DTD Document XML valide Types de DTD (interne, externe) Déclarations d'éléments Déclaration d'attributs

Plus en détail

Le but de ce document est de donner les principes de manipulation de données XML, via XSLT à l'aide de PHP5.

Le but de ce document est de donner les principes de manipulation de données XML, via XSLT à l'aide de PHP5. Exemple XML XSLT avec PHP5 Rédacteur: Alain Messin CNRS UMS 2202 Admin06 06/09/2007 Le but de ce document est de donner les principes de manipulation de données XML, via XSLT à l'aide de PHP5. Il ne s'agit

Plus en détail

DTD & XML Schema. Sébastien Laborie Sebastien.Laborie@iutbayonne.univ- pau.fr. Christian Sallaberry Christian.Sallaberry@univ- pau.

DTD & XML Schema. Sébastien Laborie Sebastien.Laborie@iutbayonne.univ- pau.fr. Christian Sallaberry Christian.Sallaberry@univ- pau. DTD & XML Schema Sébastien Laborie Sebastien.Laborie@iutbayonne.univ- pau.fr Christian Sallaberry Christian.Sallaberry@univ- pau.fr DTD Le rôle d une DTD (Document Type Definition) est de définir la structure

Plus en détail

Plusieurs façons de communiquer AJAX? Communication, manière facile. AJAX en jquery

Plusieurs façons de communiquer AJAX? Communication, manière facile. AJAX en jquery Programmation web AJAX Jean-Christophe Dubacq IUT de Villetaneuse S3 2013 AJAX A Jean-Christophe Dubacq (IUTV) Programmation web S3 2013 1 / 33 Le modèle classique Jean-Christophe Dubacq (IUTV) Programmation

Plus en détail

XML Les documents semi-structurés

XML Les documents semi-structurés XML Les documents semi-structurés XML - extensible Markup Language XSL(T) - extensible Stylesheet Language XSD XML Schema DTD Document Type Definition Ivan Madjarov, IUT-R&T, 2006-2008 XML dérive d'un

Plus en détail

Master Informatique 2 «RADI» Thème Applications Documentaires XML. Frédérik Bilhaut fbilhaut@info.unicaen.fr

Master Informatique 2 «RADI» Thème Applications Documentaires XML. Frédérik Bilhaut fbilhaut@info.unicaen.fr Master Informatique 2 «RADI» Thème Applications Documentaires Frédérik Bilhaut fbilhaut@info.unicaen.fr XML Frédérik Bilhaut Université de Caen MI2 RADI 2004/2005 1 Plan du cours (4 2h) La sphère XML Le

Plus en détail

Chapitre II. Notions de base

Chapitre II. Notions de base Chapitre II 1 2 3 Espace de noms Web Sémantique M1 2015-2016 10 Chapitre II 1 ref 2 3 Espace de noms Web Sémantique M1 2015-2016 11 Uniform Resource Identifier () Une est une chaîne qui identifie une ressource

Plus en détail

et son environnement Étude de cas : fiche BU (1)

et son environnement Étude de cas : fiche BU (1) et son environnement PARTIE 1/3 Présentation de la norme XML 1.0 Définition de Type de Document Introduction aux Schémas XML 1 Jérôme Lehuen - version du 15/09/13 Étude de cas : fiche BU (1) Exemple de

Plus en détail

Cours HTML/PHP. Cours HTML/PHP. E.Coquery. emmanuel.coquery@liris.cnrs.fr

Cours HTML/PHP. Cours HTML/PHP. E.Coquery. emmanuel.coquery@liris.cnrs.fr Cours HTML/PHP E.Coquery emmanuel.coquery@liris.cnrs.fr Pages Web Pages Web statiques Principe de fonctionnement : L utilisateur demande l accès à une page Web depuis son navigateur. Adresse tapée, clic

Plus en détail

Rémi Godard Vivian Perez Florian Pérugini Bertrand Vitrant. Comparateur de documents XML

Rémi Godard Vivian Perez Florian Pérugini Bertrand Vitrant. Comparateur de documents XML Rémi Godard Vivian Perez Florian Pérugini Bertrand Vitrant DOCUMENTATION TECHNIQUE Comparateur de documents XML SOMMAIRE 1 Introduction... 3 2 Langage et choix de programmation... 4 2.1 Le langage PHP...

Plus en détail

Université de Reims Champagne-Ardenne. XML - Introduction. F. Nolot Licence professionnelle CMSII 1

Université de Reims Champagne-Ardenne. XML - Introduction. F. Nolot Licence professionnelle CMSII 1 Université de Reims Champagne-Ardenne XML - Introduction F. Nolot Licence professionnelle CMSII 1 Université de Reims Champagne-Ardenne XML - Introduction Historique F. Nolot Licence professionnelle CMSII

Plus en détail

WSIA? 6 cours de 3h 5 séances de TD/TP 3h. 1 séance de soutenance de 3h. Evaluation?

WSIA? 6 cours de 3h 5 séances de TD/TP 3h. 1 séance de soutenance de 3h. Evaluation? 2008-2009 Master 1 Info. Info 2 WSIA Cours 1 : Introduction à XML et aux DTD Jérôme Nobécourt jerome.nobecourt@gmail.com Sylvie Després sylvie.despres@lipn.univ-paris13.fr WSIA? 6 cours de 3h 5 séances

Plus en détail

Pages Web statiques. LIF4 - Initiation aux Bases de données : PHP. Pages Web dynamiques. Illustration. Illustration

Pages Web statiques. LIF4 - Initiation aux Bases de données : PHP. Pages Web dynamiques. Illustration. Illustration statiques LIF4 - Initiation aux Bases de données : E.Coquery emmanuel.coquery@liris.cnrs.fr http ://liris.cnrs.fr/ ecoquery Principe de fonctionnement : L utilisateur demande l accès à une page Web depuis

Plus en détail

Transformations XML vers XML, HTML, XHTML, RTF et modification du contenu des documents

Transformations XML vers XML, HTML, XHTML, RTF et modification du contenu des documents 6 Transformations XML vers XML, HTML, XHTML, RTF et modification du contenu des documents Prenons l'exemple d'une entreprise dont le site d'e-commerce a été réalisé avec la solution XML Commerce One, qui

Plus en détail

STRUCTURE D UNE PAGE HTML/CSS

STRUCTURE D UNE PAGE HTML/CSS STRUCTURE D UNE PAGE HTML/CSS C01 1. STRUCTURE Le langage Html est composé de balises ou (tags) qui permettent de structurer le texte, de le mettre en forme et d insérer des images. Ces instructions sont

Plus en détail

7.5 Quelques notions sur XML Schema

7.5 Quelques notions sur XML Schema 7.5 Quelques notions sur XML Schema WMK-schema est une autre façon de spécifier des données XML (une autre façon d écrire un schéma). N.B. : Un XML-schéma est lui-même un document XML! Mais il spécifie

Plus en détail

XML et arbre. Représentation d un document XML sous forme d arbre. Commençons par deux exemples... suivis des explications.

XML et arbre. Représentation d un document XML sous forme d arbre. Commençons par deux exemples... suivis des explications. XML et arbre Représentation d un document XML sous forme d arbre. Commençons par deux exemples... suivis des explications. Le texte de A Le texte de B

Plus en détail

Description, parcours et transformation d un. document XML. Jacques Le Maitre. Université de Toulon et du Var

Description, parcours et transformation d un. document XML. Jacques Le Maitre. Université de Toulon et du Var document XML Jacques Le Maitre Université de Toulon et du Var Jacques Le Maitre document XML 1 document XML 2 Différents aspects d un document Editorial présentation du document. Signalétique identification

Plus en détail

Le XML et ses normes associées partie I

Le XML et ses normes associées partie I Le XML et ses normes associées partie I TechnofuturTIC (formateur : Luc Libert, ULB) Exercice à distance Version complète (et plus complexe) Le but de l exercice est de mettre en pratique de manière concrète

Plus en détail

Langage HTML (2 partie) <HyperText Markup Language> <tv>lt La Salle Avignon BTS IRIS</tv>

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

Plus en détail

Introduction au langage SQL

Introduction au langage SQL Introduction au langage SQL Les bases de données relationnelles Le langage SQL est un langage universel destiné à travailler sur des bases de données relationnelles. Nous considérerons ici qu'une base

Plus en détail

Les outils du XML. Xpath, XSL, XSLT, et autres trucs en X

Les outils du XML. Xpath, XSL, XSLT, et autres trucs en X Les outils du XML Xpath, XSL, XSLT, et autres trucs en X XPATH Un outil de sélection de nœud Document XML : vue arborescente Lemay Aurélien 5 Juin

Plus en détail

XML par la pratique Bases indispensables, concepts et cas pratiques (3ième édition)

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

Plus en détail

Présentation de XQuery

Présentation de XQuery 97 Chapitre 5 Présentation de XQuery 1. Présentation de XQuery Présentation de XQuery XML Query (plus communément appelé XQuery) est une spécification du W3C. De nos jours, de nombreux documents sont au

Plus en détail

XSL est utilisé pour permettre de convertir les données par exemple en HTML pour l affichage

XSL est utilisé pour permettre de convertir les données par exemple en HTML pour l affichage المدرسة الوطنية العليا لإلعالم اآللي Ecole nationale Supérieure d Informatique Ecole Doctorale Promotion 2012-2013 Présenté par : Dr. Kamel Boukhalfa boukhalk@gmail.com, kboukhalfa@usthb.dz Source : Yves

Plus en détail

Introduction à XML. Définitions Applications Règles Affichage et transformation Documentation mathématique Métadonnées En conclusion

Introduction à XML. Définitions Applications Règles Affichage et transformation Documentation mathématique Métadonnées En conclusion Introduction à XML transformation 1 XML n est pas Transformations Une norme de description bibliographique «Enfin le moyen pour que les documentalistes s approprient la documentation en ligne» (entendu

Plus en détail

T-GSI STAGE RENOVATION - HTML.Chapitre 6 - Le Langage XML

T-GSI STAGE RENOVATION - HTML.Chapitre 6 - Le Langage XML T-GSI STAGE RENOVATION - HTML.Chapitre 6 - Le Langage XML Sources du document : Introduction au XML, Simon St-Laurent, éditions Eyrolles, année 2000 ; XML en concentre (XML in a Nutshell) 3 ème édition,

Plus en détail

Langages centrés données 1/10/2015 M2 Fiil

Langages centrés données 1/10/2015 M2 Fiil Langages centrés données 1/10/2015 M2 Fiil Exercice 1 TD n o 2 Pour cet exercice, récupérer les fichier ApplyXPath.class, movies.xml et movies.dtd sur la page du cours (bouton droit, enregistrer sous).

Plus en détail

Observons un site... Une entête. Le corps de la page. Un à-côté. Un pied de page

Observons un site... Une entête. Le corps de la page. Un à-côté. Un pied de page Créer une page web Observons un site... Une entête Le corps de la page Un à-côté Un pied de page Un logo Un menu Un autre menu Une entête La fenêtre de gauche La partie principale de la page Plusieurs

Plus en détail

INU3011 Documents structurés

INU3011 Documents structurés INU3011 Documents structurés Cours 1 Hiver 2016 Copyright 2010-2016 Yves Marcoux - Reproduction interdite 1 Plan Introduction à XML En quoi ce cours peut vous être utile dans votre carrière? Contextes

Plus en détail

XML-Bases. www.fenetresurtoile.com XHTML. Les bases. Jean-François Ramiara. INP-ENM 04/10/2012 Toulouse. Copyright J.F. Ramiara Tous droits réservés

XML-Bases. www.fenetresurtoile.com XHTML. Les bases. Jean-François Ramiara. INP-ENM 04/10/2012 Toulouse. Copyright J.F. Ramiara Tous droits réservés XHTML Les bases Jean-François Ramiara INP-ENM 04/10/2012 Toulouse 1 Généralités Jean-François Ramiara XML 2 jours Initiation à XML Contenu Cours Exercices Support PDF Horaires Tour de table 2 Sommaire

Plus en détail

Langage (X)HTML Damien Nouvel

Langage (X)HTML Damien Nouvel Langage (X)HTML Plan Quelques statistiques du web Architecture client / serveur Langage XML Mise en forme HTML Structure d'un document HTML 2 / 36 Plan Quelques statistiques du web Architecture client

Plus en détail

Bertrand DAVID : Interaction Humain-Machine

Bertrand DAVID : Interaction Humain-Machine Interaction Humain-Machine Xml La transformation avec Xslt Les parseurs les outils pour Xml Transformation de documents dans les applications multimédia 1 XML extensible Markup Langage Un langage universel

Plus en détail

extensible Markup Language

extensible Markup Language LES TECHNOLOGIES DU WEB 1 ère Partie : au Web 1- à l'hypertexte 2- Présentation du protocole HTTP 3- de bases des CGI 4- Présentation du WEB2 (AJAX) 2 ème Partie : Présentation de HTML & XHTML 3 ème Partie

Plus en détail

<Derf:XML easy="true"> <Derf:title part="3"> Initiation à XML </Derf:title> </Derf:XML>

<Derf:XML easy=true> <Derf:title part=3> Initiation à XML </Derf:title> </Derf:XML> Initiation à XML By F.REMISE Microsoft MVP derf@asp-php.net www.asp-php.net By F.Remise alias Derf INTRODUCTION Dans le Part.2 nous

Plus en détail

Introduction. Principes de fonctionnement. Le squelette a son propre langage. Syntaxe

Introduction. Principes de fonctionnement. Le squelette a son propre langage. Syntaxe Introduction Ce document a pour objectif de présenter la conception «technique» des modèles de pages pour le logiciel de publication collaborative en ligne SPIP et de servir de «mémo» pour son utilisation.

Plus en détail

Mise à Niveau XML. Sana Sellami sana.sellami@univ-amu.fr

Mise à Niveau XML. Sana Sellami sana.sellami@univ-amu.fr Mise à Niveau XML Sana Sellami sana.sellami@univ-amu.fr M2PRO SIR 2015-2016 2 Pourquoi? Vous rafraîchir la mémoire Qu est ce qu un document XML? Qu est ce qu un schéma XML? Comment manipuler un document

Plus en détail

HTML/XHTML/XML. Olivier Aubert 1/26

HTML/XHTML/XML. Olivier Aubert 1/26 HTML/XHTML/XML Olivier Aubert 1/26 Liens http://www.brics.dk/~amoeller/xml/overview.html http://www.w3.org/tr/xhtml1/#guidelines : annexe C, compatibility guidelines http://www710.univ-lyon1.fr/~exco/cours/cours/htm

Plus en détail

LI345 - EXAMEN DU 30 MAI 2012

LI345 - EXAMEN DU 30 MAI 2012 N d anonymat : page 1 LI345 - EXAMEN DU 30 MAI 2012 Durée : 2h ---documents autorisés Transactions Soit la relation R(x, y) contenant 10 nuplets pour lesquels l attribut x vaut respectivement de 1 à 10.

Plus en détail

XML XML. Example. Structure de document XML

XML XML. Example. Structure de document XML XML XML Wieslaw Zielonka extensible Markup Language C est un standard ouvert élaboré par World Wide Web Consortium (W3C). Les balises XML divisent le documents en plusieurs éléments. 1 er décembre 2012

Plus en détail

Les feuilles de styles

Les feuilles de styles Qu'est-ce que les feuilles de style? Les feuilles de style CSS pour Cascading Style Sheets en anglais est un langage informatique qui sert à décrire la présentation des documents HTML. L'un des objectifs

Plus en détail

LA TYPOGRAPHIE du WEB

LA TYPOGRAPHIE du WEB DOSSIERS de VEILLE TECHNOLOGIQUE J.C.Sohm URL : http://cerig.efpg.inpg.fr/icg/dossiers/typo/chap5.htm CERIG Avril 2000 LA TYPOGRAPHIE du WEB 5- Les feuilles de style Définition, structure et fonctionnalités

Plus en détail

1 XML : Une première définition. 2.1 SGML... 1 2.2 HTML... 2 2.3 Feuille de style CSS... 3. 3 XML : extensible Markup Language 4

1 XML : Une première définition. 2.1 SGML... 1 2.2 HTML... 2 2.3 Feuille de style CSS... 3. 3 XML : extensible Markup Language 4 Introduction au Table des matières 1 : Une première définition 1 2 Historique d 1 2.1 SGML................................................. 1 2.2 HTML................................................. 2

Plus en détail

XML : l ASCII de demain

XML : l ASCII de demain Carrefour de l information XML : l ASCII de demain Philippe Mabilleau ing. 3 octobre 2002 Le langage XML Historique : De l ASCII à XML XML : Le langage XML : La programmation XML : Les transformations

Plus en détail

Navigateur généalogique 1 / 10

Navigateur généalogique 1 / 10 Navigateur généalogique 1 / 10 Navigateur généalogique Mode d'emploi du logiciel «NaviGeneal.exe» de Marcel Délèze Version du logiciel 2015-09-29, version du mode d'emploi : 2015-09-29 NaviGeneal permet

Plus en détail

INITIATION ACCESS. Par Lionel COSTE ABSALON Formations

INITIATION ACCESS. Par Lionel COSTE ABSALON Formations INITIATION ACCESS Par Lionel COSTE ABSALON Formations Vocabulaire et structure d'une base de données Reprenons notre base Access. Dès sa création, avant même de saisir la moindre donnée, on peut se rendre

Plus en détail

Une introduction à XML/XSLT

Une introduction à XML/XSLT Une introduction à XML/XSLT Bernd Amann et Philippe Rigaux Cnam 13 mars 2009 Table des matières 1 L application et ses besoins 2 2 XML, format universel 3 2.1 Qu est-ce que XML?.....................................

Plus en détail

1 ère partie : XML SCHEMA

1 ère partie : XML SCHEMA 1 ère partie : XML SCHEMA Structure globale d'un schéma XML Description des éléments Déclaration d'un élément simple Déclaration d'un élément copmlexe Déclaration d'un élément quelconque Validation d'un

Plus en détail

Séances 4a/4b Technologies du Web

Séances 4a/4b Technologies du Web Formations en Informatique de Lille 2012/2013 Séances 4a/4b Technologies du Web février 2013 Javascript Exercice 1 : Préalable : mise en place des outils Pour ce premier exercice, nous allons utiliser

Plus en détail

On obtient : let $b := doc("books.xml")//book let $avg := average( $b//price ) return $b[price > $avg]

On obtient : let $b := doc(books.xml)//book let $avg := average( $b//price ) return $b[price > $avg] Fonctions Pre-définies En XQUERY on a des fonctions min, max, count, sum et avg analogues à celles de SQL. On a déjà vu des exemples avec count. Quels livres sont plus chers que la moyenne? let $b := doc("books.xml")//book

Plus en détail

HTML : Mini tutoriel

HTML : Mini tutoriel HTML : Mini tutoriel I. Introduction HTML est un langage de formatage de texte adapté à la conception de pages web. Le HTML est un langage balisé, fondé en particulier sur la notion de lien hypertexte,

Plus en détail

Résumé XML XML. XPATH SVG Schema XSL. VoiceXML. Figure 1 : évolution des langages à balises

Résumé XML XML. XPATH SVG Schema XSL. VoiceXML. Figure 1 : évolution des langages à balises XML, extensible Markup Language 1-Origine de XML On trouve l origine des langages à balises dans la nécessité d échanger des informations dont la structure est trop complexe pour être simplement mise sous

Plus en détail

LI345 - EXAMEN DU 22JUIN 2010

LI345 - EXAMEN DU 22JUIN 2010 N d anonymat : page 1 LI345 - EXAMEN DU 22JUIN 2010 Durée : 2h ---documents autorisés Transactions Soit la relation Produit, et les deux transactions T1 et T2 suivantes : Produit NOM PRIX P1 40 P2 50 P3

Plus en détail

NSY107 - Intégration des systèmes client-serveur

NSY107 - Intégration des systèmes client-serveur NSY107 - Intégration des systèmes client-serveur Cours du 10/06/2006, 4 heures, Thème : XML Emmanuel DESVIGNE Document sous licence libre (FDL) Plan du cours «XML» Introduction/Généralités

Plus en détail

PHP et XML. Traitements de XML

PHP et XML. Traitements de XML PHP et XML XML et PHP 1 Traitements de XML Deux approches pour manipuler des documents XML: Approche DOM: Utilise un analyseur (Parser) qui transforme le document XML en structure d'arbre. Il faut parcourir

Plus en détail

Projet XML : TER en Rhône-Alpes

Projet XML : TER en Rhône-Alpes Résumé Benoît Valiron Le but de ce projet est de créer et d'utiliser un format XML pour les horaires des TERs en Rhône-Alpes. Les dépliants contenant ces horaires peuvent être trouvés à la gare de Grenoble

Plus en détail

Premiers pas en HTML, CSS et jquery

Premiers pas en HTML, CSS et jquery 2 Premiers pas en HTML, CSS et jquery Arrivé à ce point dans la lecture de l ouvrage, vous êtes en mesure de créer un squelette HTML5 standard, de définir des règles de mise en forme CSS (directement dans

Plus en détail

Introduction à XML. Présentation de XML. Origines. Comparaison avec HTML

Introduction à XML. Présentation de XML. Origines. Comparaison avec HTML Introduction à XML Michel CASABIANCA casa@sweetohm.net Cet article est le premier d'une série de trois consacrés à XML, XSLT et le développement d'application XML en Java. Il traite de la syntaxe XML et

Plus en détail

Gestion de l Information sur l Internet Exercices

Gestion de l Information sur l Internet Exercices Gestion de l Information sur l Internet Exercices Philippe Rigaux 22 septembre 2003 La plupart des exemples sur lesquels s appuient ces exercices sont sur le site : http://www.lri.fr/ rigaux/gii Vous pouvez

Plus en détail

Tableau R : 255 0 0 255 255 0. Tableau G : 0 255 255 255 255 0. Tableau B : 0 0 255 0 255 0. Chaque carré représente un pixel

Tableau R : 255 0 0 255 255 0. Tableau G : 0 255 255 255 255 0. Tableau B : 0 0 255 0 255 0. Chaque carré représente un pixel Mini-Projet n 2 : Jouer avec les images. A rendre pour le lundi 14 novembre 2011 avant midi. Introduction : Une image est un ensemble de pixels dont chacun est défini par trois valeurs, que l'on note R,

Plus en détail

File Maker Pro Les Requêtes

File Maker Pro Les Requêtes File Maker Pro Les Requêtes I. Introduction Dans FileMaker pro l'interface proposée pour les requêtes est simple: les requêtes se font dans les mêmes formulaires (modèles) que ceux qu'on utilise pour entrer

Plus en détail

Master d Informatique Examen janvier 2011

Master d Informatique Examen janvier 2011 Université de Provence Technologies XML Master d Informatique Examen janvier 2011 Année 2010-11 Notes de cours autorisées Vous rendrez vos réponses sur les copies anonymes que l on vous a distribuées.

Plus en détail

Spécifications de l'utilitaire mkdoc

Spécifications de l'utilitaire mkdoc Spécifications de l'utilitaire mkdoc Logilab S.A. 10, rue Louis Vicat F-75015 PARIS Tél : (+33) 1 45 32 03 12 Web : www.logilab.fr Adel : contact@logilab.fr Olivier CAYROL Spécifications de l'utilitaire

Plus en détail

Réalisation d'un site web. Première partie : Création des pages HTML. <tv>thierry.vaira@orange.fr</tv>

Réalisation d'un site web. Première partie : Création des pages HTML. <tv>thierry.vaira@orange.fr</tv> Réalisation d'un site web Première partie : Création des pages HTML 1 Objectifs Se familiariser avec le codage HTML Acquérir une pratique minimale Être capable de mener à bien la construction d'un site

Plus en détail

REDIGER ET PUBLIER DES ARTICLES

REDIGER ET PUBLIER DES ARTICLES REDIGER ET PUBLIER DES ARTICLES Introduction... 2 Publier avec Spip + EVA... 2 Ecrire un article... 3 Règles de saisie d un texte... 4 Placer une image dans un article... 7 Joindre un document à un article...

Plus en détail

UNIVERSITE DE M SILA BDDA 2014/2015. Base de données XML

UNIVERSITE DE M SILA BDDA 2014/2015. Base de données XML Base de données XML XML «extensible Markup Language» fut développé en 1996, et standardisé par le W3C en 1998. C est un sous-ensemble de SGML. Il s agit d un format de documents permettant de représenter

Plus en détail

CH.2 CODES CORRECTEURS

CH.2 CODES CORRECTEURS CH.2 CODES CORRECTEURS 2.1 Le canal bruité 2.2 La distance de Hamming 2.3 Les codes linéaires 2.4 Les codes de Reed-Muller 2.5 Les codes circulaires 2.6 Le câblage des codes circulaires 2.7 Les performances

Plus en détail

Premières macros. Au sommaire de ce chapitre. Créer une macro GrasItalique. Différentes méthodes d enregistrement. Écrire la macro

Premières macros. Au sommaire de ce chapitre. Créer une macro GrasItalique. Différentes méthodes d enregistrement. Écrire la macro 2 Premières macros Au sommaire de ce chapitre Créer une macro GrasItalique Écrire la macro Stocker des macros Différentes méthodes d enregistrement Créer une macro Titre_WordArt 22 Excel 2013 et VBA L

Plus en détail