La solution que vous envisagez fonctionne, mais je vous conseille de
quand même conserver la source de vos headers et footer dans un fichier
xhtml (plus facile à gérer avec des outils d'édition), personnellement
je n'utilise pas les tableaux (mais des div, plus faciles à utiliser
avec css), mais la méthode est également applicable à ceux-ci. Je me
base sur l'attribut xhtml class pour identifier le contenu à inclure :
je dispose donc d'un doc html contenant mon en-tête et mon pied de page
(head-foot.html), dans votre cas il s'agit d'elements tr:
<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<!-- snap snap -->
</head>
<body>
<table border="1">
<tbody>
<tr class="page_head">
<td>ceci est l'en-tête de mes pages</td>
<td></td>
</tr>
<tr class="page_head">
<td>il peut contenir plusieurs éléments</td>
<td></td>
</tr>
<tr class="page_foot">
<td>ceci est le pied de page</td>
<td>(c) moi !</td>
</tr>
</tbody>
</table>
</body>
</html>
et ma feuille de style contient le code suivant :
<xsl:template match="whatever">
<html>
<head><!--etc etc--></head>
<body>
<table>
<xsl:apply-templates
select="document(head-foot.html)//*[@class='page_head']"
mode="include_hf'/>
<tr><!--plein de choses --></tr>
<xsl:apply-templates
select="document(head-foot.html)//*[@class='page_foot']"
mode="include_hf'/>
</table>
</body>
</html>
</xsl:template>
<xsl:template match="node()|@*" mode="include_hf">
<xsl:copy select=".">
<xsl:apply-templates select="node()|@*" mode="include_hf"/>
</xsl:copy>
</xsl:template>
Il faut toutefois prendre garde à ce que les éléments identifiés par
l'attribut class soient bien valides à l'emplacement ou ils sont insérés
dans le xsl. Mais je peux facilement éditer mon fichier head-foot.html
avec amaya (ou un autre outil xhtml).
Cordialement,
Stéphane.
Le mardi 11 janvier 2005 à 09:49 +0100, Eric van der Vlist a écrit :
> Bonjour,
>
> Le mardi 11 janvier 2005 à 09:41 +0100, Fabrice Estiévenart a écrit :
> > merci pour votre réponse, je ne connaissais pas l'existence de cette
> > fonction "document"
> >
> > comme vous le signalez, l'inconvénient de cette solution est que le
> > document à inclure doit être de l'XML bien-formé (d'où -> racine unique)
> >
> > dans mon cas, j'aimerais inclure 2 lignes de tableau
> > (<tr>...</tr><tr>...</tr>); puis-je utiliser un tag <span> ou <div> pour
> > former la racine unique du document à inclure ?
> > (<span><tr>...</tr><tr>...</tr></span> -> ok XML bien-formé)
> >
> > est-ce (notamment) pour cette utilisation que ces tags ont été définis dans
> > la norme ?
>
> Vous pouvez, dans le document que vous allez "inclure", prévoir
> n'importe quel élément racine :
>
> <nImporteQuelElementRacine><tr>...</tr><tr>...</tr></nImporteQuelElementRacine>
>
> et, comme Stéphane Bonhomme le suggérait, le filtrer lors de la recopie,
> par exemple (sans espace de noms) :
>
> <xsl:copy-of select="document('doc.xml')/nImporteQuelElementRacine/*"/>
>
> Là où cela deviendrait plus délicat, ce serait si vous vouliez vraiment
> que la balise de début de la table figure dans ce document (sans la
> balise de fin)...
>
> > désolé pour cette question un peu "out of scope"
>
> Elle ne l'est pas!
>
> Cordialement,
>
> Eric van der Vlist
>
>
--
Stéphane Bonhomme -- Exselt Services
Formations, Conseil et Réalisations en Ingénierie Documentaire,
Technologies Web et Logiciels Libres
s.bonhomme@wanadoo.fr - http://www.exselt.com
04 76 17 09 40 / 06 88 57 27 08
--
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)
Received on Tue Jan 11 10:48:39 2005