SUPPORTS DE COURS SUR LE LANGAGE XML

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] child::toto[@ref='id125'] 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[@ref='id125' 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 select="@date" /> <xsl:value-of select="/personnes/personne[@id='p12']/nom" /> <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" select="citation/@ref" /> <xsl:value-of select="/personnes/personne[@id=$refpersonne]/nom" /> <xsl:variable name="nb_matches" select="count(//rencontre)" /> <xsl:variable name="nb_victoires" select="count(//rencontre[@scored /> <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 select="@année" /> </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 select="lien/@url" />"> <xsl:value-of select="lien/texte" /> </a> Dans ce cas, on préférera utiliser une notation entre accolades : <a href="{lien/@url}"> <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 select="lien/@url" /> </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 "@att" 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" select="@adresse" /> </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 href="{@id}html"><xsl:value-of select="@intitulé" /></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 href="{$noeud/@id}html"><xsl:value-of select="$noeud/@intitulé" /></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 test="@mail!= ''"> <a href="{@mail}">m'écrire</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

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

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

Thierry BOULANGER. par la pratique. Bases indispensables Concepts et cas pratiques XML. 3 ième édition. Nouvelle édition

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

Plus en détail

Module BDWEB. Maîtrise d informatique Cours 9 - Xquery. Anne Doucet. anne.doucet@lip6.fr

Module BDWEB. Maîtrise d informatique Cours 9 - Xquery. Anne Doucet. anne.doucet@lip6.fr Module BDWEB Maîtrise d informatique Cours 9 - Xquery Anne Doucet anne.doucet@lip6.fr 1 Langages de requêtes XML Concepts des langages de requêtes XML motivations caractéristiques Navigation dans les documents

Plus en détail

Gestion Électronique de Documents et XML. Master 2 TSM

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

Plus en détail

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 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

Plus en détail

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. 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

Plus en détail

Les outils de création de sites web

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

Plus en détail

XML : documents et outils

XML : documents et outils XML : documents et outils Pierre-Alain Reynier Université de Provence pierre-alain.reynier@lif.univ-mrs.fr http://www.lif.univ-mrs.fr/~preynier/xml Cours adapté du travail de Rémi Eyraud, Silvano Dal Zilio...

Plus en détail

Qu'est-ce que XML? XML : Extensible Markup Language. Exemple de document SGML SGML

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

Plus en détail

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. 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

Plus en détail

SII Stage d informatique pour l ingénieur

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...

Plus en détail

Outils logiciels pour l'ingénierie documentaire

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

Plus en détail

SOMMAIRE. Travailler avec les requêtes... 3

SOMMAIRE. Travailler avec les requêtes... 3 Access Les requêtes SOMMAIRE Travailler avec les requêtes... 3 A) Créer une requête sélection en mode QBE... 3 B) Exécuter une requête à partir du mode Modifier (QBE)... 3 C) Passer du mode Feuille de

Plus en détail

<?xml version="1.0" encoding="iso-8859-1" standalone="yes"?>

<?xml version=1.0 encoding=iso-8859-1 standalone=yes?> Multimédia XML Benoît Piranda Équipe SISAR Université de Marne La Vallée XML l avenir de HTML? Extensible Markup Language, entre HTML et SGML tente de se servir des principes de simplicité du HTML et de

Plus en détail

Master d Informatique Corrigé du partiel novembre 2010

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,

Plus en détail

L'essentiel de XML. Cours XML. Olivier Carton

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

Plus en détail

Sage 100 CRM - Guide de la Fusion Avancée Version 8. Mise à jour : 2015 version 8

Sage 100 CRM - Guide de la Fusion Avancée Version 8. Mise à jour : 2015 version 8 Sage 100 CRM - Guide de la Fusion Avancée Version 8 Mise à jour : 2015 version 8 Composition du progiciel Votre progiciel est composé d un boîtier de rangement comprenant : le cédérom sur lequel est enregistré

Plus en détail

PROSOP : un système de gestion de bases de données prosopographiques

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

