Télécharger la présentation
La présentation est en train de télécharger. S'il vous plaît, attendez
Publié parAlexandrie Roux Modifié depuis plus de 10 années
1
Langage de structuration des données: XML
Adrien Vieilleribière
2
Qu’est-ce que XML? eXtended Markup Language
Langage universel d’échange de données Méta-langage
3
Plan I) Introduction II) Langages d’arbres
Historique Objectifs Document XML II) Langages d’arbres DTD XML Schéma XML III) Requêtes et manipulation Xpath XSL, XSLT DOM, SAX IV) Applications
4
Historique 1974 à 1986 Standard Generalized Markup Language Norme ANSI et ISO 8879 1998 eXtensible Markup Language W3C 1990 HyperText Markup Language CERN-W3C 2000 eXtensible HyperText Markup Language W3C
5
Introduction : Plan Historique XML SGML HTML Pourquoi ?
Documents bien formés Syntaxe
6
Structure de documents
SGML Indépendance Conformité Problèmes Trop complexe pour la réalisation des navigateurs Structure de documents Représentation physique Mise en page Visualisation Indépendant
7
HTML : HyperText Markup Language
Jeu fini de balises destiné à décrire des pages WEB dans une optique de présentation Propriétés Langage simple, facile à écrire Mise en œuvre rapide Permet la navigation au travers des pages d’information via les liens Intégration de médias (image figée, images animées, fichier audio)
8
Applications HTML portables sur tous les Environnements
Station Unix Internet données Ordinateur portable Serveur Web Station Linux Quelque soit le type de demandeur de la page web, le serveur web lui renvoie une page web au format HTML
9
HTML : HyperText Markup Language
Structure générale d’un document html <html> <head> section des informations non affichables <title> indique le titre non affichable du document </title> </head> <body> Indique la section des informations affichables </body> </html>
10
HTML: Exemple
11
Limites du HTML Pages statiques et n’interagissant pas avec l’utilisateur => DHTML Dynamic HTML portion de code en script s’exécutant dans le navigateur WEB Script client NON portable Ensemble prédéfini de balises avec attributs prédéfinis Description physique et structurelle mêlée
12
XML: Un standard Consortium W3C (World Wide Web Consortium)
Sociétés impliquées dans la technologie WEB + éditeurs de logiciels Sociétés respectant XML : Netscape, IBM, Sun MicroSystem, Oracle, Microsoft, Hewlett Packard, Adobe System, etc… (XML) 1.0 (Fifth Edition) 1996 Première version de XML (Sous ensemble de SGML) 1998 projet XML est devenu un standard (XML) 1.0(First Edition) 2006 XML 1.1 (Second Edition) 2008 XML 1.0 (Fifth Edition)
13
XML: Objectifs Créer une technologie universelle pour structurer l’information Adapté à la diffusion et à l’échange d’information Langage extensible d’expressions standardisées Indépendant des plates-formes, et des systèmes d’exploitation Séparation du fond et de la forme
14
XML et HTML XML repose sur l’utilisation et la création des balises
Gaston Lagaffe Date de naissance: 30/03/1976 Adresse: Journal Spirou 355 Paris Cedex 75116 France Taille: 180 Poids : 70 Représentation d’un auteur en HTML et XML ?
15
XML et HTML XML crée librement des balises pour marquer les éléments …
<head><title>adresse Gaston</title></head> <body> <h2> Gaston Lagaffe </h2> <table><tr><td> <i> date de naissance</i> </td> <td> 30/03/1976</td> </tr> <tr><td> <i> adresse</i> </td> <td> Journal Spirou <br> bp 355 <br> F Paris Cedex </td> </tr> <tr><td> <i>taille :</i></td> <td> 180 </td></tr> <tr> <td> 70 kg :</td></tr> </table> </body> </html> … <auteur> <prenom>Gaston</prenom> <nom>Lagaffe</nom> <date_naissance>30/03/1976</date_naissance> <adresse> <compagnie>Journal Spirou</compagnie> <boite_postale>355</ boite_postale > <ville> Paris Cedex </ville> <code_postal>75116</ code_postal > <pays code="ISO-3166"/> </adresse> <taille unite="cm">180</taille> <poids unite="kg">70</ poids > </auteur> XML crée librement des balises pour marquer les éléments
16
XML : Les données Informations -> structure arborescente auto descriptive Deux éléments Structure des données Données auteur naissance adresse taille poids compagnie Boite-postale ville Code_postal pays
17
HTML: Description physique et structurelle mélée
Balises physiques : représentation fixe quel que soit l’outil de génération de document h1, h2..h6 center b i small … Balise logique : signification sur le nature de leur contenu mais leur représentation dépend de l’outil de génération title, dl, blockquote… XML Balises structurelles et logiques : Représentation dépend de leur feuille de style associée
18
Document XML : syntaxe (1/3)
Arbre d’éléments (balise de fin obligatoire) <unElement> <UnSousElement> </UnSousElement> … </unElement> Element vide <unElementVide/>
19
Document XML : syntaxe (2/3)
Contenu <unElement> une donnée textuelle </unElement> Attributs et valeurs <unElement unAttribut=“uneValeur”></unElement> Sensibilité à la casse <unElement> </UNELEMENT> incorrect!
20
Document XML : syntaxe (3/3)
Section CDATA <![CDATA[ < < ceci est du texte: ]]> Commentaires <!-- ce commentaire finit ici --> Caractères Jeu de caractères international UNICODE Exemple d’encodage UTF-8 ou UTF-16
21
eXtensible HyperText Markup Language
Evolutions eXtensible HyperText Markup Language Le XHTML est un langage identique au langage HTML mais respectant la syntaxe définie par XML. HTML5 Vocabulaire et API associées pour HTML et XHTML
22
II) Langages d’arbres : plan
Validité DTD Syntaxe Entités Schéma XML
23
Document XML valide Conforme à définissent un type de structure
une DTD (Document Type Definition) à un schéma XML à un schéma REALAX NG définissent un type de structure Une DTD XML est associée à une DTD SGML conforme Passerelles existantes entre formalismes (Trang, XSD to RelaxNG, NekoDTD…)
24
DTD & Schémas : Avantages
Validité assurée Intégration facilitée Aide à la rédaction Normalisation
25
XML valide <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <personne> <prenom>Gaston</prenom> <nom>Lagaffe</nom> </personne>
26
XML valide incluant une DTD
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE personne [ <!ELEMENT personne (prenom, nom)> <!ELEMENT prenom (#PCDATA)> <!ELEMENT nom (#PCDATA)> ]> <personne> <prenom>Gaston</prenom> <nom>Lagaffe</nom> </personne>
27
XML valide pour une dtd (privée) distante
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE personne SYSTEM " <personne> <prenom>Gaston</prenom> <nom>Lagaffe</nom> </personne>
28
XML valide pour une dtd publique
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE personne PUBLIC "adrien:adrien-v com//persone v1.0//fr" " <personne> <prenom>Gaston</prenom> <nom>Lagaffe</nom> </personne> Premier argument : Informatif Par convention identifiant:proprietaire//description//langue
29
DTD : Règles de nommage des identifiants
Au moins une lettre : a à z ou A à Z Peut commencer par _ ou : La 1ère lettre peut être suivie par une ou plusieurs lettres, chiffres, tirets, underscores, points, et l'ensemble des caractères Unicode. Pas d'espaces ni de tabulations Seuls signes de ponctuation autorisés : tiret et point
30
DTD : Déclaration d’éléments
Contenu vide <!ELEMENT ident EMPTY> Contenu quelconque <!ELEMENT ident ANY> Contenu sous-éléments <!ELEMENT ident ((fils1,fils2)*|fils3?,fils4+)> Contient des éléments Utilisation d’expression régulière Contenu mixte <!ELEMENT ident (#PCDATA|fils1*)>
31
DTD : Expressions régulières
Séquence , Choix | 0 à N * 1 à N + 0 à 1 ?
32
DTD : Déclaration d’attributs
Syntaxe <! ATTLIST Element Attribut Type > Type représente le type de donnée de l'attribut : littéral: il permet d'affecter une chaîne de caractères à un attribut. <!ATTLIST dossier chemin CDATA #IMPLIED> l'énumération: permet de définir une liste de valeurs possibles pour un attribut donné, afin de limiter le choix de l'utilisateur. <! ATTLIST Element Attribut (Valeur1|Valeur2|…) > Pour définir une valeur par défaut il suffit de faire suivre l'énumération par la valeur désirée entre guillemets : <! ATTLIST Elément Attribut (Valeur1 | Valeur2 ) "valeur2" >
33
DTD : Déclaration d’attributs
Syntaxe <! ATTLIST Element Attribut Type > atomique: il permet de définir un identifiant unique pour chaque élément grâce au mot clé ID. <!ATTLIST dossier reference ID #REQUIRED> IDREF, IDREFS : type prédéfini pour lister la ou les références associées à un document <!ATTLIST fichier dossier IDREF #REQUIRED>
34
DTD : Déclaration d’attributs
Chacun de ces types d'attributs peut être suivi d'un mot clé particulier permettant de spécifier le niveau de nécessité de l'attribut : #IMPLIED signifie que l'attribut est optionnel, c'est-à-dire non obligatoire #REQUIRED signifie que l'attribut est obligatoire #FIXED signifie que l'attribut sera affecté d'une valeur par défaut s'il n'est pas défini. Il doit être immédiatement suivi de la valeur entre guillemets Ainsi on pourra avoir une déclaration d'attribut du type <! ATTLIST disque IDdisk ID #REQUIRED type(K7|MiniDisc|Vinyl|CD)"CD">
35
DTD : Déclaration d’entités
Entité générale interne <!ENTITY titre "XML in a nutschell"> (appel d’entité dans le document &titre; ) Entité paramètre (uniquement dans la DTD) : interne <!ENTITY %NomAtt "name ID #REQUIRED"> externe <!ENTITY %NomAtt SYSTEM "nomAtt.txt"> générale externe <!ENTITY %arch PUBLIC "archive.gz" NDATA gzip>
36
DTD : exemple d’entités
paramètre <!-- Compact Disk: DTD --> <!ENTITY %basiccontent "(#PCDATA)"> <!ENTITY bestever "The Beatles"> <!ELEMENT cd title, band, track+)> <!ATTLIST cd type (single | regular) #REQUIRED> <!ELEMENT title %basiccontent;> <!ELEMENT band %basiccontent;> <!ELEMENT track (song, time?)> <!ELEMENT song %basiccontent;> <!ELEMENT time %basiccontent;> <!ATTLIST song author CDATA "Paul"> Entité générale références cd3.dtd
37
Exemple d’entités (2) cd3.xml <?xml version="1.0"?>
<!DOCTYPE cd SYSTEM "cd3.dtd" [ <!ENTITY favourite "For No One"> ] > <cd type="single"> <title>Revolver, top two</title> <band>&bestever;</band> <track> <song>Eleanor Rigby</song> <time>2:45</time> </track> <song author="Paul and John"> &favourite; </song> </cd> Entité locale référence référence cd3.xml
38
XML NameSpaces Collection d’identificateurs (élément ou attribut)
Identifié par un préfixe et une URI Déclaration <element xmlns:prefixe=URI> Exemple <html xmlns=‘ xmlns:order=‘ Le premier namespace (html) est celui par défaut.
39
Schémas XML Recommandation du W3C (mai 2001)
Types de données prédéfinis ou définis par l’utilisateur Supporte espace de noms, XPath Contraintes sur les éléments et attributs Contrôle sur les occurrences Héritage et extension Restriction sur des patterns
40
Schéma XML : exemple <?xml version="1.0"?>
<xsd:schema xmlns:xsd=" targetNamespace= xmlns= elementFormDefault="qualified"> <xsd:element name="APPLI"> <xsd:complexType> <xsd:sequence> <xsd:element ref=“ENTETE" minOccurs="1" maxOccurs="1"/> <xsd:element ref=“LISTE_FORM" minOccurs="1" maxOccurs="1"/> </xsd:sequence> </xsd:complexType> </xsd:element> <xsd:element name="ENTETE"> <xsd:element ref=“UID" minOccurs="1" maxOccurs="1"/> <xsd:element ref=“TITRE" minOccurs="1" maxOccurs="1"/> <xsd:element name="LISTE_FORM"> <xsd:element ref="FORMULAIRE" minOccurs="1" maxOccurs="unbounded"/> </xsd:sequence> </xsd:complexType> </xsd:element>
41
Schéma XML : exemple (suite)
<xsd:element name="FORMULAIRE"> <xsd:complexType> <xsd:sequence> <xsd:element ref="NOM_TABLE" minOccurs="1" maxOccurs= "1"/> <xsd:element ref= "MODE" minOccurs= "1" maxOccurs= "1"/> </xsd:sequence> </xsd:complexType> </xsd:element> <xsd:element name= "MODE"> <xsd:attribute ref="valeur" type="typeVmode" use="required" value="NOR"> <xsd:element ref="ATTRIBUT" minOccurs="0" maxOccurrs="unbounded"/> <xsd:simpleType name="typeVmode" base="xsd:string"> <xsd:enumeration value="NOR"/> <xsd:enumeration value="INS"/> <xsd:enumeration value="QBE"/> </xsd:simpleType> <xsd:element name="TITRE" type="xsd:string"/> <xsd:element name="UID" type="xsd:string"/> <xsd:element name="NOM_TABLE" type="xsd:string"/> <xsd:element name="ATRIBUT" type="xsd:string"/> </xsd:schema>
42
Référencer un schéma : exemple
<?xml version="1.0"?> <APPLI xmlns =" xmlns:xsi=" xsi:schemaLocation=" <ENTETE> <TITRE>Mon titre</TITRE> </ENTETE> <LISTE_FORM> <FORMULAIRE><NOM_TABLE>ESSAI</NOM_TABLE> <MODE valeur="NOR"><ATTRIBUT>A1</ATTRIBUT> <ATTRIBUT>A2</ATTRIBUT> </MODE> </FORMULAIRE> </LISTE_FORM> ... </APPLI>
43
Référencer un schéma Adresse.xml Adresse-schema.xsd
<?xml version="1.0" Encoding = "ISO " ?> <nomComplet>Corto Maltese</nomComplet> Adresse-schema.xsd <?xml version="1.0" Encoding = "ISO " ? > <xs:schema xmlns:xs=" <xs:element name="nomComplet" xs:type= "string"/> </xs:schema> Adresse.xml avec la référence au schéma <nomComplet xmlns:xsi=" xsi:noNameSpaceschemaLocation="Adresse-schema.xsd"> Corto Maltese </nomComplet>
44
Schémas XML : Types simples
anyURI base64Binary boolean byte (valeur entre -128 et 127) dateTime (date+heure), duration(en année, mois…) types d’attributs XML .0 (ID, IDREF,…) integer language name (nom XML) string (chaîne UNICODE), normalizeString (+fin de ligne…) token (pas d’espace avant et après) <xs:element name="nomComplet" xs:type="string"/>
45
Schémas XML : Attributs
Pour rajouter des attributs à cet élément : type complexe <xs:element name="nomComplet"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="color" type="xs:string" default="blue" /> <xs:attribute name="langue" type="xs:language"/> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element
46
Schémas XML : Goupes d'attributs
<xs:element name="nomComplet"> … <xs:extension type="xs:string"> <xs:attributeGroup ref="Nationalité"> </xs:attributeGroup> </xs:extension> </xs:element> <xs:attributeGroup name ="Nationalité"> <xs:attribute name="langue" type="xs:language"/>
47
Schémas XML : sequence, choice
<?xml version="1.0" encoding="UTF-8"?> <xs:schema xmlns:xs=" <xs:complexType name="typePersonne"> <xs:sequence> <xs:element name="nom" type="xs:string"/> <xs:element name="prénom" type="xs:string"/> <xs:element name="dateDeNaissance" type="xs:date"/> <xs:choice> <xs:element name="adresse" type="xs:string"/> <xs:element name="adresseElectronique" type="xs:string"/> </xs:choice> <xs:element name="téléphone" type="xs:string"/> </xs:sequence> </xs:complexType> <xs:element name="numeroDeTelephone" type= "xs:string"></xs:element> </xs:schema>
48
Schémas XML : all <?xml version="1.0" encoding="UTF-8"?> <xs:schema xmlns:xs=" <xs:complexType name="typePersonne"> <xs:all> <xs:element name="nom" type="xs:string"/> <xs:element name="prénom" type="xs:string"/> <xs:element name="dateDeNaissance" type="xs:date"/> <xs:element name="adresse" type="xs:string"/> <xs:element name="adresseElectronique" type="xs:string"/> <xs:element name="téléphone" type="xs:string"/> </xs:all> </xs:complexType> </xs:schema> chaque élément enfant peut apparaître 0 ou 1 fois (équivalent de ? dans une DTD) ordre des éléments indifférent
49
Schémas XML : Indicateurs d'occurrence
<?xml version="1.0" encoding="UTF-8"?> <xs:schema xmlns:xs=" <xs:element name="TITRE"></xs:element> <xs:element name="SUBENTRY"></xs:element> <xs:element name="ENTETE"> <xs:complexType> <xs:sequence> <xs:element ref="TITRE" minOccurs="1" maxOccurs="2"/> <xs:element ref="SUBENTRY" minOccurs="0" maxOccurs="unbounded"> </xs:element> </xs:sequence> </xs:complexType> </xs:schema>
50
Les Schémas XML permettent
Les imports De définir de nouveaux types simples La création de type complexe à partir de type simple La restriction (par facettes, unicité…) La création de type par dérivation, de groupe de substitution …
51
Schémas XML : Pour approfondir
53
III) Requêtes et manipulation
XPATH XSLT DOM et SAX Et aussi XLink, XPointer, XQuery, XQL
54
1) Xpath Un langage utilisé par XSLT pour localiser des éléments
et/ou attributs dans un document XML
55
XPath XPath est un langage non-XML d’expression utilisé pour
Identifier des parties (chemin de localisation) de documents XML Tester des conditions booléennes Manipuler les chaînes de caractères Effectuer des calculs numériques. Communément utilisé dans les attributs match et select des éléments XSLT : <xsl:template match="/name/first"> … </xsl:template>
56
Chemin de localisation
Les chemins de localisation sont interprétés par rapport à un contexte Ou plus simplement le nœud de l'arbre à partir duquel l'expression est évaluée. L'évaluation de l'expression définit l'ensemble des nœuds qui correspondent à la condition Cela peut être l'ensemble vide s'il n'y a pas de correspondance Un chemin de localisation consiste en une suite de localisation séparée par / ou // Un chemin peut être relatif ou absolu.
57
Chemins de localisation simples
Le nœud racine Le slash / dénote le nœud racine <xsl:template match="/"> <!-- sélectionne le nœud racine --> </xsl:template> L'ensemble des nœuds enfants Le joker * permet de sélectionner l'ensemble des éléments nœuds du contexte courant <xsl:template match="*"> <!-- sélectionne tous les nœuds enfants -->
58
Sélection d'un élément Le point (.) indique le nœud courant
<xsl:template match="."> <!– sélectionne le nœud courant --> </xsl:template> Le double point (..) indique le parent du nœud courant
59
Autres Axes de selection
60
Composition de chemins
Utiliser / pour séparer des éléments hiérarchiques Utiliser // pour indiquer qu'un ou plusieurs éléments peuvent exister entre les slashs <xsl:template match="/catalogue/*/constructeur"> <!-- sélectionne tous les éléments contructeur --> <!-- ayant catalogue pour grand-père --> </xsl:template> <xsl:template match="profession//informatique"> <!– sélectionne tous les éléments informatique --> <!– ayant un élément ancêtre profession --> </xsl:template
61
Filtres Utiliser […] comme prédicat pour sélectionner un contexte de nœud particulier. Le prédicat est évalué comme une expression booléenne. Si le résultat est vrai, le nœud est sélectionné. <xsl:template match="auteur/nom[particule]"> <!-- sélectionne tous les éléments nom ayant --> <!-- auteur pour parent, et particule pour fils --> </xsl:template> <xsl:template match="/COLONNE/LIGNE[1]"> <!– sélectionne le premier élément LIGNE ayant --> <!– pour parent COLONNE à partir de la racine -->
62
Filtre par attributs Utiliser le suivi d'un nom d'attribut pour sélectionner un nœud particulier <xsl:template <!-- sélectionne tous les éléments commande --> <!-- ayant discount pour attribut --> </xsl:template> <xsl:template <!-- sélectionne tous les éléments item --> <!-- ayant catalogue pour père et l'attribut --> <!-- id avec la valeur >
63
<= => > < = ! =
Opérateurs logiques Utilisation des opérateurs de comparaison <= => > < = ! = Utilisation des opérateurs and et or et la fonction not(). Attention : remplacer < et > par < et > dans les documents XML ! "//profession[.='musicien']" sélectionne les éléments profession dont le contenu est musicien localise les éléments personne ayant un attribut naissance dont la valeur est inférieure à 1985. "//nom[prénom='Richard' and not(particule='M')]" sélectionne les éléments nom ayant un sous-élément prénom de valeur Richard mais pas de sous-élément particule de valeur M.
64
Prédicats numériques Opérateurs +, -, *, div, mod
Fonctions round(), etc.. "round(6+1.1)" retourne 7. mod 100)) div 100)" détermine le siècle dans lequel une personne est née, avec naissance est un attribut numérique contenant la date de naissance
65
2) XLST : eXtensible Stylesheet Language Transformation
66
Processeur XSLT Effectue des transformations d’arbres sur un source XML <xsl:template select=‘exercices’> <ul> <xsl:apply-template/> </ul> </xsl:template> …. <sheet style="TD"> <exercices> <exercice title="hello world"> <text> Le but de cet exercice ... </text> … </exercice> </exercices> </sheet> <html> <body> <ul> <li>Le but de …</li> </ul> </body> </html> Processeur XSLT Fichier XML Fichier XML/XHTML
67
Structure d'une feuille XSLT
Prologue <?xml version="1.0" encoding="ISO "?> <xsl:stylesheet version="1.0" xmlns:xsl= Corps : suite de règles (templates) de transformation Epilogue : </xsl:stylesheet>
68
Template XSLT Chaque règle (template) possède deux parties:
Un motif (XPath) qui identifie le/les noeud(s) XML du document qui est/sont concerné(s) par la règle et sur le(s) quel(s) il faut appliquer une action Une action qui effectue la transformation et/ou spécifie les caractéristiques de la présentation <xs:template match="un motif"> [action] </xsl:template>
69
Template XSLT : exemple
70
Pseudo élément racine Le processeur XSLT considère que l'élément de plus haut niveau du document XML a un parent désigné par "/" <?xml version="1.0"?> <top> <a/> <b/> </top>
71
Templates <xsl:apply-templates/>
Cause le traitement successif de chacun des nœuds enfants de l'élément courant par le template approprié L'ordre des enfants est respecté <xsl:value-of select="expression"/> Extrait une chaîne de caractère du document, habituellement dans l'élément courant select="." retourne la valeur textuelle de l'élément courant retourne la valeur d'un attribut de l'élément courant.
72
Production de texte On génère un nœud texte dynamiquement dans l'arbre résultant avec l'instruction<xsl:value-of select="expression"/> select : expression XPath de type chaîne qui produit la valeur du nœud texte <person given-name="Paul" family-name="Pierre"/> <xsl:template match="person"> <p> <xsl:value-of <xsl:text> </xsl:text> <xsl:value-of </p> </xsl:template> <p>Paul Pierre</p>
73
<xsl:apply-templates select="expression"/>
Fait traiter certains enfants spécifiques (répondant au critère de sélection). Cas simple : expression=identifiant élément. Permet de faire un "réarrangement" des sous éléments
74
Autres Commandes XSLT <xsl:for-each>, définir un traitement itératif <xsl:if>, définir un traitement conditionnel <xsl:choose>, définir un choix <xsl:template>, <xsl:call-template>, <xsl:param> Déclarer et appeler des fonctions avec paramètres <xsl:element>, générer un élément <xsl:attribute>, générer un attribut <xsl:sort>, permet de trier
75
Condition(s) de branchement
L’instruction xsl:if permet d'exécuter ou non certaines parties du code <xsl:if = 'Paul’"> <xsl:text> Le spécialiste XML</xsl:text> </xsl:if> L'instruction xsl:choose permet d'exécuter différents code selon des conditions <xsl:choose> <xsl:when </xsl:when> <xsl:when <xsl:otherwise><xsl:text>Un inconnu</xsl:text> </xsl:otherwise> </xsl:choose>
76
Tri Instruction xsl:sort <xsl:sort select = string-Expression lang = { nmtoken } data-type = { "text" | "number"} order = { "ascending" | "descending" } case-order = { "upper-first" | "lower-first" } />
77
Variable globale <xsl:variable name="Nom" select="Expression" />
Nom : nom de la variable Expression : valeur calculée de la variable <xsl:variable name="siecle" select="21"> Pour utiliser la variable dans la partie expression d'un template, la précéder d'un $ <xls:value-of select="$siecle*100
78
Exemple Xml (1/3) <?xml version= "1.1" encoding= "ISO-8859-1"?>
<personnes> <personne naissance="1912" mort="1954" > <nom> <prenom>Alan </prenom> <famille>Turing</famille> </nom> <profession>informaticien</profession> <profession>cryptographe</profession> </personne> <personne naissance="1957"> <prenom> Gaston </prenom> <famille> Lagaffe </famille> <profession>archiviste </profession> </personnes>
79
Exemple Xslt (2/3) <?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl=" version="1.0"> <xsl:template match="/" > <html> <head><title>Liste de personne</title></head> <body> <xsl:apply-templates select="personnes"/> </body> </html> </xsl:template> <xsl:template match="personnes"> <table border="1"> <xsl:apply-templates select="personne"/> </table> </xsl:template><xsl:template match="personne"> <tr> <td><xsl:value-of select ="nom"/></td> <td><xsl:value-of select <td><xsl:value-of select </tr> </xsl:stylesheet>
80
Exemple Résultat (3/3) <html><head><META http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Liste de personne</title> </head> <body><table border="1"><tr><td> Alan Turing </td><td>1912</td><td>1954</td> </tr> <tr><td> Gaston Lagaffe </td><td>1957</td><td></td> </table> </body> </html>
81
3) DOM et SAX Modèles de traitement
Modèle événementiel (Event-based model) – Standard de facto : SAX (Simple API for XML) ( Modèle arborescent (Tree-based model) – W3C standard : DOM (Document Object Model) ( Les processeurs SAX et DOM existent pour presque tous les langages de programmation: – Java , C , C++ , Perl , TCL Tk , VB , Prolog, …
82
SAX : Modèle événementiel
Start of Document <cv> … <infos> </infos> </cv> Start of Element Événements Text Element End of Element End of Document
83
Arbre DOM DOC Document Node A Element Parent B C Child B1 B2 Text 3
Sibling Text 1 Text 2
84
Comparaison SAX et DOM Inconvénients DOM Avantages SAX
construction d ’ un arbre en mémoire • multitude de petits objets (efficacité des new et du GC en Java) • très grand documents tous les éléments sont représentés le traitement du document par le programme se fait après l’analyse Avantages DOM navigation dans un arbre d’éléments Avantages SAX le traitement du document par le programme se fait en cours d’analyse (efficacité) seuls les éléments pertinents sont traités Inconvénients SAX écriture plus complexe des fonctions de callback pour traiter des structures imbriquées
85
IV) Applications Exemple Parseurs et interfaces de programmation
Langages de représentation Langages de programmation Protocoles d'échanges
86
XSLT XML xml InDesign InDesign Papier ou pdf ebook Xslfo/pdf site web
xhtml microsite XSLT xslfo/pdf reader d’ebook XML Epub, mobipocket télé phone Txt/mp3 Tout support de lecture mp3 XML TEI/Docbook Entrée systèmes informatiques Moteur de transformation Source Format cible Support cible © LIGARAN 2010
87
Parseurs et interfaces de programmation (API)
MSXML - Microsoft Core XML Services, le parseur XML Microsoft, , intégré au système d'exploitation Windows, accessible aux langages Microsoft, notamment en JavaScript sur le navigateur Internet Explorer. libxml2 - Le processeur XML libre du système d'exploitation linux, accessible en C , Python, PHP, et en Ruby Xerces - XML Java Parser, le parseur XML par défaut d'une machine virtuelle Java, accessible en Java Expat - Le parseur XML de James Clark, notamment embarqué par les navigateurs mozilla (firefox). VTD-XML
88
Langages de représentation
OpenDocument - tous les documents bureautiques, OpenOffice.org, 2001. Word - le format natif de Microsoft Word est en XML depuis sa version 2003. XSL-FO - eXtensible Stylesheet Language - Formatting Objects, langage extensible de stylage - formatage d'objets, W3C, 2001. SVG - Scalable Vector Graphics, graphiques vectoriels 2D, W3C, 2003. MathML - formules mathématiques, W3C, 1999, 2001, 2003. SMIL - Synchronized Multimedia Integration Language, Intégration multimédia, W3C, 1998, 2005. X3D - 3D multimédia, consortium Web3D.de documents XML côté serveur.
89
Langages de programmation
XQuery - requête et transformation XML, W3C, 2005. MXML, Flex - définition d'interface, Macromedia. Apache XSP - eXtensible Server Pages - génération de documents XML côté serveur. XUL - XML-based User interface Language, définition d'interface, Mozilla, 2000. ANT - scripts de compilation, ASF. Servlet - serveur d'application Java, configuration et logique fonctionnelle, Sun Microsystems. Log4j - log for Java, configuration d'une bibliothèque d'historique, 1996, © , ASF. UIML - User Interface Markup Language, définition d'interface, OASIS, 1997. XAML - définition d'interface, Windows Vista, 2006.
90
Protocoles d'échanges XForms - formulaires web (W3C)
OAI - Open Archive Initiative Protocole Archives ouvertes, 2000, 2002 (OAI) SOAP - RPC par HTTP (W3C) WSDL - Services web (W3C) WebDAV - Lecture/Écriture distante par HTTP (IETF) Jabber/XMPP - Messagerie instantanée et présence, multimédia (IETF)
Présentations similaires
© 2024 SlidePlayer.fr Inc.
All rights reserved.