Tutoriel%20XSLT - PowerPoint PPT Presentation

About This Presentation
Title:

Tutoriel%20XSLT

Description:

title level='resource' Morphalou : Lexique morphologique /title ... langage pour adresser des parties de documents XML. parties de documents = ensemble de ... – PowerPoint PPT presentation

Number of Views:59
Avg rating:3.0/5.0
Slides: 24
Provided by: w3ErssUn
Category:

less

Transcript and Presenter's Notes

Title: Tutoriel%20XSLT


1
Tutoriel XSLT
F. Sajous ERSS 01/04/2005
2
Plan
  • Rappels
  • XML
  • XPath
  • XSLT
  • Principes
  • Templates et moteur
  • Structures de contrôle
  • XSLT Advanced

3
Rappel superflu XML
Exemple Morphalou
lt?xml version"1.0" encoding"iso-8859-1"?gt ltlexic
alDatabasegt lttitle level"resource"gtMorphalou
Lexique morphologiquelt/titlegt
ltlexicalEntry lemma"linguistique"
grammaticalCategory"commonNoun"
grammaticalGender"feminine"gt
ltinflectionGroupgt ltinflection
orthography"linguistique" grammaticalNumber"sing
ular"/gt ltinflection
orthography"linguistiques" grammaticalNumber"plu
ral"/gt lt/inflectionGroupgt
lt/lexicalEntrygt lt/lexicalDatabasegt
4
XPath rappel... superflu ?
  • langage pour adresser des parties de documents
    XML
  • parties de documents ensemble de noeuds de la
    structure arborescente
  • sélection par
  • type et la valeur des éléments
  • type et la valeur des attributs
  • place occupée dans l'arbre
  • typologie des voisins, parents, descendants...
  • fonctions XPath
  • exemples
  • //inflection_at_orthography'linguistique'/_at_grammat
    icalNumber
  • //inflection_at_orthography'linguistique'/../../_at_g
    rammaticalCategory
  • //lexicalEntrycount(.//inflection_at_orthography..
    /../_at_lemma) count(.//inflection)

5
XSLT acteurs
XSL
comment
quoi
XML source
à partir de quoi
Processeur XSLT
Processeur XSLT
XML résultat
sériali-sateur
6
Sélection Transformation
XML
7
Et concrètement les templates
XML
lt?xml version"1.0" encoding"iso-8859-1"?gt ltxsls
tylesheet xmlnsxsl'http//www.w3.org/1999/XSL/Tr
ansform'gt ltxsltemplate match"expression
xpath1"gt lt!-- construire sortie
correspondant à l'élément (aux
éléments filtré(s) --gt lt/xsltemplategt
ltxsltemplate match"expression xpath2"gt
lt!-- construire sortie
correspondant à l'élément (aux
éléments) filtré(s) --gt
lt/xsltemplategt lt/xslstylesheetgt
patrons
XML
8
Templates un exemple
XML source
ltanalysegt ltsentgt lttaggertoken
form"Il" pos"PRO"/gt lttaggertoken
form"était" pos"VERsg"/gt lttaggertoken
form"une" pos"DETfemisg"/gt
lttaggertoken form"fois" pos"NOMfemisg"/gt
... lt/sentgt ltsentgt ...
lt/sentgt lt/analysegt
9
Moteur !
? template correspondant ?
Non !
Oui !
analyse
sent
sent
...
taggertokenform"il" pos"PRO"
taggertokenform"était" pos"VERsg"
taggertokenform"une" pos"DETfemisg"
...
ltxsltemplate match"sent"gt
... lt/xsltemplategt ltxsltemplate
match"taggertoken"gt ... lt/xsltemplategt
ltxsltemplate match"sent"gt
ltsnumgtltxslvalue-of select"position()"/gtlt/snumgt lt
/xsltemplategt ltxsltemplate match"taggertoken"gt
... lt/xsltemplategt
ltsentgt ltsnumgt1lt/snumgt lt/sentgt
10
Pour éviter les infanticides...
XML source
ltanalysegt ltsentgt lttaggertoken
form"Il" pos"PRO"/gt lttaggertoken
form"était" pos"VERsg"/gt lttaggertoken
form"une" pos"DETfemisg"/gt
lttaggertoken form"fois" pos"NOMfemisg"/gt
... lt/sentgt ltsentgt ...
lt/sentgtlt/analysegt
ltanalysegt
lt/analysegt
ltxsltemplate match"sent"gt ltsentgtltsnumgt
ltxslvalue-of select"position()"/gtlt/snumgt
ltxslapply-templates/gtlt/sentgt lt/xsltemplategt ltxsl
template match"taggertoken"gt
lttokengtltxslvalue-of select"_at_form"/gtlt/tokengt lt/xs
ltemplategt
XSL
11
Patrons par défaut
réalisons un sommaire...
ltlivregt ltchapitregt lttitregtXMLlt/titregt
ltcontenugtXML un lang. de
balises extensibles...lt/contenugt lt/chapitregt
ltchapitregt lttitregtXSLTlt/titregt
ltcontenugtXSLT est un lang. de
tranforma...lt/contenugt ltchapitre/gt lt/livregt
ltxsltemplate match"titre"gt ltxslvalue-of
select"position()"/gt ltxslvalue-of
select"titre"/gt lt/xsltemplategt
Résultat
1 XMLXML un lang.de balises extensibles.. 2
XSLTXSLT estun lang. de tranforma...
Le processeur XSLT pacourt l'arbre - "en
profondeur d'abord" (racine vers feuilles) - puis
de gauche à droite
12
Défaut des patrons
  • 3 patrons par défaut
  • éléments textuels générer le texte en sortie
  • commentaires ignorer
  • autres noeuds appliquer les patrons (définis ou
    par défaut) aux enfants