Plus en détail

Auguria_PCM Product & Combination Manager

Auguria_PCM Product & Combination Manager Auguria_PCM Product & Combination Manager Guide utilisateurs v1.5 Auguria 9, rue Alfred Kastler 44300 NANTES FRANCE +33251135012 contact@auguria.net Plan 1 Description générale du module...3 2 Mise en

Plus en détail

OASIS www.oasis-open.org/committees/xacml/docs/docs.shtml Date de publication

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é

Plus en détail

CRÉER UNE BASE DE DONNÉES AVEC OPEN OFFICE BASE

CRÉER UNE BASE DE DONNÉES AVEC OPEN OFFICE BASE CRÉER UNE BASE DE DONNÉES AVEC OPEN OFFICE BASE 2 ème partie : REQUÊTES Sommaire 1. Les REQUÊTES...2 1.1 Créer une requête simple...2 1.1.1 Requête de création de listage ouvrages...2 1.1.2 Procédure de

Plus en détail

Traitement de texte : Quelques rappels de quelques notions de base

Traitement de texte : Quelques rappels de quelques notions de base Traitement de texte : Quelques rappels de quelques notions de base 1 Quelques rappels sur le fonctionnement du clavier Voici quelques rappels, ou quelques appels (selon un de mes profs, quelque chose qui

Plus en détail

1. LA GESTION DES BASES DE DONNEES RELATIONNELLES

1. LA GESTION DES BASES DE DONNEES RELATIONNELLES Dossier G11 - Interroger une base de données La base de données Facturation contient tout un ensemble d'informations concernant la facturation de la SAFPB (société anonyme de fabrication de produits de

Plus en détail

ContactForm et ContactFormLight - Gestionnaires de formulaire pour Prestashop Edité par ARETMIC S.A.

ContactForm et ContactFormLight - Gestionnaires de formulaire pour Prestashop Edité par ARETMIC S.A. ContactForm et ContactFormLight - Gestionnaires de formulaire pour Prestashop Edité par ARETMIC S.A. - 1 - PREAMBULE Les conditions générales d utilisation détaillant l ensemble des dispositions applicables

Plus en détail

PIVOT. Pivot/Querier Documentation technique XML/XSD/XSLT

PIVOT. Pivot/Querier Documentation technique XML/XSD/XSLT Réf. : Pivot/Querier Auteur : JM. DERUYTER Rév. : 1.3 Rév. Date : 05/05/15 Distribution : Normale * Restreinte 1. Confidentielle PIVOT Pivot/Querier Documentation technique XML/XSD/XSLT Table des matières

Plus en détail

Administration du site (Back Office)

Administration du site (Back Office) Administration du site (Back Office) A quoi sert une interface d'administration? Une interface d'administration est une composante essentielle de l'infrastructure d'un site internet. Il s'agit d'une interface

Plus en détail

Java 7 Les fondamentaux du langage Java

Java 7 Les fondamentaux du langage Java 184 Java 7 Les fondamentaux du langage Java 1.1 Les bibliothèques graphiques Le langage Java propose deux bibliothèques dédiées à la conception d'interfaces graphiques. La bibliothèque AWT et la bibliothèque

Plus en détail

CRÉER, ROUTER ET GÉRER UNE NEWSLETTER, UN E-MAILING

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

Plus en détail

Les chaînes de caractères

Les chaînes de caractères Les chaînes de caractères Dans un programme informatique, les chaînes de caractères servent à stocker les informations non numériques comme par exemple une liste de nom de personne ou des adresses. Il

Plus en détail

Programmation Internet Cours 4

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

Plus en détail

Instructions et spécifications pour la transmission en format XML de déclarations par lots. 30 mai 2015 MODULE 1

Instructions et spécifications pour la transmission en format XML de déclarations par lots. 30 mai 2015 MODULE 1 Instructions et spécifications pour la transmission en format XML de déclarations par lots 30 mai 2015 MODULE 1 Table des matières Modifications apportées dans la présente... 3 1 Renseignements généraux...

Plus en détail

ECLIPSE ET PDT (Php development tools)

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

Plus en détail

Publication dans le Back Office

Publication dans le Back Office Site Web de l association des ingénieurs INSA de Lyon Publication dans le Back Office Note : dans ce guide, l'appellation GI signifie Groupe d'intérêt, et GR Groupe Régional laure Buisset Page 1 17/09/2008

Plus en détail

Cahier Technique. «Développer une application intranet pour la gestion des stages des étudiants» Antonin AILLET. Remi DEVES

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

Plus en détail

1. Qu'est-ce que SQL?... 2. 2. La maintenance des bases de données... 2. 3. Les manipulations des bases de données... 5

1. Qu'est-ce que SQL?... 2. 2. La maintenance des bases de données... 2. 3. Les manipulations des bases de données... 5 1. Qu'est-ce que SQL?... 2 2. La maintenance des bases de données... 2 2.1 La commande CREATE TABLE... 3 2.2 La commande ALTER TABLE... 4 2.3 La commande CREATE INDEX... 4 3. Les manipulations des bases

Plus en détail

Publipostage avec Calc

Publipostage avec Calc Auto-formation sur OpenOffice.org 2.0 par Cyril Beaussier Version 1.0.2 - Avril 2006 Publipostage avec Calc Sommaire Introduction... 2 Présentation... 3 Notions... 4 Les données... 5 Lettre type... 7 Création

Plus en détail

TP1 - Prise en main de l environnement Unix.

TP1 - Prise en main de l environnement Unix. Mise à niveau UNIX Licence Bio-informatique TP1 - Prise en main de l environnement Unix. Les sujets de TP sont disponibles à l adresse http://www.pps.jussieu.fr/~tasson/enseignement/bioinfo/ Les documents

Plus en détail

LES TYPES DE DONNÉES DU LANGAGE PASCAL

LES TYPES DE DONNÉES DU LANGAGE PASCAL LES TYPES DE DONNÉES DU LANGAGE PASCAL 75 LES TYPES DE DONNÉES DU LANGAGE PASCAL CHAPITRE 4 OBJECTIFS PRÉSENTER LES NOTIONS D ÉTIQUETTE, DE CONS- TANTE ET DE IABLE DANS LE CONTEXTE DU LAN- GAGE PASCAL.

Plus en détail

Guide de création de site web optimisé

Guide de création de site web optimisé Guide de création de site web optimisé Vous trouverez ci-après un résumé des différents points à prendre en compte pour créer un site web optimisé pour les moteurs de recherche en termes de code HTML et

Plus en détail

Initiation à html et à la création d'un site web

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

Plus en détail

PHP 5.4 Développez un site web dynamique et interactif

PHP 5.4 Développez un site web dynamique et interactif Editions ENI PHP 5.4 Développez un site web dynamique et interactif Collection Ressources Informatiques Table des matières Table des matières 1 Chapitre 1 Introduction 1. Objectif de l'ouvrage.............................................

Plus en détail

UEO11 COURS/TD 1. nombres entiers et réels codés en mémoire centrale. Caractères alphabétiques et caractères spéciaux.

UEO11 COURS/TD 1. nombres entiers et réels codés en mémoire centrale. Caractères alphabétiques et caractères spéciaux. UEO11 COURS/TD 1 Contenu du semestre Cours et TDs sont intégrés L objectif de ce cours équivalent a 6h de cours, 10h de TD et 8h de TP est le suivant : - initiation à l algorithmique - notions de bases

Plus en détail

IMPORTATION, CRÉATION, MANIPULATION, EXPORTATION DE DONNÉES STATISTIQUES

IMPORTATION, CRÉATION, MANIPULATION, EXPORTATION DE DONNÉES STATISTIQUES IMPRTATIN, CRÉATIN, MANIPULATIN, EXPRTATIN DE DNNÉES STATISTIQUES Bernard Dupont Bernard.Dupont@univ-lille1.fr ahm.bahah@yahoo.fr Bien que l'analyse et le traitement des données ne soient pas sa vocation

Plus en détail

PRODIGE V3. Manuel utilisateurs. Consultation des métadonnées

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.

Plus en détail

Communiqué de Lancement

Communiqué de Lancement Direction du Marketing Produits Sage - Division Mid Market Communiqué de Lancement Rapprochement Bancaire 1000 Produit : Rapprochement Bancaire 1000 Bases de Données : Oracle - MS/SQL Server Microsoft

Plus en détail

Création de Sous-Formulaires

Création de Sous-Formulaires Création de Sous-Formulaires Révision 1.01 du 02/01/04 Réalisé avec : OOo 1.1.0 Plate-forme / Os : Toutes Distribué par le projet Fr.OpenOffice.org Table des Matières 1 But de ce how-to...3 2 Pré-requis...3

Plus en détail

TABLEAU CROISE DYNAMIQUE

TABLEAU CROISE DYNAMIQUE EXCEL NIVEAU III Mireille DUCELLIER MARS 2003 BASE DE DONNEES RAPPEL Une base de données est une plage de cellules contiguës située sur une la feuille 1. Elle commence en A1. On parle alors de champs,

Plus en détail

Importation des données dans Open Office Base

Importation des données dans Open Office Base Importation des données dans Open Office Base Il est aujourd'hui assez rare dans les bureaux de créer un environnement de base de données de toutes pièces. Les données sont manipulées depuis longtemps

Plus en détail

Manuel de SQUIRRELMAIL à l'usage des étudiants.

Manuel de SQUIRRELMAIL à l'usage des étudiants. Manuel de SQUIRRELMAIL à l'usage des étudiants. SQUIRRELMAIL 1 est une interface Web (Webmail) utilisée pour traiter le courrier électronique à travers le réseau Internet. Un avantage d'une telle méthode

Plus en détail

HTML. Notions générales

HTML. Notions générales 1 HTML Le langage HTML est le langage de base permettant de construire des pages web, que celles-ci soient destinées à être affichées sur un iphone/android ou non. Dans notre cas, HTML sera associé à CSS

Plus en détail

Programmation des Applications Réparties. Parsers XML DOM et SAX

Programmation des Applications Réparties. Parsers XML DOM et SAX Programmation des Applications Réparties Parsers XML DOM et SAX Luiz Angelo Steffenel luiz-angelo.steffenel@univ-reims.fr Steffenel Programmation des Applications Réparties Master M1-2007-2008 1 Comment

Plus en détail

Configuration d'un annuaire LDAP

Configuration d'un annuaire LDAP Le serveur Icewarp Configuration d'un annuaire LDAP Version 10.3 Juillet 2011 Icewarp France / DARNIS Informatique i Sommaire Configuration d'un annuaire LDAP 1 Introduction... 1 Qu'est-ce que LDAP?...

Plus en détail

v7.1 SP2 Guide des Nouveautés

v7.1 SP2 Guide des Nouveautés v7.1 SP2 Guide des Nouveautés Copyright 2012 Sage Technologies Limited, éditeur de ce produit. Tous droits réservés. Il est interdit de copier, photocopier, reproduire, traduire, copier sur microfilm,

Plus en détail

Plan. Exemple: Application bancaire. Introduction. OCL Object Constraint Language Le langage de contraintes d'uml

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

Plus en détail

Création d'un site dynamique en PHP avec Dreamweaver et MySQL

Création d'un site dynamique en PHP avec Dreamweaver et MySQL Création d'un site dynamique en PHP avec Dreamweaver et MySQL 1. Création et configuration du site 1.1. Configuration de Dreamweaver Avant de commencer, il est nécessaire de connaître l'emplacement du

Plus en détail

Créer une base de données

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

Plus en détail

Programmation Web TP1 - HTML

Programmation Web TP1 - HTML Programmation Web TP1 - HTML Vous allez réaliser votre premier site Web dans lequel vous présenterez la société SC, agence spécialisée dans la conception des sites internet. 1 - Une première page en HTML

Plus en détail

Classer et partager ses photographies numériques

Classer et partager ses photographies numériques Classer et partager ses photographies numériques Ce tutoriel a pour objectif de vous donner les bases nécessaires au classement de vos photographies numériques, et de vous donner des moyens simples de

Plus en détail

Petite définition : Présentation :

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

Plus en détail

MODE OPERATOIRE OPENOFFICE BASE

MODE OPERATOIRE OPENOFFICE BASE MODE OPERATOIRE OPENOFFICE BASE Openoffice Base est un SGBDR : Système de Gestion de Base de Données Relationnelle. L un des principaux atouts de ce logiciel est de pouvoir gérer de façon efficace et rapide

Plus en détail

Université de Bangui. Modélisons en UML

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

Plus en détail

Formation : WEbMaster

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

Plus en détail

Institut Supérieure Aux Etudes Technologiques De Nabeul. Département Informatique

Institut Supérieure Aux Etudes Technologiques De Nabeul. Département Informatique Institut Supérieure Aux Etudes Technologiques De Nabeul Département Informatique Support de Programmation Java Préparé par Mlle Imene Sghaier 2006-2007 Chapitre 1 Introduction au langage de programmation

Plus en détail

Atelier Webmaster de site pédagogique: portails communautaires [Version 1.0]

Atelier Webmaster de site pédagogique: portails communautaires [Version 1.0] Programme - 1 Atelier Webmaster de site pédagogique: portails communautaires [Version 1.0] Attention: Il s'agit ici d'un fichier généré automatiquement depuis XML (procédure à perfectionner) Organisation:

Plus en détail

TRAVAILLER SUR LES ORDINATEURS DU LYCEE

TRAVAILLER SUR LES ORDINATEURS DU LYCEE TRAVAILLER SUR LES ORDINATEURS DU LYCEE TRAVAILLER SUR LES ORDINATEURS DU LYCEE Ouvrir et fermer une session, éteindre le poste...3 Ouvrir une session...3 Fermer une session...4 Eteindre le poste...5 L'environnement

Plus en détail

LANGAGUE JAVA. Public Développeurs souhaitant étendre leur panel de langages de programmation

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

Plus en détail

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 . 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,

Plus en détail

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) Créer une base de données vidéo sans programmation (avec Drupal) 10.10.2013 Nicolas Bugnon (nicolas.bugnon@alliancesud.ch) Centre de documentation Alliance Sud www.alliancesud.ch Résultat de l atelier

