III' Publication et Traitement avec XSL - PowerPoint PPT Presentation

About This Presentation
Title:

III' Publication et Traitement avec XSL

Description:

Expressions de chemins dans un arbre XML. Permet de s lectionner des ... de rechercher un l ment dans un document. d'adresser toute sous partie d'un document ... – PowerPoint PPT presentation

Number of Views:74
Avg rating:3.0/5.0
Slides: 53
Provided by: george558
Category:

less

Transcript and Presenter's Notes

Title: III' Publication et Traitement avec XSL


1
III. Publication et Traitement avec XSL
  • XPATH
  • XSLT
  • XSL-FO
  • Traitement de documents
  • Conclusion

2
1. XPath l'adressage XML
  • XPath
  • Expressions de chemins dans un arbre XML
  • Permet de sélectionner des nuds par navigation

Document XML
?
XPath
3
XPath
  • XML Path Language
  • recommandation W3C pour expressions de chemins
  • acceptée le 16 novembre 1999
  • version 2 acceptée depuis janvier 2007
  • 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

ltlivre auteur "Hugo"gt lttitregtLes
chatimentslt/titregt ltchapitregt
ltsectiongtBuonaparte lt/sectiongt
ltsectiongtNeigelt/sectiongt lt/chapitregt
lt/livregt
XPath
5
XPath - Expression de chemins
  • Une expression de chemins spécifie une traversée
    de l'arbre du document
  • depuis un nud de départ
  • vers un ensemble de nuds cibles
  • les cibles constituent la valeur du cheminement
  • Un chemin peut être
  • absolu
  • commence à la racine
  • /étape1//étapeN
  • relatif
  • commence à un nud courant
  • étape1//étapeN

XPath
6
Syntaxe et sémantique
  • Cheminement élémentaire
  • directionsé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 nud sélectionné (élément ou _at_attribut)
  • Prédicat
  • Fonction(nud) valeur

XPath
7
EXEMPLES
  • Sections d'un chapitre
  • /childlivre/childchapitre/ childsection
  • /livre/chapitre/section
  • Texte du chapitre 1 section 2
  • /descendantchapitreposition()
    1/childsectionposition() 1 /childtext()
  • //chapitre0/section1/text()
  • Remonter à lauteur du livre
  • parentsection/ancestorlivre/ child_at_auteur
  • ancestorlivre/_at_auteur

8
XPath - Synthèse
XPath
9
XPath 2.0
  • Types des schémas et séquences supportés
  • Elimination des  Result Tree Fragments 
  • Support des groupes de noeuds
  • Introduction de fonctions d'agrégats
  • Support des boucles For et des conditions
  • Support des expressions régulières
  • Documents multiples en entrée et sortie
  • Nouvelles fonctions et opérateurs
  • Intégration de fonctions utilisateurs possible

10
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 nuds sélectionnés
  • Un document est produit en sortie

XSLT
11
Publications avec XSL
  • Plusieurs formats de publication pour un contenu
  • XSL permet la présentation sur des terminaux
    variés

XSLT
12
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
13
Transformation par Jscipt côté client
  • lthtmlgt ltbodygt
  • ltscript type"text/javascript"gt
  • // Load XML
  • var xml new ActiveXObject("Microsoft.XMLDOM")
  • xml.async false
  • xml.load("exemple.xml")
  • // Load XSL
  • var xsl new ActiveXObject("Microsoft.XMLDOM")
  • xsl.async false
  • xsl.load("exemple.xsl")
  • // Transform
  • document.write(xml.transformNode(xsl))
  • lt/scriptgt
  • lt/bodygt lt/htmlgt

14
Les feuilles de style
  • Une feuille de style XSL
  • est un document XML de racine ltxslstylesheetgt
  • contient une liste de règles de transformation de
    l'arbre d'entrée en arbre de sortie
    ltxsltemplategt
  • Chaque règle (ltxsltemplategt) précise
  • Une condition spécifiant le sous-arbre du
    document dentrée auquel elle sapplique (match)
  • Une production spécifiant le résultat de
    lapplication de la règle (contenu)
  • Il s'agit de règles de production classiques
  • If ltcondtitiongt then ltproductiongt
  • Codées en XML avec espace de nom xsl

