Beruflich Dokumente
Kultur Dokumente
Utilisation
• Transformation de documents
• Interopérabilité Java Server Pages
• Génération de documents, de code
• Réalisations d’éditeurs
• Environnements auteur
1
2/10/2009
xmlns:fn="http://java.sun.com/jsp/jstl/functions"
xmlns:jsp="http://java.sun.com/JSP/Page">
<head><title>Hello</title></head>
<body bgcolor="white">
<img src="duke.waving.gif" />
Template
<h2>My name is Duke. What is yours?</h2>
<form method="get">
<input type="text" name="username" size="25" />
Java Emitter Templates
<p></p>
<input type="submit" value="Submit" />
<input type="reset" value="Reset" />
</form>
(Eclipse)
<jsp:useBean id="userNameBean" class="hello.UserNameBean" scope="request"/>
<jsp:setProperty name="userNameBean" property="name“
value="${param.username}"/>
<c:if test="${fn:length(userNameBean.name) > 0}" >
<jsp:directive.include="response.jsp" />
</c:if>
</body>
</html>
JET StringTemplates
• Syntax à la JSP <!-- homepage.st-->
<html>
• Generation de SQL, XML, Java source <head>
<title>$title$</title>
• http://www.eclipse.org/articles/Article-
</body>
</html>
JET/jet_tutorial1.html
2
2/10/2009
StringTemplates
import org.antlr.stringtemplate.*;
import org.antlr.stringtemplate.language.*;
….
System.out.println(helloAgain.toString());
XML et
XSL: évolution
les transformations
XSL
XPath XSLT
XLink/
XPointer
3
2/10/2009
Xalan(apache)
XML Saxon(M.Kay) XML ou texte
XT(James Clark)
XSLT Processor
Principes
4
2/10/2009
Utilisation de XPATH
Dynamique
5
2/10/2009
Liste de templates
(pas d’ordre)
Exemple Exemple de règle
<?xml version=”1.0”?> <xsl:template match="FILM">
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <html>
<head>
<xsl:template match=”/”> <title>Film:
[action] <xsl:value-of select=“child::TITRE"/>
/ </title>
</xsl:template>
</head> Contexte FILM
<xsl:template match=”film”> <body>
[action] film Le genre du film, c’est
</xsl:template> <b><xsl:value-of select=“child::GENRE"/></b>
... </body>
</xsl:stylesheet> </html>
</xsl:template>
6
2/10/2009
Fragments
Fragments et
Récursioin
7
2/10/2009
8
2/10/2009
<xsl:template match="p:capital">
<xsl:copy>
<xsl:apply-templates select="/"/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
Elements de niveau 1
Type d’élément Description
xsl:import Import d’un programme XSLT
xsl:include Inclusion d’un programme XSLT
xsl:output Indique le format de sortie XSLT
xsl:param Définit un paramètre (processeur)
Langage push-pull
xsl:template Définit une règle XSLT
xsl:variable Définit une variable XSLT
xsl:preserve-space Espace blanc préservés
xsl:strip-space Espace blanc enlevés
9
2/10/2009
Aperçu
Templates et Navigation
<?xml version=”1.0”?>
<xsl:stylesheet>
[action]
mesure du possible ... <xsl:apply-templates select="titre"/>
string expression
(xpath)
<xsl:template match=”titre”>
nodeSet
expression (xpath)
source ....
[action]
...
</xsl:template>
...
</xsl:stylesheet>
Aperçu
3 éléments de base dont les attributs sont
des expressions xpath d’un type précis
10
2/10/2009
Transformations push
TransformationsPush Où?
<xsl:template match=”pattern”/>
A base de règles d’exécution (templates)
Structure de sortie dépendante de la structure Quoi?
location path:
d’entrée ce que l’on veut! axes child et attribute
location step: / ou //
Pour la transformation de documents <xsl:template match=”auteur//name/age”>
<html>
<head>
<title> transfo xslt </title>
</head>
......
</xsl:template>
Transformations pull
Où? Dans les règles
<xsl:template match=”...”/>
11
2/10/2009
xsl:template
<xsl:template match=”pattern” name=”qname”
priority=”number” mode=”qname”>
Règles (TEMPLATES) <!-- result fragments and instructions -->
<xsl:template>
<xsl:call-template name=”qname”/>
12
2/10/2009
Pattern Patterns
<xsl:template match=”pattern”> Location path limité aux axes suivants :
<!-- result fragments and instructions -->
<xsl:template>
• Les fils d’un élément : child
• Les attributs d’un élément : attribute
Pattern:
. union de location path • L’abréviation // de descendant-or-self::node()/
. location steps séparés par les opérateurs / ou // Pourquoi ? Parce qu’on peut savoir si une
. axe child et attribute seulement dans les location steps règle doit être déclenchée uniquement en
regardant les ancêtres du noeud contexte
Un pattern matche un noeud ssi:
. partant d’un certain noeud dans l’arbre
. le noeud donné est inclus dnas le node-set résultat
13
2/10/2009
xsl:apply-template
<xsl:apply-templates select=“node-set-expression”
mode=”qname”>
<!-- Content: (xslt:sort | xsl:with-param)* -->
</xsl:apply-templates>
Navigation Exemples
<xsl:template match="member">
<xsl:apply-templates select="name"/>
<xsl:apply-templates select="phone[@type='work']"/>
</xsl:template>
<xsl:template match="Member">
<xsl:apply-templates select="*"/>
</xsl:template>
14
2/10/2009
• Méchanisme de priorité des règles Erreur si il reste plusieurs règles de priorité égale
15