From: Karen Lease (klease@vftis.com)
Date: 24/11/2000 - 10:03
Je vois que vous avez déjà trouvé (avec xsl:include), mais sans savoir
exactement pourquoi.
Une idée... (moi non plus, je n'aime pas les solutions sans
explications)
xsl:import doit être le premier élément dans le xsl:stylesheet
appelant; alors qu'un xsl:include peut être n'importe où. Peut-être que
cela explique votre expérience?
Salutations,
Karen Lease
P.S. Technique intéressante; merci Eric!
/* =====================================
Karen Lease
SPX Valley Forge Technical Information Services
SPX France SA
147 avenue Paul Doumer
92500 Rueil-Malmaision France
Tel.: +33 (0)14751-1751
Fax: +33 (0)14751-8714
eMail: klease@vftis.com
visit us on the web at http://www.vftis.com
======================================*/
On Thursday, November 23, 2000 4:15 PM, Pierre Attar
[SMTP:patt@tireme.fr] wrote:
> Bonjour,
>
> J'ai assisté à une présentaton merveilleuse de Eric Van Der Vlist sur
> XSLT
> à XML Forum.
>
> En gros, et pour fair vite, son idée est qu'il faut essayer, dans une
>
> génération de fichiers HTML, de différencier les parties code de
> transformation de celles purement présentation contenant du code
HTML.
>
>
> Pour ce faire, il suffit de créer des "templates" html, contenant
tout
> le
> code html et des éléments perso. Par exemple :
>
> <html>
> <head>
> <title><mutu-title/></title>
> </head>
> <body>
> <mutu-body/>
> </body>
> </html>
>
> Ceci fait, dans le fichier XSLT, on charge le document HTML et on le
> parcourre.
> Quand on rencontre des balises perso, on agit dessus.
>
> Par exemple :
>
> <?xml version="1.0" encoding="UTF-8"?>
> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
> version="1.0" xmlns:lxslt="http://xml.apache.org/xslt"
> xmlns:redirect="org.apache.xalan.xslt.extensions.Redirect"
> extension-element-prefixes="redirect">
> <xsl:variable name="style" select="document
> ('template.html')/html"/>
> <xsl:variable name="globalTemplateTopNode"
> select="document('globalHtmlLayout.xml')/html"/>
> <xsl:output method="html" indent="yes" version="4.0"
> omit-xml-declaration="no" doctype-public="-//W3C//DTD HTML 4.0
> Frameset//EN" doctype-system="http://www.w3.org/TR/REC-
> html40/frameset.dtd"/>
> <xsl:template match="/">
> <xsl:apply-templates select=".//ARTICLE"/>
> </xsl:template>
> <xsl:template match="ARTICLE">
> <xsl:variable name="filename">
> <xsl:value-of select="'art-'"/>
> <xsl:value-of select="position(.)"/>
> <xsl:value-of select="'.html'"/>
> </xsl:variable>
> <redirect:open select="$filename"/>
> <redirect:write select="$filename">
> <xsl:message>Creating <xsl:value-of
> select="$filename"/>
> </xsl:message>
> <xsl:apply-templates select="$style">
> <xsl:with-param name="headNode"
> select="."/>
> </xsl:apply-templates>
> </redirect:write>
> <redirect:close select="$filename"/>
> </xsl:template>
> <xsl:template match="mutu-title">
> <xsl:param name="headNode"/>
> <xsl:text>coucou, article </xsl:text>
> <xsl:value-of select="$headNode/TITRE"/>
> </xsl:template>
> <xsl:template match="mutu-body">
> <xsl:param name="headNode"/>
> <xsl:text>coucou, du body de article </xsl:text>
> <xsl:apply-templates select="$headNode/BODY"/>
> </xsl:template>
> <xsl:template match="@*|*">
> <xsl:param name="headNode"/>
> <xsl:copy>
> <xsl:apply-templates select="@*|node()">
> <xsl:with-param name="headNode"
> select="$headNode"/>
> </xsl:apply-templates>
> </xsl:copy>
> </xsl:template>
> <xsl:template match="BODY">
> <ul>
> <xsl:apply-templates/>
> </ul>
> </xsl:template>
> <xsl:template match="P">
> <li>
> <xsl:apply-templates/>
> </li>
> </xsl:template>
> </xsl:stylesheet>
>
> Et ca marche fort bien, même lorsque l'on souhaite faire de la
> fragmentation ... ici en uitlisant Xalan.
>
> Fichier de test :
> <?xml version="1.0" encoding="UTF-8"?>
> <DOCS>
> <ARTICLE>
> <TITRE>Premier article</TITRE>
> <BODY>
> <P>Du texte</P>
> </BODY>
> </ARTICLE>
> <ARTICLE>
> <TITRE>Second article</TITRE>
> <BODY>
> <P>Du texte</P>
> <P>Encore du texte</P>
> </BODY>
> </ARTICLE>
> </DOCS>
>
>
>
> Maintenant passons enfin à mon problème :
>
> - Je prend dans le fichier XSLT les déclarations de P et BODY et les
> mets
> dans un autre fichier nommé include.xsl
> <?xml version="1.0" encoding="UTF-8"?>
> <xsl:stylesheet version="1.0"
> xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
> xmlns:fo="http://www.w3.org/1999/XSL/Format">
> <xsl:template match="BODY">
> <ul>
> <xsl:apply-templates/>
> </ul>
> </xsl:template>
> <xsl:template match="P">
> <li>
> <xsl:apply-templates/>
> </li>
> </xsl:template>
> </xsl:stylesheet>
>
> - dans le fichier xsl principal, je met un import :
> <xsl:import href="./include.xsl"/>
>
>
> Et là, plus rien ne marche, les templates BODY et P ne sont jamais
> utilisés
> et c'est toujours la transformation par défaut qui est prise en
> compte.
> Et alors ? ... je m'arrache les cheveux. Est-ce un problème de Xalan,
> ou y
> a-t-il une restricxtion dans xsl:import qui fait que je me trompe ?
>
> Toute réponse est la bienvenue ... et merçi encore à Eric pour cette
> méthode ... dès que cela marchera, ce sera fantastique...
>
>
>
>
>
>
>
> ------------
> Pierre Attar (mailto:pattar@tireme.fr)
>
> Projet "Mutualiser l'effort de montée en compétences sur XML"
> http://www.mutu-xml.org/index.html
>
>
> --
> Devenez redacteur <XML>fr et contribuez au developpement du
> xml francophone (http://xmlfr.org/infos/redacteurs/) !
>
> Liste de diffusion "xml-tech@xmlfr.org" (http://xmlfr.org).
>
> Cette liste est a votre disposition pour discuter en francais de
> tout sujet technique lie a XML.
>
> Pour resilier votre abonnement, envoyez un message contenant
> la commande "unsubscribe" a xml-tech-request@xmlfr.org
> (mailto:xml-tech-request@xmlfr.org?Subject
--
Devenez redacteur <XML>fr et contribuez au developpement du
xml francophone (http://xmlfr.org/infos/redacteurs/) !
Liste de diffusion "xml-tech@xmlfr.org" (http://xmlfr.org).
Cette liste est a votre disposition pour discuter en francais de
tout sujet technique lie a XML.
Pour resilier votre abonnement, envoyez un message contenant
la commande "unsubscribe" a xml-tech-request@xmlfr.org
(mailto:xml-tech-request@xmlfr.org?Subject=unsubscribe)
Archive générée par hypermail 2.1.3 le 28/06/2004 - 11:05 UTC
webmaster@xmlfr.org
|