XSLT
15
Exemple de document
  • lt?xml version"1.0" ?gt
  • ltGuidegt
  • ltRestaurant Categorie""gt 
  • ltNomgtLe Romantiquelt/Nomgt
  • ltAdressegt 
  • ltVillegtCabourglt/Villegt  
  • ltDeptgtCalvadoslt/Deptgt
  •   lt/Adressegt 
  • lt/Restaurantgt
  • ltRestaurant Categorie""gt 
  • ltNomgtLes TroisGroslt/Nomgt
  • ltAdressegt 
  • ltVillegtRoannelt/Villegt  
  • ltDeptgtLoirelt/Deptgt  
  • lt/Adressegt
  • lt/Restaurantgt
  • lt/Guidegt

 
XSLT
16
Exemple de feuille de style XSL
  • lt?xml version"1.0" ?gt
  • ltxslstylesheet xmlnsxsl"http//www.w3.org/xsl"
    gt
  • ltxsltemplate match"/"gt
  • lthtmlgtltheadgtltBgtESSAI XSLlt/Bgtlt/headgt
    ltbodygtltxslapply-templates/gtlt/bodygtlt/htmlgt 
  • lt/xsltemplategt
  • ltxsltemplate match"Guide"gt 
  • ltH1gtBONJOUR LE GROUPE XMLlt/H1gt  
  • ltH2gtSUIVEZ LE GUIDElt/H2gt  
  • ltxslapply-templates /gt  
  • lt/xsltemplategt
  • ltxsltemplate match"Restaurant"gt
  • ltPgt ltIgtRestaurant lt/Igt  
  • ltxslvalue-of select"Nom"/gtlt/Pgt 
  • lt/xsltemplategt 
  • lt/xslstylesheetgt

XSLT
17
Les règles de production
  • Définition des règles par ltxsltemplate gt
  • Attributs
  • match condition de sélection des nuds sur
    lesquels la règle s'applique (XPath)
  • name nom de la règle, pour invocation explicite
    (en conjonction avec ltcall-templategt)
  • priority priorité, utilisé en cas de conflit
    entre deux règles ayant la même condition
  • Exemples
  • ltxsl template match"/"gt
  • ltxsl template match"auteur" name"R1"
    priority"1"gt

XSLT
18
La génération du résultat
  • Le contenu de l'élément ltxsltemplategt est la
    production
  • 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
  • ltxslapply-templatesgt, ltxslfor-eachgt
  • Copie du contenu du nud sélectionné
  • ltxslvalue-of select gt

XSLT
19
Résumé des commandes
  • ltxsltemplategt
  • définir une règle et son contexte
  • ltxslapply-templates /gt
  • appliquer les transformations aux enfants du nud
    courant
  • ltxslvalue-of select /gt
  • extrait la valeur d'un élément sélectionné à
    partir du nud courant
  • ltxslfor-eachgt
  • définir un traitement itératif
  • ltxslpigt
  • générer une instruction de traitement
  • ltxslelementgt
  • générer un élément
  • ltxslattributegt
  • générer un attribut
  • ltxslifgt
  • définir un traitement conditionnel 

XSLT
20
Processeurs XSLT
  • Processeurs XSLT conformes à la spécification
  • Apache Group (www.apache.org) Xalan
  • Oracle XDK (www.oracle.com) XML Parser/ XSLT
    Proc.
  • MSXML et System.xml (www.microsft.com/xml)
    packages .NET
  • James Clark (www.jclark.com) XT
  • Saxon XML (saxon.sourceforge.net) XSLT Proc.
  • libXML, libXSLT (Unix C)
  • Browsers
  • Microsoft IE 5 ou plus
  • Netscape depuis la V6
  • Mozilla Firefox depuis la V1
  • Opera depuis la V7

XSLT
21
Quelques éditeurs
  • StylusStudio www.stylusstudio.com
  • Edit, Map, Debug XSLT Stylesheets
  • Visual, Easy-to-Use Tools for XSLT!
  • EditiX www.editix.com
  • XSLT Debugger
  • XML XSD XSL SVG XSL-FO
  • MoreMotion www.moremotion.com
  • Fast XSLT Stylesheet Development
  • With High-End Wysiwyg Editor
  • Oxygen XSLT Editor www.oxygenxml.com
  • Edit and debug your XSL stylesheets
  • Transform XML using XSLT and FOP
  • Altova Style Vision www.altova.com
  • Visual stylesheet design from databases