Plus en détail

Débuter avec OOo Base

Débuter avec OOo Base Open Office.org Cyril Beaussier Débuter avec OOo Base Version 1.0.7 Novembre 2005 COPYRIGHT ET DROIT DE REPRODUCTION Ce support est libre de droit pour une utilisation dans un cadre privé ou non commercial.

Plus en détail

Conception d'applications de base de données ios plus rapides Guide Pratique FileMaker

Conception d'applications de base de données ios plus rapides Guide Pratique FileMaker Conception d'applications de base de données ios plus rapides Guide Pratique FileMaker Table des Matières Introduction... 3 Conception de modèles... 3 Conception de bases de données... 5 Conception pour

Plus en détail

RapidMiner. Data Mining. 1 Introduction. 2 Prise en main. Master Maths Finances 2010/2011. 1.1 Présentation. 1.2 Ressources

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

Plus en détail

1. Installation du Module

1. Installation du Module 1 sur 10 Mise en place du Module Magento V 1.5.7 1. Installation du Module Vous pouvez installer le module de deux façons différentes, en passant par Magento Connect, ou directement via les fichiers de

Plus en détail

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 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.................................

Plus en détail

Ecole Polytechnique de Louvain INGI 1271 - Fichiers et bases de données

Ecole Polytechnique de Louvain INGI 1271 - Fichiers et bases de données Ecole Polytechnique de Louvain INGI 1271 - Fichiers et bases de données Rapport de projet " Gestion d'un aéroport " Groupe 13 DE GROOTE Charles LAMOULINE Laurent NUTTIN Vincent Q6-2009 TABLE DES MATIÈRES