ltlivregt ltchapitregt lttitregtXMLlt/titregt
ltcontenugtXML un lang. de
balises extensibles...lt/contenugt lt/chapitregt
ltchapitregt lttitregtXSLTlt/titregt
ltcontenugtXSLT est un lang. de
tranforma...lt/contenugt ltchapitre/gt lt/livregt
ltxsltemplate match"titre"gt ltxslvalue-of
select"position()"/gt ltxslvalue-of
select"."/gt lt/xsltemplategt
1 XML
XML un lang.de balises extensibles...
2 XSLTXSLT estun lang. de tranforma...
13
En attendant le grand soir...
ltlivregt ltchapitregt lttitregtXMLlt/titregt
ltcontenugtXML un lang. de
balises extensibles...lt/contenugt lt/chapitregt
ltchapitregt lttitregtXSLTlt/titregt
ltcontenugtXSLT est un lang. de
tranforma...lt/contenugt ltchapitre/gt lt/livregt
XML
ltxsltemplate match"titre"gt ltxslvalue-of
select"position()"/gt ltxslvalue-of
select"."/gt lt/xsltemplategt
14
Priorités du patronat...
ltlivregt ltchapitregt lttitregtXMLlt/titregt
ltcontenugtXML un lang. de
balises extensibles...lt/contenugt lt/chapitregt
ltchapitregt lttitregtXSLTlt/titregt
ltcontenugtXSLT est un lang. de
tranforma...lt/contenugt ltchapitre/gt lt/livregt
ltxsltemplate match"titre"gt ltxslvalue-of
select"position()"/gt ltxslvalue-of
select"."/gt lt/xsltemplategt ltxsltemplate
match"/text()"gtlt/xsltemplategt
règle du "plus spécifique"
MAIS !si on ajoute
ltxsltemplate match""gtlt/xsltemplategt
ltxsltemplate match"titre"gt Titre
ltxslvalue-of select"."/gt lt/xsltemplategtltxslte
mplate match"//position()1"gt Pos1
ltxslvalue-of select"."/gt lt/xsltemplategt
génère une sortie vide
?
et / "matchent"
règle du "plus englobant"
élément rencontré en 1er
c'est toujours les plus grospatrons qui gagnent !
15
Priorités du patronat...
ltlivregt ltchapitregt lttitregtXMLlt/titregt
ltcontenugtXML un lang. de
balises extensibles...lt/contenugt lt/chapitregt
ltchapitregt lttitregtXSLTlt/titregt
ltcontenugtXSLT est un lang. de
tranforma...lt/contenugt ltchapitre/gt lt/livregt
ltxsltemplate match"titre"gt ltxslvalue-of
select"position()"/gt ltxslvalue-of
select"."/gt lt/xsltemplategt ltxstemplate
match"/text()"gtlt/xsltemplategt
ltxsltemplate match"titre"
priority"2"gt Titre ltxslvalue-of
select"."/gt lt/xsltemplategtltxsltemplate
match"//position()1"
priority"1"gt Pos1 ltxslvalue-of
select"."/gt lt/xsltemplategt
ltxsltemplate match"titre"gt Titre
ltxslvalue-of select"."/gt lt/xsltemplategtltxslte
mplate match"//position()1"gt Pos1
ltxslvalue-of select"."/gt lt/xsltemplategt
?
16
Structures de contrôles
Itération
ltxslfor-each select"xpath1"gt ltxslsort
select"xpath2" order"ascending
descending"/gt lt!-- instruction
--gt lt/xslfor-eachgt
pas de else !
? xpath absolu ou relatifà l'élément courant
? une liste de noeuds sélecionnésà chaque
itération, un noeuddevient l'élément courant
? instruction sort facultativemais non
nécessairement unique
17
Action !
  • Lancer ltoXygen/gt 5.1
  • Fichiers XML et XSL dans C\ERSS-XSLT
  • Exercices/Session 1
  • Avant de partir, SVP
  • supprimer le répertoire C\ERSS-XSLT
  • désinstaller ltoXygen/gt
  • (panneau de configuration, Ajout/Suppression de
    programmes)