XSLT
22
Editeur XSLT (Sonic)
23
Mapper XSLT à XSLT (Sonic)
24
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
    XHTML standard
  • XSLT est très utilisé
  • Pour publier des contenus XML
  • Pour transformer des formats (EAI, B2B)

XSLT
25
3. XSL-FO le formatage
  • Nommé officiellement XSL
  • Standard depuis octobre 2001
  • Permet les mises en pages sophistiquées sur
    écran, papier, ...
  • Génération de PDF ou RTF
  • Applique des objets de mise en forme aux données
    XML
  • Utilisé notamment pour la PAO

XSL-FO
26
Complémentaire à XSLT
  • Peut s'appliquer aux résultats des feuilles XSLT

XSL-FO
27
Organisation du document
  • Un document FO est formé d'un élément foroot qui
    comprend deux parties distinctes
  • une description des modèles de pages
  • folayout-master-set
  • une description du contenu
  • fopage-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
28
Structure de la feuille foroot
  • lt?xml version"1.0" encoding"ISO-8859-1"?gt
  • ltforoot xmlnsfo"http//www.w3.org/1999/XSL/Form
    at"gt
  • ltfolayout-master-setgt
  • ltfosimple-page-master master-name"A4"gt
  • lt!-- Template de page ici --gt
  • lt/fosimple-page-mastergt
  • lt/folayout-master-setgt
  • ltfopage-sequence master-reference"A4"gt
  • lt!-- Contenu de la page ici --gt
  • lt/fopage-sequencegt
  • lt/forootgt

Définition des masques de pages (1 à N)
Définition des contenus de chaque page
XSL-FO
29
Modèle de page
  • Page découpée en régions
  • Les régions ont des marges
  • Fixées par des attributs dans le masque de page
  • Les flux de données sont envoyés les régions

XSL-FO
30
Objets de formatage
  • Les objets de formatage sont multiples
  • ltfoblockgt
  • utilisé pour les blocs de textes, paragraphes,
    titres
  • ltfodisplay-rulegt
  • ligne de séparation
  • ltfoexternal-graphicgt
  • 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
  • lespace avant et après le paragraphe
  • la couleur du texte ...

XSL-FO
31
XSL-FO hello World
  • lt?xml version"1.0" encoding"iso-8859-1"?gt
  • ltforoot xmlnsfo"http//www.w3.org/1999/XSL/Form
    at"gt
  • ltfolayout-master-setgt
  • ltfosimple-page-master master-name"my-page"
    gt
  • ltforegion-body margin"2 cm"/gt
  • lt/fosimple-page-mastergt
  • lt/folayout-master-setgt
  • ltfopage-sequence master-reference"my-page"gt
  • ltfoflow flow-name"xsl-region-body"gt
  • ltfoblockgtHello, world!lt/foblockgt
  • lt/foflowgt
  • lt/fopage-sequencegt
  • lt/forootgt
  • 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
32
Fonctionnalités
  • 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

XSL-FO
33
Les processeurs XSL-FO
  • FOP (Apache Group) Open Source
  • Formating Object Processor
  • Génère du PDF http//www.apache.org
  • JFOR (Sourceforge) Open Source
  • Génère du RTF http//sourceforge.net/projects/
    jfor
  • XSL Formatter
  • Antenna House http//www.antennahouse.com
  • RenderX
  • Génère du PDF http//www.renderx.com
  • StyleVision
  • Altova http//www.altova.com/products_xsl
    .html
  • Scriptura
  • InventiveDesigners http//www.inventivedesigner
    s.com/scriptura
  • Autres
  • Arbortext, Adobe, Xinc, XMLPDF, APOC, XSL-FO to
    TeX

XSL-FO
34
Bilan XSL
  • XML format pour la production de publications
    échangeables sur le web
  • production dune 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.
  • XSL peut être vu comme le langage de
    programmation de XML
  • Questions ?