Plus en détail

Projet ISN - dossier réalisé par Randrianarimanana Stéphanie. Titre du projet : Site de rencontre. le nom de notre site de rencontre : Linkymeet

Projet ISN - dossier réalisé par Randrianarimanana Stéphanie. Titre du projet : Site de rencontre. le nom de notre site de rencontre : Linkymeet Projet ISN - dossier réalisé par Randrianarimanana Stéphanie Titre du projet : Site de rencontre le nom de notre site de rencontre : Linkymeet ( tout astérisque* signifie voir annexe) l'équipe : Randrianariamanana

Plus en détail

Master Technologies numériques appliquées à l'histoire Deuxième année

Master Technologies numériques appliquées à l'histoire Deuxième année Master Technologies numériques appliquées à l'histoire Deuxième année Octobre 2014 Octobre Novembre Décembre Semaine 1 Semaine 2 Semaine 3 Semaine 4 Semaine 5 Semaine 6 Semaine 7 Semaine 8 Semaine 9 Semaine

Plus en détail

Activité sur Meteor. Annexe 1 : notion de client-serveur et notion de base de données

Activité sur Meteor. Annexe 1 : notion de client-serveur et notion de base de données Activité sur Meteor Annexe 1 : notion de client-serveur et notion de base de données Notion de client-serveur Que se passe-t-il lorsque vous tapez dans la barre d'adresse de votre navigateur «http://www.google.fr»?

