La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

Les outils de base : XPath, XSL, XLink, XForms

Présentations similaires


Présentation au sujet: "Les outils de base : XPath, XSL, XLink, XForms"— Transcription de la présentation:

1 Les outils de base : XPath, XSL, XLink, XForms
2. XSLT 3. XSLFO 4. XLink 5. XForms 6. Conclusion

2 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

3 XPath XML Path Language Expressions de chemins communes à :
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

4 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 Buonaparte Neige XPath

5 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

6 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 Prédicat [Fonction(nœud) = valeur] XPath

7 XPath - Exemples Sections d'un chapitre Texte du chapitre 1 section 2
/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

8 XPath - Synthèse XPath

9 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

10 Format (XML) pour Word, Excel
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) XML Document Browser Netscape/IE (XHTML, DHTML, HTML) XSL Processor Format (XML) pour Word, Excel XSL Stylesheet Format (XML) application e.Commerce format (WML) XSL

11 Architectures HTML XML Affichage S E R V E U R Programme XML HTML
ASP ou JSP S E R V E U R Programme XML HTML Processeur XSL Affichage Fichier XML XML Affichage Traitement Processeur XSL Base de données XSL

12 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

13 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> <Ville>Roanne</Ville>   <Dept>Loire</Dept>   </Adresse> </Guide> XSLT

14 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 match="Restaurant"> <P> <I>Restaurant :</I>   <xsl:value-of select="Nom"/></P>  </xsl:template>  </xsl:stylesheet> XSLT

15 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

16 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

17 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

18 Quelques éditeurs XSLT

19 IBM XSL Editor XML XSLT Rendu XSLT

20 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

21 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

22 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

23 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

24 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 JFOR (Open Source) Génère du RTF XSL

25 Bilan 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 ? XSL

26 4. Autres spécifications
XLink = liens externes entre documents XPointer = pointeurs internes à un document XForms = saisie de formulaires avec XML XLink et plus

27 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

28 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

29 Les liens étendus Associations orientées de M vers N Ressource Locator
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> XLink et plus

30 Les attributs de XLink xlink:type href title role show actuate label
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 XLink et plus

31 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

32 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

33 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 XForms Submit Protocol <XML> Instance data XForms

34 5. Conclusion XSL pour transformer et présenter
puissant mais complexe problème de performance des processeurs ? Recommandation XSL version 1.0 Recommandation XPath version 1.0 Recommandation Xlink version 1.0 Références

35

36 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

37 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

38 Exemple de document XML
<?xml version="1.0" encoding="iso "?> <?xml-stylesheet href="style1.xsl" type="text/xsl"?> <CATALOGUE> <ARTICLE> <REFERENCE>JT3006</REFERENCE> <PRIX UNIT="FFR" TAX="TTC">1874</PRIX> </ARTICLE> </CATALOGUE>

39 <?xml-stylesheet href="style1.xsl" type="text/xsl"?>
Arbre correspondant Racine <?xml-stylesheet href="style1.xsl" type="text/xsl"?> Catalogue Article Article Prix Reference Prix="FFR" 1874 JT3006 Les attributs apparaissent comme des fils de l’élément auquel ils s’appliquent Tax="TTC"

40 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

41 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

42 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> </P> </xsl:stylesheet>

43 Que fait l'exemple? La première règle: La seconde 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)

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

45 Architectures HTML S E R V E U R XML Programme Affichage XML XML
ASP ou JSP HTML S E R V E U R XML Programme Affichage XML Processeur XSL XML Traitement Affichage XML Fichier Processeur XSL HTML PS PDF WML XML HTML Base de données Affichage Processeur XSL

46 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

47 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

48 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

49 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"?>

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

51 Définition d'une règle Définition des règles avec <xsl:template>, avec les attributs: match: condition de sélection des nœuds sur lesquels la règle s'applique 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 Au moins un des attributs match ou name doit être présent L'attribut match permet de spécifier des expressions complexes XPath pour sélectionner les nœuds

