450 likes | 582 Views
Les outils de base: Publication avec XML. 1. XPATH 2. XSLT 3. XSLFO 4. XLink, XForms, RSS, … 5. XML et la bureautique. 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.
E N D
Les outils de base: Publication avec XML 1. XPATH 2. XSLT 3. XSLFO 4. XLink, XForms, RSS, … 5. XML et la bureautique
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 racine <livre auteur = "Hugo"> <titre>Les chatiments</titre> <chapitre> <section>Buonaparte </section> <section>Neige</section> </chapitre> … </livre> livre Auteur = "Hugo" chapitre chapitre titre section section Les chatiments Neige Bonaparte 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 document est produit en sortie XSLT
XSL Stylesheet Publications avec XSL • Plusieurs formats de publication pour un contenu • XSL permet la présentation sur des terminaux variés Format ( Postcript) XML Browser (XHTML, DHTML, HTML) Document XSL Processor Format (XML)pour Word, Excel Format (XML) application e.Commerce format (WML) XSLT
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 XSLT
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>) précise: • Une condition spécifiant le sous-arbre du document d’entrée auquel elle s’applique (match=) • Une production spécifiant le résultat de l’application de la règle (contenu) • Il s'agit de règles de production classiques • If <condtition> then <production> • Codées en XML avec espace de nom 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" name="R1" pririty="1"> 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
Processeurs XSLT • Processeurs XSLT conformes à la spécification: • Apache Group (www.apache.org): Xalan • Oracle XDK (www.oracle.com): XML Parser/ XSL Proc. • MSXML .NET • James Clark (www.jclark.com): XT • Saxon • libXML, libXSLT (Unix C) • Browser • Microsoft MSXML et IE 5 ou plus • Netscape supporte XSLT depuis la V6 • Firefox Mozilla • Editeur et debugger • Style Vision de Altova • Oxygen de Synchro • Stylus Studio de Data Direct • CookTop et Tidy (gratuit) 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 très utilisé : • Pour publier des contenus XML • Pour transformer des formats (EAI, B2B) XSLT
Permet les mises en pages sophistiquées Objets de mise en forme applicables aux résultats avec XSLT Distinction Formatage des pages Formatage des objets à l'intérieur des pages Statiques Dynamiques 3. XSL-FO : le formatage XSL-FO
Principes • Peut s'appliquer aux résultats des feuilles XSLT XSL-FO
Organisation du document • Un document FO est formé d'un élément fo:root qui comprend deux parties distinctes • une description des modèles de pages • fo:layout-master-set • une description du contenu • fo:page-sequence • Le contenu comporte : • Des flux contenant les données mêmes du document • Des éléments statiques dont le contenu se répète sur les pages (en-têtes courants, no de page, etc.) XSL-FO
Objets de formatage • Les objets de formatage sont multiples : • <fo:block> • utilisé pour les blocs de textes, paragraphes, titres… • <fo:display-rule> • ligne de séparation • <fo:external-graphic> • zone rectangulaire contenant un graphisme (SVG) • 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 ………... XSL-FO
Pages portrait ou paysage Pages recto-verso Page de tailles variées Marges multiples Colonnes multiples Entête et pieds de page Caractères unicode Formatage multi-langages Tables des matières générées Multiple directions d'écritures Numérotation des pages Graphiques et SVG Tables, avec entêtes,lignes et colonnes fusionnables Listes Zones flottantes Tris à l'édition Notes de bas de pages Fonctionnalités XSL-FO
<?xml version="1.0" encoding="iso-8859-1"?> <fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format"> <fo:layout-master-set> <fo:simple-page-master master-name="my-page"> <fo:region-body margin="2 cm"/> </fo:simple-page-master> </fo:layout-master-set> <fo:page-sequence master-reference="my-page"> <fo:flow flow-name="xsl-region-body"> <fo:block>Hello, world!</fo:block> </fo:flow> </fo:page-sequence> </fo:root> Element Root Permet de définir le namespace XSL-FO Layout master set Permet de déclarer une ou plusieurs page masters (masque) et page sequence masters pour définir la structure des pages (ici une de 2 cm de marges) Page sequence Les pages sont groupées en séquences et structurées selon la référence au masque. Flow C'est le container du texte utilisateur dans le document. Le nom du flot lit le texte à une zone de la page définie dans le masque. Block C'est le bloc de formatage qui inclut un paragraphe de texte pouvant être produit pas XSLT. XSL-FO: hello World XSL-FO
XSL-FO et XSLT : 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é locale est prioritaire devant l’héritage XSL-FO
Les processeurs XSL-FO • 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 • Antenna House • XSL Formatter http://www.antennahouse.com • RenderX • Génère du PDF http://www.renderx.com • Altova • StyleVision http://www.altova.com/products_xsl.html • XML Mind FO Converter • Génère du RTF http://www.xmlmind.com/foconverter • Autres • Arbortext, Adobe, Scriptura, XMLPDF, APOC, XSL-FO to TeX XSL-FO
XML = format pour la production de publications échangeables sur le web : production d’une source unique en XML ; XSLT = génération automatique de présentations multiples ; XSL-FO = génération de présentations soignées avec pages maîtres et blocs formatés. Questions ? Bilan XSL XSL
4. Autres spécifications • XLink = liens externes entre documents • XPointer = pointeurs internes à un document • XForms = saisie de formulaires avec XML • RSS = format pour la syndication de contenus 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" title="Créateur" href="http://www.mysite.com/~georges/"> Victor Hugo</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 des boites symboliques à label • Peut être réalisée en XHTML, WML, … • Ajoute en plus des contrôles spécifiques au niveau présentation. XForms
XForms Model XForms User Interface XForms Submit Protocol <XML> Instance data Saisie des formulaires • Génération et contrôle du message XML • Contrôle sur le client ou le serveur XForms
La syndication de contenus • RSS (Really Simply Syndication) • méthode simple et efficace pour accéder aux meilleures sources d'information sur le web. • permet aux sites Internet et aux blogs de proposer leur contenu de manière simplifiée. • La plupart des grands sites d'information proposent leur contenu en RSS (ex: Libération, Actustar, …) • Lu et présenté par un agrégateur RSS (e.g., Yahoo) RSS
Que gagne-t-on à utiliser RSS ? • Il y a de nombreux avantages à accéder ainsi à l'information : • l'efficacité -- les toutes dernières infos sont automatiquement rassemblées au même endroit • la variété -- les titres concernant les sujets qui vous intéressent sont mis en évidence • la clarté -- les titres peuvent être affichés en fonction de leur importance et/ou en commençant par le plus récent • l'ordre -- les lettres d'information par email et les favoris négligés peuvent vite devenir encombrants ! RSS
Exemple RSS • <rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/"> <channel> <title>XML.com</title> <link>http://www.xml.com/</link> <description>XML.com features a rich mix of information and services for the XML community.</description> <language>en-us</language> <item> <title>The .NET Schema Object Model</title> <link>http://www.xml.com/pub/a/2002/12/04/som.html</link> <description>Priya Lakshminarayanan describes in detail the use of the .NET Schema Object Model for programmatic manipulation of W3C XML Schemas.</description> <dc:creator>Priya Lakshminarayanan</dc:creator> <dc:date>2002-12-04</dc:date> </item> <item> <title>SVG's Past and Promising Future</title> <link>http://www.xml.com/pub/a/2002/12/04/svg.html</link> <description>In this month's SVG column, Antoine Quint looks back at SVG's journey through 2002 and looks forward to 2003.</description> <dc:creator>Antoine Quint</dc:creator> <dc:date>2002-12-04</dc:date> </item> </channel></rss> XForms
5. Intégration à la bureautique • Stockage • Format des fichiers : XML devient possible • Compatibilité avec l'existant • Feuilles de styles • Modèle d'import et d'export • Des jargons spéciaux • Word ML • Open Document ML Bureautique
Intégration à Office • Word • Format XML spécifique WordML, couvre le format .doc • Professional inclut le support XSLT et la possibilité de créer des schémas utilisateur • Possibilité d'importer et exporter du XML "pur" par application de feuilles de style XSLT • Excel • Format XML spécifique • Importation et exportation de document XML • Support des Web Services • InfoPath • Nouvel outil Office produisant du XML • Construction de formulaires interactifs • FrontPage • Outils pour générer HTML avec XSLT Bureautique
Intégration à Open Office • www.openoffice.org • Suite bureautique Open Source • Initialement développée par SUN • Format natif XML • Définit comme un "standard" Oasis • Le XML est zippé sur disque • Peut référencer du binaire (images, etc.) • http://xml.openoffice.org • Support de formulaire XForms Bureautique