Plus en détail

< Atelier 1 /> Démarrer une application web

< 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

Plus en détail

A5.2.4 Étude d une technologie, d'un composant, d'un outil

A5.2.4 Étude d une technologie, d'un composant, d'un outil Assistance et dépannage des visiteurs : Etude des prérequis de glpi : A5.2.4 Étude d une technologie, d'un composant, d'un outil Sujet : Prérequis Tout ce qu'il faut savoir pour une installation confortable

Plus en détail

I La création d'un compte de messagerie Gmail.

I La création d'un compte de messagerie Gmail. Les outils du Cloud Computing #2 Gmail / Google Drive L'exemple des Googles Documents & Googles formulaires Un pas à pas pour faire connaissance avec les services google. I La création d'un compte de messagerie

Plus en détail

HMTL. Exemple de fichier HTML. Structure d un document HTML. Exemple de fichier HTML. Balises HTML. IFT1147 Programmation Serveur Web avec PHP

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,

Plus en détail

Didacticiel de mise à jour Web

Didacticiel de mise à jour Web Didacticiel de mise à jour Web Copyright 1995-2012 Esri All rights reserved. Table of Contents Didacticiel : Création d'une application de mise à jour Web.................. 0 Copyright 1995-2012 Esri.

Plus en détail

WebDAV en 2 minutes. Tous ces objectifs sont complémentaires et ils sont atteints grâce au seul protocole WebDAV. Scénarii