52 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 <xsl:value-of>

53 L'élément <xsl:apply-templates>
L'élément <xsl:apply-templates> permet d'appliquer récursivement les règles aux fils de l'élément sélectionné par la règle courante Il a deux attributs optionnels: select: permet de sélectionner les descendants à traiter mode: permet de sélectionner les règles à appliquer L'attribut select permet de définir des expressions complexes pour sélectionner des nœuds Similaire à l'attribut match de <xsl:template> Expressions XPath

54 Utilisation du select Style2.xsl <?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="/"> <html> <xsl:apply-templates/> </html> </xsl:template> <xsl:template match="CATALOGUE"> <body> </body> <xsl:template match="ARTICLE"> <xsl:apply-templates select="LIBELLE"/> </xsl:stylesheet> Style2.xsl

55 L'élément <xsl:value-of>
L'élément <xsl:value-of> calcule la valeur d'une expression et la copie dans le résultat L'expression est évaluée dans le contexte de l'élément courant Il a deux attributs: select: attribut obligatoire spécifiant l'expression XPath à évaluer disable-output-escaping: attribut optionnel gérant la copie des caractères spéciaux (valeur: yes ou no) La valeur d'un nœud est une string, sa valeur exacte dépend du type de nœud: Pour un élément, c'est tout le texte compris entre les balises de début et de fin

56 Utilisation de <xsl:value-of>
<?xml version="1.0"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="/"> <html> <xsl:apply-templates/> </html> </xsl:template> <xsl:template match="CATALOGUE"> <body> </body> <xsl:template match="ARTICLE"> <xsl:value-of select="LIBELLE"/> </xsl:stylesheet>

57 L'élément <xsl:for-each>
L'élément <xsl:value-of> ne devrait être appliqué qu'à des expressions retournant un nœud unique: Dans le cas contraire, seule la valeur du premier nœud est retournée L'élément <xsl:for-each> permet d'itérer sur un ensemble d'éléments défini par l'attribut: select: attribut obligatoire permettant de sélectionner les nœuds à traiter Le contenu de l'élément <xsl:for-each> est copié n fois dans le résultat: Les instructions xsl sont traitées comme dans une règle <xsl:for-each> permet de réduire le nombre de règles, dans le cas de documents réguliers

58 Utilisation de <xsl:for-each>
<?xml version="1.0"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="/"> <html> <xsl:apply-templates/> </html> </xsl:template> <xsl:template match="CATALOGUE"> <body> <xsl:for-each select="ARTICLE"/> < xsl:value-of select="LIBELLE"/> </xsl:for-each> </body> </xsl:stylesheet> Style3.xsl

59 La sélection des éléments
L'attribut match des éléments <xsl:template> permet de spécifier des conditions complexes pour sélectionner les éléments auxquels appliquer une règle La syntaxe de l'attribut select, utilisée par plusieurs instructions, permet de sélectionner des éléments parmi les descendants de l’élément courant auquel s’applique la règle

60 Exemples d'expressions
para: tout élément para *: tout élément chapter|appendix: tout élément chapter ou appendix olist/item: tout élément item avec un père olist appendix/*/para: tout élément para avec un grand-père appendix appendix//para: tout élément para avec un ancêtre appendix /: le nœud racine text(): tout nœud texte processing-instruction(): toute instruction de traitement node(): tout nœud id("W11"): élément d'ID W11

61 Exemples avec tests para[1]: tout élément para qui est le premier fils para de son père *[position()=1 and self::para]: idem para[last()=1]: tout élément para qui est le seul fils para de son père items/item[position()>1]: tout élément item qui à un père items et qui n'est pas le premier fils item de son père item[position() mod 2 = 1]: tout élément item qui est un fils item impair @class: tout attribut class @*: tout attribut tout élément p avec un ancêtre div dont l'attribut class vaut appendix


Télécharger ppt "Les outils de base : XPath, XSL, XLink, XForms"

Présentations similaires


Annonces Google