XSL
35
4. XML le traitement par programme
XMLSchema(ou DTD)
DOM
Parser
SAX
Mal formé/Invalide
XSLFO
XSLT
Parser
36
L'interface DOM
  • Standard du W3C fait pour HTML et XML
  • Structure d'objets pour représenter un document
  • Résultat d'un "parser"
  • Arbre d'objets reliés entre eux
  • Interface objet pour naviguer dans un document
  • Orientée objet
  • Peut être utilisée en
  • Java, C
  • C, VB
  • Python, PHP

Parser
37
Principaux parseurs
Document XML
Parseur DOM
Arbre DOM
API DOM
Application
Parser
38
Exemple d'arbre DOM
Racine du document
Document
NodeList
ltGuidegt
Element
NodeList
ltRestaurantgt
ltBargt
  • ltGuidegt
  • ltRestaurant id"R1"gtLe meilleur
    restaurantlt/Restaurantgt
  • ltBar/gt
  • lt/Guidegt

Element
Element
NamedNodeMap
Attr
Id"R1"
NodeList
Text
Le meilleur restaurant
Parser
39
Quelques interfaces de base
  • Document
  • createElement (Nom_Element)
  • créer un élément avec le nom spécifié en
    paramètre.
  • createComment (commentaire)
  • créer une ligne de commentaires dans le
    document.
  • createAttribute (Nom_Attribut)
  • créer un attribut avec le nom pris en paramètre.
  • getElementsByTagName (nom_Tag)
  • retourne tous les descendants des éléments
    correspondants au Nom_Tag.
  • Nud
  • insertBefore (Nouveau_Noeud, Noeud_Reference)
  • insère un nouveau nud fils avant le " nud
    référence" déjà existant.
  • replaceChild (Nouveau_Noeud, Ancien_Noeud)
  • remplace le nud "Ancien_Noeud" par le nud
    "Nouveau_Noeud".
  • removeChild (Nud)
  • supprime le nud entré en paramètre de la liste
    des nuds.
  • appendChild (Nouveau_Noeud)
  • Ajoute un nouveau nud a la fin de la liste des
    nuds.
  • hasChildNodes()
  • Retourne vrai si le nud possède un enfant

Parser
40
Autres interfaces
  • Interfaces fondamentales
  • DOMImplementation
  • Document
  • Comment
  • DocumentFragment
  • Element
  • Attr(ibute)
  • NamedNodeMap
  • CharacterData
  • Comment
  • Text
  • Interfaces étendues XML
  • ProcessingInstruction
  • DocumentType
  • CDATASection
  • Notation
  • Entity
  • EntityReference