WebDAV en 2 minutes. Tous ces objectifs sont complémentaires et ils sont atteints grâce au seul protocole WebDAV. Scénarii WebDAV en 2 minutes le but affirmé du groupe de travail WebDAV (DAV) est (pour ses concepteurs) de "définir les extensions de HTTP nécessaires pour assurer la disponibilité d'outils WEB de création collective

Plus en détail

http://cri.univ-lille1.fr Sauvegarde et restauration d'un système d'exploitation Clonezilla

http://cri.univ-lille1.fr Sauvegarde et restauration d'un système d'exploitation Clonezilla http://cri.univ-lille1.fr Sauvegarde et restauration d'un système d'exploitation Clonezilla Version 1.0 Septembre 2011 SOMMAIRE 1. Introduction 3 2. Définitions 3 3. Principes généraux 3 4. Clonezilla

Plus en détail

LibreOffice Calc : introduction aux tableaux croisés dynamiques

LibreOffice Calc : introduction aux tableaux croisés dynamiques Fiche logiciel LibreOffice Calc 3.x Tableur Niveau LibreOffice Calc : introduction aux tableaux croisés dynamiques Un tableau croisé dynamique (appelé Pilote de données dans LibreOffice) est un tableau

Plus en détail

Livre Blanc WebSphere Transcoding Publisher

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,

