Beruflich Dokumente
Kultur Dokumente
as
Architecture des Systmes dInformation
as
Architecture des Systmes dInformation
Plan
Prsentation Modles (rgles) modles basiques appliquer des modles utilisation de modes nommage de modles Paramtres et variables
as
Architecture des Systmes dInformation
Prsentation
as
Architecture des Systmes dInformation
Application XML spciant des rgles de transformation dun document en un autre. Une feuille de style XSLT compare les lments dun document XML aux modles de la feuille de style. Pour chaque modle correspondant son contenu est plac en sortie du nouveau document
as
Architecture des Systmes dInformation
<xsl:output method="..." indent="yes|no" .../> Spcie le type de document en sortie (method = xml, html, ...), si la sortie doit tre indente ou non, ... <xsl:variable name="..."> ... </xsl:variable> <xsl:param name="..."> ... </xsl:param> Dnition de variables et de paramtres <xsl:template match="..."> ... </xsl:template> <xsl:template name="..."> ... </xsl:template> Dclaration de rgles (modles) de transformation
as
Modles (rgles)
as
Architecture des Systmes dInformation
Modles
Les modles (rgles) sont les lments principaux dune feuille XSLT Syntaxe de base
<xsl:template match="pattern xpath"> instructions XSLT et/ou donnes littrales </xsl:template>
Le processeur XSLT lit (parcours en profondeur) un document source XML et applique une rgle chaque fois que son motif (pattern) correspond un noeud XML.
as
Architecture des Systmes dInformation
as
<?xml version="1.0" encoding="ISO-8859-1" standalone="yes" ?> <xsl:stylesheet version="1.1" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output encoding="ISO-8859-1"/> </xsl:stylesheet>
Rsultat:
<?xml version="1.0" encoding="ISO-8859-1"?> Alan Turing informaticien mathmaticien cryptographe Linus Torvalds informaticien construire un OS
as
Architecture des Systmes dInformation
Commentaires demo1.xsl
Si aucun modle ne correspond aux noeuds du source alors le parcours rcursif descend jusquaux terminaux
Si un lment contient du texte (#PCDATA) alors celui ci est recopi par dfaut dans le noeud courant de larbre produit
as
Architecture des Systmes dInformation
Rsultat:
<?xml version="1.0" encoding="ISO-8859-1"?> <p>Quelquun</p><p>Quelquun</p>
as
Architecture des Systmes dInformation
Commentaires demo2.xsl
<xsl:strip-space elements="*"/> Lorsquun noeud textuel ne contient que des caractres despacement alors ceux-ci sont ignors <xsl:template match="personne"> Pour chaque lment personne rencontr, le contenu a t ignor et remplac par <p>Quelquun</p>
La feuille de style devant tre bien forme, cela implique que le balisage produit doit lui aussi tre bien form.
as
Architecture des Systmes dInformation
En rgle gnral le texte de sortie est li au texte dentre, il faut donc pouvoir rcuprer des valeurs.
Syntaxe
as
Architecture des Systmes dInformation
Rsultat:
<?xml version="1.0" encoding="ISO-8859-1"?> <p> Alan Turing </p> <p> Linus Torvalds </p>
as
Architecture des Systmes dInformation
Seuls les modles correspondant au pattern seront activs, si lattribut select est omis alors seuls les modles correspondants aux ls du noeud contextuel sont traits. Cette instruction permet de choisir lendroit o seront placs les rsultats de lactivation de modles (demo5.xsl).
as
Architecture des Systmes dInformation
Rsultat:
<?xml version="1.0" encoding="ISO-8859-1"?> Alan, Turing Linus, Torvalds
as
Architecture des Systmes dInformation
1/2
<?xml version="1.0" encoding="ISO-8859-1" standalone="yes" ?> <xsl:stylesheet version="1.1" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output encoding="ISO-8859-1"/> <xsl:strip-space elements="*"/> <xsl:template match="personnes"> <html> <head><title>Liste de personnes</title> </head> <body> <xsl:apply-templates/> </body> </html> </xsl:template> <xsl:template match="personne"> <p><xsl:value-of select=".//prenom"/>, <xsl:value-of select=".//nom"/></p> </xsl:template> </xsl:stylesheet>
as
Architecture des Systmes dInformation
2/2
<html> <head> <META http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Liste de personnes</title> </head> <body> <p>Alan, Turing</p> <p>Linus, Torvalds</p> </body> </html>
Remarque : la dclaration de texte <?xml ... ?> a disparu, le processeur XSLT a de lui mme dtect quil sagissait dun document HTML par llment racine
as
Architecture des Systmes dInformation
Modles implicites
Il existe 7 types de noeudsa dans un document XML. XSLT prdnit un modle par dfaut pour chaque type de noeuds.
<xsl:template match="text()|@*"> <xsl:value-of select="."/> </xsl:template>
Pour tout noeud de texte ou dattribut copie sa valeur dans le document de sortie
<xsl:template match="*|/"> <xsl:apply-templates/> </xsl:template>
Pour tout noeud dlment et le noeud racine applique les rgles leurs noeuds ls. Les noeuds dattribut et despace de noms ne sont pas considrs comme des ls (dshrits).
<xsl:template match="processing-instruction()|comment()"/>
as
Modes et modles
Un mme contenu en entre doit apparatre plusieurs fois en sortie mais avec un formatage diffrent
Lattribut mode
<xsl:template match="pattern xpath" mode="nomDuMode"> instructions XSLT et/ou donnes littrales </xsl:template>
et
as
Architecture des Systmes dInformation
1/2
<li><xsl:value-of select=".//prenom"/>, <xsl:value-of select=".//nom"/></li> </xsl:template> <xsl:template match="personne"> <p><xsl:value-of select=".//prenom"/><xsl:text> </xsl:text><xsl:value-of select=".//nom"/> n(e) en <xsl:value-of select="@naissance"/></p>
</xsl:template> </xsl:stylesheet>
as
2/2
<html> <head> <META http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Liste de personnes</title> </head> <body> <h1>Index</h1> <ul> <li>Alan, Turing</li> <li>Linus, Torvalds</li> </ul> <h1>Détail</h1> <p>Alan Turing né(e) en 1912</p> <p>Linus Torvalds né(e) en 1969</p> </body> </html>
as
Architecture des Systmes dInformation
<xsl:template name="nomDeLaRegle" ...> instructions XSLT et/ou donnes littrales </xsl:template> et <xsl:call-template name="nomDeLaRegle"/>
as
Architecture des Systmes dInformation
Rsultat :
<identite naissance="1912" prenom="Alan" nom="Turing"/> <identite naissance="1969" prenom="Linus" nom="Torvalds"/>
as
Architecture des Systmes dInformation
Dclaration de paramtres
<xsl:param name="nom paramtre" select="pattern xpath"/>
ou
<xsl:param name="nom paramtre"> instructions XSLT et/ou donnes littrales </xsl:param>
La valeur spcie est considre comme valeur par dfaut du paramtre La dclaration peut se placer deux endroits : dans une rgle xsl:template an de la paramtrer au premier niveau (dans xsl:stylesheet), cest alors au processeur XSLT de dterminer la valeur par la ligne de commande option -PARAM par le protocole HTTP (GET, POST) quand le processeur est intgr au serveur (Cocoon)
as
Architecture des Systmes dInformation
Utilisation de paramtres
ou
<xsl:with-param name="nom paramtre"> instructions XSLT et/ou donnes littrales </xsl:with-param>
est alors impossible deffectuer une slection sur ce fragment (pour rsoudre ce problme, voir XSLT 2.0 ou fonction dextension nodeset(...)) (idem la dclaration)
le type du paramtre est un result tree fragment = chane de caractre rsultant de la srialisation du fragment calcul, i
as
Architecture des Systmes dInformation
as
Architecture des Systmes dInformation
</personnes>
1/2
as
</xsl:template>
2/2
Rsultat :
<?xml version="1.0" encoding="ISO-8859-1"?> Alan Turing <p>A. informaticien</p> <p>B. mathmaticien</p> <p>C. cryptographe</p> Linus Torvalds <p>1. informaticien</p> <p>2. construire un OS</p>
as
Architecture des Systmes dInformation
ou
<xsl:variable name="nom variable"> instructions XSLT et/ou donnes littrales </xsl:variable>
Les types des variables sont les mmes que pour les paramtres
au premier niveau (dans xsl:stylesheet) : variable globale visible dans toute la feuille XSLT dans une rgle : variable locale visible dans tous les frres droits de la dclaration Les variables sont utilisables nimporte o dans le document, via $nomvariable
as
Architecture des Systmes dInformation
la numrotation et le tri des lments le traitement conditionnel litration la cration dynamique dlments et dattributs de copier des noeuds
as
Architecture des Systmes dInformation
Dans cocoon Cocoon fonctionne par un systme de pipelines se dclenchants sur des patterns de requtes Exemple de conguration : pour toute requte un chier *.html, il associe un chier {1}.xml et une feuille de style {1}2html.xsl
as
Architecture des Systmes dInformation