Parser
41
Exemple d'utilisation
  • Public class ExempleDOM
  • public static main (String argc) throws
    IOException, DOMExcetion
  • XMLDocument xmlDoc new XmlDocument()
  • // creation des nuds
  • ElementNode nom (ElementNode)
    xmlDoc.createElement("nom")
  • ElementNode prenom (ElementNode)
    xmlDoc.createElement("prenom")
  • ElementNode nomfam (ElementNode)
    xmlDoc.createElement("nomfam")
  • // creation de l'arbre
  • xmlDoc.appendChild(nom)
  • nom.appenChild(prenom)
  • prenom.appendChild(xmlDoc.createTextNode("Jean")
  • nom.appenChild(nomfam)
  • nomfam.appendChild(xmlDoc.createTextNode("Dupont")
  • // positionnement d'un attribut
  • nom.setAttribute("ville", "Paris")
  • // sortie
  • System.exit(0)

Document ltnom ville "Paris"gt ltprenomgt Jean
lt/prenomgt ltnomfagt Dupont lt/nomfagt lt/nomgt
Parser
42
Bilan DOM
  • Une interface objet standard
  • Navigation dans l'arbre XML
  • Traitements spécifiques
  • Performance limitée
  • Place mémoire importante
  • Traitement à la fin de l'analyse
  • DOM 2.0
  • API indépendante de la structure mémoire
  • DOM Level 3
  • XPath
  • Support direct de XPath
  • Définition d'un XPath Evaluator
  • Events
  • Modèle d'événements
  • Associés à un nud
  • Propagés dans l'arbre
  • Style
  • Accès aux styles
  • Mapping complet
  • Load and Save
  • Stockage de larbre

Parser
43
L'interface SAX
  • SAX (Simple API for XML)
  • modèle simplifié d'événements
  • développé par un groupe indépendant.
  • Types d'événement
  • début et fin de document
  • début et fin d'éléments
  • attributs, texte, .
  • Nombreux parseurs publics
  • XP de James Clark, Aelfred, Saxon
  • MSXML3 de Microsoft
  • Xerces de Apache
  • JAXP de SUN

Parser
44
Principe de fonctionnement
Méthodes utilisateur
Evénement startDocument
Parser
Stream XML
Document XML
Evénement startElement
.
Evénement endDocument
Content Handler
Parser
45
Les méthodes essentielles
  • XMLReader
  • setContentHandler
  • setErrrorHandler
  • parse
  • ContentHandler
  • startDocument
  • endDocument
  • startElement
  • endElement
  • characters
  • ErrorHandler
  • fatalError
  • error
  • warning

Parser
46
Exemple SAX et DOM
startDocument () startElement (personne) startElem
ent (nom) characters (Cover) endElement
(nom) startElement (prenom) characters
(Harry) endElement (prenom) startElement
(adresse) startElement (rue) characters
(Stendhal) endElement (rue) startElement
(ville) characters (Paris) endElement
(ville) endElement (adresse) endElement
(personne) endDocument ()
ltpersonnegt ltnomgt Cover lt/nomgt ltprenomgt
Harry lt/prenomgt ltadressegt ltruegt
Stendhal lt/ruegt ltvillegt Paris
lt/villegt lt/adressegt lt/personnegt
Parser
47
DOM versus SAX
  • DOM utilise SAX pour la construction de larbre
    dun document XML
  • SAX est plus léger que DOM
  • Au-dessus de DOM, il est possible d  implémenter
    un  method caller  ...

Parser
48
Integration API JAXP
  • Java API for XML Parsing
  • JAXP est une d'API standard J2EE permettant
    d'effectuer des traitements XML qui englobe
  • SAX (SAX 2.0)
  • DOM (DOM Level 2)
  • la manipulation de transformations XSLT
  • Objectif
  • Fournir une couche dabstraction permettant
    dutiliser nimporte quel analyseur SAX/DOM ou
    processeur XSL
  • JAXP 1.3 est inclus dans le JDK de Sun
  • Java WSDP 2.0, Java SE 5.0, disponible sur
    Java.Net

Parser
49
Le mapping objet (Data Binding- JAXB)
  • Définition
  • Mapping entre un document XML et un graphe
    dobjets métier C ou Java

Interface générée à laide doutils de Data
Binding
Développements manuels
Objets C
Objets Java
Objets Java
Parsing Xerces C
Parsing XDK Java
Binding Java
XML
XML
XML
Mapping
50
Principes
  • Compilation du schéma en classes Java
  • Traduction des documents en objets
  • Possibilité de publier les objets en XML

compile
Schema
Classes
instance of
conforms
unmarshal
Objects
Documents
marshal
Mapping
51
Avantages
  • Lactivité de développement "parsing" est réduite
  • Gain en coût de développement des interfaces
  • Les applications peuvent se concentrer sur le
    fonctionnel
  • Les développeurs n'ont pas à se soucier du
    mapping XML
  • Les Systèmes Techniques sont simplifiés
  • Capitalisation sur linterface (utilisation,
    évolution, )
  • Gain en terme de fiabilité (fin de lutilisation
    de parseurs variés, parfois écrits à la main)
  • Les performances de linterface sont optimisées
  • Les outils de mapping sont intégrés aux serveurs
  • J2EE JAXB
  • .NET mapper

Mapping
52
5. Conclusion
  • Un ensemble doutils pour traiter du XML
  • Processeurs XSLT/XSLFO
  • Analyseurs validants
  • Intégrés aux serveurs dapplications
  • J2EE JAXP
  • .NET MSXML
  • En évolution permanente
  • Questions ?
Write a Comment
User Comments (0)
About PowerShow.com