Plus en détail

Gestion collaborative de documents

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,

Plus en détail

Accès à l'information XML par des requêtes XQuery au travers de son XSchema

Accès à l'information XML par des requêtes XQuery au travers de son XSchema Rapport projet de fin d étude ASR Accès à l'information XML par des requêtes XQuery au travers de son XSchema Réalisé par : DAB Marwa MGARRECH Oussama Encadré par : Mme LOPES GANCARSKI Alda 2011/2012 Remerciements

Plus en détail

STID 2ème année : TP Web/PHP

STID 2ème année : TP Web/PHP STID 2ème année : TP Web/PHP Plan de travail et aide mémoire jean.arnaud@inria.fr Ce document est composé de cinq parties : Un aide mémoire sur les aspects pratiques de la création de sites Une introduction

Plus en détail

Présentation de l'architecture QlikView. Livre blanc sur la technologie QlikView. Date de publication : octobre 2010 www.qlikview.

Présentation de l'architecture QlikView. Livre blanc sur la technologie QlikView. Date de publication : octobre 2010 www.qlikview. Présentation de l'architecture QlikView Livre blanc sur la technologie QlikView Date de publication : octobre 2010 Sommaire Signification de la plate-forme QlikView... 3 La majorité des logiciels de BI

Plus en détail

Intégrateur Web HTML5 CSS3

Intégrateur Web HTML5 CSS3 Intégrateur Web HTML5 CSS3 L objectif de la 3W Academy est de former des petits groupes d élèves à l intégration de sites internet ainsi qu à la création d applications web simples telles qu un blog ou

Plus en détail

Créer un tableau avec LibreOffice / Calc

Créer un tableau avec LibreOffice / Calc Créer un tableau avec LibreOffice / Calc Réaliser des tableaux LibreOffice / Calc permet de créer des tableaux facilement en utilisant les cellules. En premier lieu, il faut prévoir le nombre de colonnes

Plus en détail

Créer le schéma relationnel d une base de données ACCESS

Créer le schéma relationnel d une base de données ACCESS Utilisation du SGBD ACCESS Polycopié réalisé par Chihab Hanachi et Jean-Marc Thévenin Créer le schéma relationnel d une base de données ACCESS GENERALITES SUR ACCESS... 1 A PROPOS DE L UTILISATION D ACCESS...

Plus en détail

Module Com231A - Web et Bases de Données Notion 5 : Formulaires et utilisation des Bases de Données avec PHP

Module Com231A - Web et Bases de Données Notion 5 : Formulaires et utilisation des Bases de Données avec PHP Module Com231A - Web et Bases de Données Notion 5 : Formulaires et utilisation des Bases de Données avec PHP Au cours de ce TP, vous allez voir comment PHP permet aux utilisateurs, une interaction avec

Plus en détail

Nécessité de concevoir un outil de recherche PDF... 3. Présentation des fonctionnalités d'indexation et de recherche... 3

Nécessité de concevoir un outil de recherche PDF... 3. Présentation des fonctionnalités d'indexation et de recherche... 3 1 Table des matières Nécessité de concevoir un outil de recherche PDF... 3 Présentation des fonctionnalités d'indexation et de recherche... 3 Architecture IFilter... 4 Performances et extensibilité : des

Plus en détail

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 pascal.dayre@enseeiht. Evolution et architecture des systèmes d'information, de l'internet. Impact sur les IDS IDS2014, Nailloux 26-28/05/2014 pascal.dayre@enseeiht.fr 1 MVC et le web 27/05/14 2 L'évolution des systèmes informatiques

Plus en détail