Bonjour,
Rappel du contexte (pour ceux qui m'auraient pas croisé récemment). J'ai un document docbook que je souhaite exploiter grâce aux filtres XML d'OpenOffice.org writer. A l'ouverture de ce document dans l'éditeur de texte, une feuille de style XSLT parcourant mon fichier docbook est appelée et le document est correctement présenté.
Voici mon problème.
En plus de transformer mon fichier docbook en document OpenOffice, je souhaiterais que ma feuille de style écrive dans un fichier externe. En particulier, lorsqu'on passe dans un élément citation. J'ai lu dans la FAQ XSLT que c'était possible grâce à la librairie redirect d'Apache. Après avoir regardé comment ça fonctionnait exactement, j'ai rédigé les bouts de code suivants:
Dans ma feuille de style XSLT:
-> en-tête:
-> motif citation:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" ... xmlns:redirect="http://xml.apache.org/xalan/redirect">
Le document citations.xml:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25 <xsl:template match="citation"> <!-- Traitement qu'il faut pour produire le résultat --> <xsl:variable name="cheminCitations" select="'../references_externes/citations.xml'" /> <xsl:choose> <xsl:when test="document($cheminCitations)"> <redirect:write file="'{$cheminCitations}'" append="true"> <section /> </redirect:write> </xsl:when> <xsl:otherwise> <xsl:call-template name="AfficherMessage"> <xsl:with-param name="message"> Fichier pas trouvé! </xsl:with-param> <xsl:with-param name="spanSeulement"> true </xsl:with-param> </xsl:call-template> </xsl:otherwise> </xsl:choose> </xsl:template>
Mais voilà, alors que le document est bien trouvé puisqu'il n'y a pas de message d'erreur à s'afficher dans le document produit, la feuille de style n'écrit rien dans le document citations.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2<?xml version="1.0" encoding="UTF-8"?>
D'autre part,
- L'éditeur Eclipse, dans lequel je rédige mes documents ne déclenche pas d'erreur, mais n'a pas l'air de connaître la grammaire du tag <redirect:write> car lorsque j'entre un nom aberrant d'attribut, il n'y a aucune erreur de déclenchée (alors que le même attribut dans <xsl:variable> par exemple déclenche une erreur)
- Eclipse ne peut pas se connecter à internet à cause d'un proxy (pour aller chercher les DTD sur internet notament)
D'où les questions suivantes:
- Comment être sûr que l'instruction <redirect:write ...> est bien comprise par le processeur?
- Est-ce que le processeur utilisé par OpenOffice pour exécuter la transformation gère cette librairie?
Si vous voyez l'erreur, n'hésitez pas à m'aider... Merci.
Partager