18
En vrac...
  • Quelques éléments pour aller plus loin

19
Variables
  • ltxslvariable name"nom_var" instr XSLT
    dont le résultat deviendra la valeur de la
    variablelt/xslvariablegt
  • Une fois une variable définie, elle est constante
    !!! (i i 1 impossible)
  • ltxslvalue-of select'nom_var'/gt
  • sortie HTML lta href'nom_var'gtlienlt/agt

20
Créer des éléments XML
  • ltxslelement name"nom élément"gt
    ltxslattribute name"nom_attr"gt
    instructions XSLT lt/xslattributegt
    instructions XSLT lt/xslelementgt

21
Copier des éléments XML
  • ltxslcopygt instructions XSLT lt/xslcopygt
  • Cette instruction ne copie que les balises
    ouvrantes et fermantes de l'élément courant(ne
    copie ni attributs, ni enfants)
  • ltxslcopygt instructions XSLT
    ltxslapply-templates/gtlt/xslcopygt

22
Copier des éléments XML (2)
  • ltxslcopy-of select"XPath"gt instructions
    XSLT lt/xslcopygt
  • copie toute la structure de l'élément sélectionné
    (y compris attributs et descendance)
  • utilisation conjointe avec xslcopy ltxslcopygt
    ltxslcopy-of select"_at_"/gt instructions
    XSLT ltxslapply-templates/gtlt/xslcopygt

23
Plusieurs documents XML
  • Pour accéder à un docuement autre que celui en
    cours de transformation document('cheminFichier'
    )/XPath

ltxslvalue-of select"document('autre')/monElt_at_
id'63'"gt
XSL
XML (autre) lt...gt ... ltmonElt id'63'gt
... lt/monEltgt ...
XML source
Résultat
Processeur XSLT
Write a Comment
User Comments (0)
About PowerShow.com