Publication et Traitement avec XSL - PowerPoint PPT Presentation

1 / 49
About This Presentation
Title:

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:111
Avg rating:3.0/5.0
Slides: 50
Provided by: gard73
Category:

less

Transcript and Presenter's Notes

Title: Publication et Traitement avec XSL


1
Publication et Traitement avec XSL
  • 1. XPATH
  • 2. XSLT
  • 3. XSLFO
  • 4. Traitement de documents
  • 5. 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 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

racine
ltlivre auteur "Hugo"gt lttitregtLes
chatimentslt/titregt ltchapitregt
ltsectiongtBuonaparte lt/sectiongt
ltsectiongtNeigelt/sectiongt lt/chapitregt
lt/livregt
livre
_at_auteur
chapitre
chapitre
titre
"Hugo"
section
section
Les chatiments
Neige
Bonaparte
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
XPath - Exemples
  • Sections d'un chapitre
  • /childlivre/childchapitre/childsection
  • /livre/chapitre/section
  • Texte du chapitre 1 section 2
  • /descendantchapitreposition()
    1/childsectionposition() 2/childtext()
  • //chapitre1/section2/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 nuds sélectionnés
  • Un document est produit en sortie

XSLT
10
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
11
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
12
Les feuilles de style
  • Une feuille de style XSL
  • est un document XML de racine ltxslstylesheetgt
  • contient une liste de règles de transformation
    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
13
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
14
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
15
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)
  • 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
  • ltxsl template match"/"gt
  • ltxsl template match"auteur" name"R1"
    priority"1"gt

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

XSLT
17
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 processing instruction
  • ltxslelementgt, générer un élément 
  • ltxslattributegt, générer un attribut 
  • ltxslifgt, définir un traitement conditionnel 

XSLT
18
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
19
Quelques éditeurs
XSLT
20
IBM XSL Editor
Rendu
XML
XSLT
XSLT
21
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
22
3. XSL-FO le formatage
  • 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

XSL-FO
23
Principes
  • Peut s'appliquer aux résultats des feuilles XSLT

XSL-FO
24
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
25
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
26
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
27
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
28
XSL-FO et XSLT Exemple
  • Définition de propriétés pour la racine
  • ltxsltemplate match/gt ltfo-display-sequence
    font-styleitalic start-indent4pt
    end-indent4pt font-size18pt
    ltxslapply-templates/gt lt/fo-display-sequen
    cegt lt/xsltemplate
  • La définition dune propriété locale est
    prioritaire devant lhéritage

XSL-FO
29
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
30
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
31
4. XML le traitement par programme
XMLSchema(ou DTD)
DOM
Parser
SAX
Mal formé/Invalide
XSLFO
XSLT
Mapping
32
L'interface DOM
  • Standard 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

DOM
33
Principaux parseurs
Document XML
Parseur DOM
Arbre DOM
API DOM
Application
DOM
34
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
DOM
35
L'arbre DOM
  • Navigation via un arbre générique de nuds
  • Node
  • NodeList (Parent/Child)
  • NamedNodeMap
  • Tout nud hérite de Node

Node
Document
ProcessingInstruction
DocumentType
Element
....
lt?xmlstylesheet ...gt
lt!DOCTYPE ...gt
ltRestaurant ....gt
Child
Text Le meilleur restaurant
DOM
36
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

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

DOM
38
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
DOM
39
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

DOM
40
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

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

SAX
43
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
SAX
44
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  ...

SAX
45
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

46
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
47
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
48
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
49
5. Conclusion
  • Un ensemble doutils pour traiter du XML
  • Analyseurs validants
  • Processeurs XSLT/XSLFO
  • Intégrés aux serveurs dapplications
  • J2EE JAXP
  • .NET MSXML
  • En évolution permanente
  • Questions ?
Write a Comment
User Comments (0)
About PowerShow.com