Bonjour à tous.
J'ai une question relative à la librairie redirect de XSL qui permet à une feuille de style d'écrire dans un fichier externe en parallèle du traitement de la sortie. J'arrive bien à écrire dans un fichier externe, mais le problème c'est que la sortie produite n'est pas très lisible (en particulier, ce n'est pas un document xml valide puisqu'elle n'a pas d'élément racine). Voici le but de l'utilisation de redirect: je souhaite relever tous les documents référencés à l'intérieur de l'élément <citation> dans mon fichier xml en entrée de ma feuille de style.
Voici le bout de ma feuille de style qui fait allusion à redirect:
Code :
- <xsl:template match="citation"><!-- plusieurs citations par documents -->
- ...
- <redirect:write select="$cheminCitations"
- append="true">
- <section role="{$composant}">
- <para role="{$refEval}" id="{$version}" />
- </section>
- </redirect:write>
- ...
- </xsl:template>
|
Voici un bout du fichier produit:
Code :
- <?xml version="1.0" encoding="UTF-8"?>
- <section xmlns:f2lt="urn:f2lt"
- xmlns:ooo="http://openoffice.org/2004/office"
- xmlns:config="urn:oasis:names:tc:opendocument:xmlns:config:1.0"
- xmlns:svg="urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0"
- xmlns:script="urn:oasis:names:tc:opendocument:xmlns:script:1.0"
- xmlns:form="urn:oasis:names:tc:opendocument:xmlns:form:1.0"
- xmlns:number="urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0"
- xmlns:xlink="http://www.w3.org/1999/xlink"
- xmlns:draw="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0"
- xmlns:table="urn:oasis:names:tc:opendocument:xmlns:table:1.0"
- xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0"
- xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0"
- xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0"
- xmlns:fo="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0"
- role="ASE_REQ.1">
- <para id="3.0" role="ST" />
- </section>
- <?xml version="1.0" encoding="UTF-8"?>
- <section xmlns:f2lt="urn:f2lt"
- xmlns:ooo="http://openoffice.org/2004/office"
- xmlns:config="urn:oasis:names:tc:opendocument:xmlns:config:1.0"
- xmlns:svg="urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0"
- xmlns:script="urn:oasis:names:tc:opendocument:xmlns:script:1.0"
- xmlns:form="urn:oasis:names:tc:opendocument:xmlns:form:1.0"
- xmlns:number="urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0"
- xmlns:xlink="http://www.w3.org/1999/xlink"
- xmlns:draw="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0"
- xmlns:table="urn:oasis:names:tc:opendocument:xmlns:table:1.0"
- xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0"
- xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0"
- xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0"
- xmlns:fo="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0"
- role="ASE_REQ.1">
- <para id="6.0" role="ST" />
- </section>
- <?xml version="1.0" encoding="UTF-8"?>
- <section xmlns:f2lt="urn:f2lt"
- xmlns:ooo="http://openoffice.org/2004/office"
- xmlns:config="urn:oasis:names:tc:opendocument:xmlns:config:1.0"
- xmlns:svg="urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0"
- xmlns:script="urn:oasis:names:tc:opendocument:xmlns:script:1.0"
- xmlns:form="urn:oasis:names:tc:opendocument:xmlns:form:1.0"
- xmlns:number="urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0"
- xmlns:xlink="http://www.w3.org/1999/xlink"
- xmlns:draw="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0"
- xmlns:table="urn:oasis:names:tc:opendocument:xmlns:table:1.0"
- xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0"
- xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0"
- xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0"
- xmlns:fo="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0"
- role="ASE_REQ.2">
- <para id="3.0" role="ST" />
- </section>
|
Or, je souhaiterais organiser l'information, de sorte à regrouper les para qui sont dans des sections qui ont le même rôle, de la façon suivante:
Code :
- <?xml version="1.0" encoding="UTF-8"?>
- <article>
- <section role="ASE_REQ.1">
- <para id="3.0" role="ST" />
- <para id="6.0" role="ST" />
- </section>
- <section role="ASE_REQ.2">
- <para id="3.0" role="ST" />
- </section>
- </article>
|
Les deux points impératifs sont:
- Afficher une seule en-tête <?xml...>
- Avoir un élément racine <article> qui permette de parcourir ensuite ce document
J'espère que je suis assez clair... Merci d'avance pour votre aide.
Message édité par samalairbien le 17-07-2008 à 11:46:08