660 likes | 885 Views
Les outils de base : XPath, XSL, XLink, XForms. 1. XPATH 2. XSLT 3. XSLFO 4. XLink 5. XForms 6. Conclusion. 1. XPath : l'adressage XML. XPath Expressions de chemins dans un arbre XML Permet de sélectionner des nœuds par navigation. Document XML. ?. XPath. XPath. XML Path Language
E N D
Les outils de base : XPath, XSL, XLink, XForms 1. XPATH 2. XSLT 3. XSLFO 4. XLink 5. XForms 6. Conclusion
1. XPath : l'adressage XML • XPath • Expressions de chemins dans un arbre XML • Permet de sélectionner des nœuds par navigation Document XML ? XPath
XPath • XML Path Language • recommandation W3C pour expressions de chemins • acceptée le 16 novembre 1999 • version 2 en cours d'élaboration • Expressions de chemins communes à : • XSL • Xpointer (liens) • XQuery (queries) • Xpath permet • de rechercher un élément dans un document • d'adresser toute sous partie d'un document XPath
XPath - Parcours d'arbre • XPath opère sur l'arbre d'un document <livre auteur = "Hugo"> <titre>Les chatiments</titre> <chapitre> <section>Buonaparte </section> <section>Neige</section> </chapitre> … </livre> racine livre Auteur = "Hugo" chapitre chapitre titre section section Les chatiments Neige Buonaparte XPath
XPath - Expression de chemins • Une expression de chemins spécifie une traversée de l'arbre du document : • depuis un nœud de départ • vers un ensemble de nœuds cibles • les cibles constituent la valeur du cheminement • Un chemin peut être : • absolu • commence à la racine • /étape1/…/étapeN • relatif • commence à un nœud courant • étape1/…/étapeN XPath
Syntaxe et sémantique • Cheminement élémentaire • direction::sélecteur[predicat] • Directions • parent, ancestor, ancestor-or-self • child, descendant, descendant-or-self • preceding, preceding-sibling • following, following-sibling • self, attribute, namespace • Sélecteur • nom de nœud sélectionné (élément ou @attribut) • Prédicat • [Fonction(nœud) = valeur] XPath
XPath - Exemples • Sections d'un chapitre • /child::livre/child::chapitre/child::section • /livre/chapitre/section • Texte du chapitre 1 section 2 • /descendant::chapitre[position() = 1]/child::section[position() = 2]/child::text() • //chapitre[1]/section[2]/text() XPath
XPath - Synthèse XPath
2. XSLT : la présentation • Permet de transformer un document • régulier ou irrégulier • de XML à XML, XHTML est un cas particulier • De XML à présentation (HTML, texte, rtf, pdf, etc.) • Un document est un arbre • Le processeur XSL parcourt l'arbre et applique les règles de transformations vérifiées (à condition vraie) aux nœuds sélectionnés • Un autre arbre est produit en sortie XSLT
XML XSL Stylesheet Document Publications avec XSL • Plusieurs formats de publication d’un même jeu de données • Il permet la présentation sur des terminaux variés Format ( PDF) Browser Netscape/IE (XHTML, DHTML, HTML) XSL Processor Format (XML)pour Word, Excel Format (XML) application e.Commerce format (WML) XSL
Architectures HTML XML Affichage ASP ou JSP S ERVEUR Programme XML HTML Processeur XSL Affichage Fichier XML XML • Affichage • Traitement Processeur XSL Base de données XSL
Les feuilles de style • Une feuille de style XSL • est un document XML de racine <xsl:stylesheet> • contient une liste de règles de transformation <xsl:template> • Chaque règle (<xsl:template>) est définie par: • Une condition spécifiant le sous-arbre du document d’entrée auquel elle s’applique • Une production spécifiant le résultat de l’application de la règle • Utilisation d'un nom de domaine spécifique • Le préfixe généralement utilisé est xsl: XSLT
Exemple de document <?xml version="1.0" ?> <Guide> <Restaurant Categorie="**"> <Nom>Le Romantique</Nom> <Adresse> <Ville>Cabourg</Ville> <Dept>Calvados</Dept> </Adresse> </Restaurant> <Restaurant Categorie="***"> <Nom>Les TroisGros</Nom> <Adresse> <Ville>Roanne</Ville> <Dept>Loire</Dept> </Adresse> </Restaurant> </Guide> XSLT
Exemple de feuille de style XSL <?xml version="1.0" ?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/xsl"> <xsl:template match="/"> <html><head><B>ESSAI XSL</B></head> <body><xsl:apply-templates/></body></html> </xsl:template> <xsl:template match="Guide"> <H1>BONJOUR LE GROUPE XML</H1> <H2>SUIVEZ LE GUIDE</H2> <xsl:apply-templates /> </xsl:template> <xsl:template match="Restaurant"> <P> <I>Restaurant :</I> <xsl:value-of select="Nom"/></P> </xsl:template> </xsl:stylesheet> XSLT
Les règles de production • Définition des règles par <xsl:template …> • Attributs • match: condition de sélection des nœuds sur lesquels la règle s'applique (XPath) • name: nom de la règle, pour invocation explicite (en conjonction avec <call-template>) • mode: permet d'appliquer à un même élément des règles différentes en fonction du contexte • priority: priorité, utilisé en cas de conflit entre deux règles ayant la même condition • Exemples • <xsl: template match="/"> • <xsl: template match="auteur"> XSLT
La génération du résultat • Le contenu de l'élément <xsl:template> est la production de la règle • Les éléments du namespace xsl sont des instructions qui copient des données du document source dans le résultat • Les autres éléments sont inclus tels quels dans le résultat • Instructions pour: • Parcourir l'arbre du document source • Copier le contenu du document source dans le résultat • Parcours de l'arbre: • <xsl:apply-templates> • <xsl:for-each> • Copie du contenu du nœud sélectionné • <xsl:value-of select= … > XSLT
Résumé des commandes • <xsl:template>, définir une règle et son contexte • <xsl:apply-templates />, appliquer les transformations aux enfants du nœud courant • <xsl:value-of select … />, extrait la valeur d'un élément sélectionné à partir du nœud courant • <xsl:for-each>, définir un traitement itératif • <xsl:pi>, générer une processing instruction • <xsl:element>, générer un élément • <xsl:attribute>, générer un attribut • <xsl:if>, définir un traitement conditionnel XSLT
Quelques éditeurs XSLT
IBM XSL Editor Rendu XML XSLT XSLT
Bilan XSLT • XSLT est un langage très puissant de transformation d'un arbre XML en un autre • XSLT permet en particulier de publier des données XML sur le Web par transformation en un document HTML standard • XSLT est utilisé : • Pour publier des contenus XML • Pour transformer des données (EAI, B2B) XSLT
3. XSLFO : le formatage • Les Objets de mise en forme sont multiples : • <fo:block> utilisé pour les paragraphes, les titres… • <fo:display-rule> ligne de séparation • <fo:display-graphic> zone rectangulaire contenant graphisme • Ils possèdent de nombreuses propriétés • Pour un block on peut définir • la marge gauche et droite • l’espace avant et après le paragraphe • la couleur du texte ………... XSLFO
XSLFO : principes • Ils sont appliqués à un nœud de l ’arbre résultat • Ils sont appelés par l ’espace nominale fo • Syntaxe : <xsl:template match="[motif xpath]" > <fo :[objet-de mise en forme] ([propriété-style]="[valeur]")+> [instructions-de-traitement] </fo:[objet de mise-en-forme]> </xsl:template> XSLFO
XSLFO : Exemple • Définition de propriétés pour la racine • <xsl:template match=‘/’> <fo-display-sequence font-style=‘italic’ start-indent=‘4pt’ end-indent=‘4pt’ font-size=‘18pt’ <xsl:apply-templates/> </fo-display-sequence> </xsl:template • La définition d’une propriété en locale est prioritaire devant l’héritage XSLFO
Les outils XSL • Processeurs XSLT conformes à la spécification: • Apache Group (www.apache.org): Xalan 1.0.1 • Oracle XDK (www.oracle.com): XML Parser 2.0.2 • James Clark (www.jclark.com): XT • Microsoft Internet Explorer 5.0 et plus • Netscape 6 supporte XSLT • Processeur XSLFO • Apache Group : FOP (Formating Object Processor) Génère du PDF http://www.apache.org • JFOR (Open Source) Génère du RTF http://www.jfor.org XSL
XML = SGML léger pour la production de publications web importantes : production d’une source unique en XML ; XSLT = génération automatique de présentations web multiples ; XSLFO = génération automatique sur d’autres supports. Questions ? Bilan XSL XSL
4. Autres spécifications • XLink = liens externes entre documents • XPointer = pointeurs internes à un document • XForms = saisie de formulaires avec XML XLink et plus
Xlink et les liens • Exprimer des liens entre documents XML • pointe sur une URL • l'URL peut inclure une partie Xpointer • tout élément peut être un lien • Différents types de liens • simple xlink:type = "simple" • étendu xlink:type = "extended" • De véritables associations • 1-1 en simple, k-n en étendu • avec rôles possibles • avec comportements possibles XLink et plus
Exemples simples • <Annotation xlink:type="simple" href="note1.xml"> 1 </Annotation> • <Auteur xlink:type="simple" inline="true" href="http://www.e-xmlmedia.com/~georges/"> Georges Gardarin </Auteur> • <Image xlink:type="simple" href="logo.gif"/> • Les attributs doivent être définis dans la DTD • si le document en possède une XLink et plus
Associations orientées de M vers N Permettent de relier des éléments entre eux par des arcs étiquetés et ainsi de composer des graphes étiquetés orientés Éléments ressource et locator définissant les nœuds Éléments arc définissant les liens Ressource <xxx xlink:type="resource" label="..." title="..." role="...">contenu de l'élément</xxx> Locator <xxx xlink:type="locator" label="…" title="…" role="…" href="…" /> Arc <xxx xlink:type="arc" from="…" to="…" show="…" actuate="…" title="…" arcrole="…">contenu</xxx> Les liens étendus XLink et plus
xlink:type type de lien href référence de l'URL title titre du document cible role rôle du document cible show en place, interne ou nouveau document actuate manuel ou automatique label étiquette des arcs from source de l'arc to cible de l'arc Les attributs de XLink XLink et plus
XPointer • Permet de référencer un élément particulier d'un document • le document est spécifié par Xlink • le Xpointer est ajouté à l'URI séparée par # ou | • Pointeur absolue • id() : référence un élément d'identifiant donné • root() : pointe sur la racine d'un document • html() : référence un document HTML • Pointeur relatif = XPath • child, descendant, ancestor, preceding, following, … • Exemple : <vin2 xlink:type="simple" href="http://www.site.fr/ degustation#xptr(/child::degustation/child::vin[2])" XLink et plus
XForms • Nouvelle génération de formulaires Web • Assemblage de formulaires à partir de schéma • Schéma = structure + type • Contraintes = Dépendances, expressions et calculs • XForms User Interfaces est la partie apparente pour l’utilisateur (présentation) • XForms User Interfaces intègre toutes les commandes de XHTML • Ajoute en plus des contrôles (tags) spécifiques au niveau présentation. XForms
XForms Submit Protocol Saisie des formulaires • Génération et contrôle du message XML • Contrôle sur le client ou le serveur XForms Model XForms User Interface <XML> Instance data XForms
5. Conclusion • XSL pour transformer et présenter • puissant mais complexe • problème de performance des processeurs ? • Recommandation XSL version 1.0 • http://www.w3.org/TR/xsl/ • Recommandation XPath version 1.0 • http://www.w3.org/TR/xpath • Recommandation Xlink version 1.0 • http://www.w3.org/TR/xlink Références
EXERCICES ET COMPLEMENTS • Modèle des documents en entrée • Modèle des documents en sortie • Structure d’une feuille de style • Mise en œuvre des transformations
Modèle de document en entrée • Le document transformé doit être un document XML bien formé • Document XML: arbre dont les nœuds sont les éléments et leur contenu (texte) • Pour XSL, la racine du document, les attributs, les namespaces, les instructions de traitement et les commentaires sont aussi vus comme des nœuds • Types de nœuds traités par XSL: • Racine du document (différent de l’élément racine!) • Éléments • Texte • Attributs • Namespaces • Instructions de traitement • Commentaires
Exemple de document XML <?xml version="1.0" encoding="iso-8859-1"?> <?xml-stylesheet href="style1.xsl" type="text/xsl"?> <CATALOGUE> <ARTICLE> <REFERENCE>JT3006</REFERENCE> <PRIX UNIT="FFR" TAX="TTC">1874</PRIX> </ARTICLE> <ARTICLE> … </ARTICLE> </CATALOGUE>
Arbre correspondant Racine Les attributs apparaissent comme des fils de l’élément auquel ils s’appliquent <?xml-stylesheet href="style1.xsl" type="text/xsl"?> Catalogue Article Article Prix Reference Prix="FFR" 1874 JT3006 Tax="TTC"
Modèle de document en sortie • En général, le document produit est un document XML • Document complet • Fragment de document bien formé • La norme prévoit deux autres types de documents produits: • Un type HTML, qui permet de transformer le HTML bien formé (ex: <BR/>) en HTML standard (ex: <BR>) • Un type texte, qui permet de générer des formats non balisés de type RTF, Postscript, TeX. • Le type de format de sortie est contrôlé par l’élément xsl:output
Structure d’une feuille XSL • Une feuille de style XSL contient une liste de règles de transformation • Chaque règle (template) est définie par: • Une condition spécifiant le sous-arbre du document d’entrée auquel elle s’applique • Une production spécifiant le résultat de l’application de la règle • XSL utilise XML pour décrire les règles de transformation: • <xsl:stylesheet> est l’élément racine d’une feuille de style XSL • Toutes les instructions XSL sont des éléments du namespace "http://www.w3.org/1999/XSL/Transform" • Le préfixe généralement utilisé est xsl
Exemple de feuille de style Style1.xsl <?xml version="1.0"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="CATALOGUE"> <html> <xsl:apply-templates/> </html> </xsl:template> <xsl:template match="ARTICLE"> <P> <xsl:apply-templates/> </P> </xsl:template> </xsl:stylesheet>
Que fait l'exemple? • La première règle: • Remplace l'élément racine <CATALOGUE> par l'élément <html> • Le contenu de <html> est le résultat de la transformation du contenu de <CATALOGUE> par les autres règles de la feuille de style • La seconde règle: • Remplace chaque élément <ARTICLE> par un élément <P> • Le contenu de <P> est le texte (sans les balises) contenu dans les descendants de l'élément <ARTICLE> (règle par défaut)
Mise en œuvre • Trois types de mise en œuvre possible: • Transformation statique • Transformation dynamique sur le serveur Web • Transformation dynamique sur le client • Le choix de l'approche dépend: • De l'utilisation des documents produits (impression papier, publication Web) • Du type de données XML manipulées (statique ou dynamique) • Des capacités du serveur Web utilisé • Des capacités du client Web utilisé
Architectures ASP ou JSP HTML S ERVEUR XML Programme Affichage XML Processeur XSL XML • Traitement • Affichage XML Fichier HTML Processeur XSL PS PDF WML XML HTML Base de données Affichage Processeur XSL
Transformation statique • Les documents XML sont transformés à l'avance: • Impression papier • Stockage HTML sur un site Web standard • Avantages: • Pas de problèmes de performance • Serveur et client Web standards • Inconvénients • Impossibilité de gérer des données XML dynamiques • Cohérence entre source et résultat
Transformation sur le serveur • Les documents XML sont transformés à la demande par le serveur: • Publication Web en HTML • Échanges inter-application • Avantages: • Permet de gérer des données XML dynamiques • Client Web standard (HTML) • Inconvénients: • Nécessite un serveur compatible XSL • Problèmes de performances sur le serveur
Transformation sur le client • Le document XML et la feuille XSL sont transmises par le serveur avant transformation: • Publication Web • Avantages: • Permet de gérer des données dynamiques • Serveur Web standard • Pas de problèmes de performances sur le serveur • Inconvénients: • Nécessite un client Web compatible XSL • Les données XML ne sont pas filtrées avant envoi
Association document-feuille XSL • Transformation statique: • Le document XML et la feuille XSL sont deux paramètres du programme de transformation • Transformation dynamique: • L'association est gérée par une instruction de traitement dans le fichier XML • <?xml-stylesheet href="style1.xsl" type="text/xsl"?>
LES RÈGLES XSL • Définition d'une règle • La génération du résultat • L'élément <xsl:apply-template> • L'élément <xsl:value-of> • L'élément <xsl:for-each>