Supposons que j’ai des fichiers du genre
<chapter id=""> <title></title> <abstract></abstract> <sect1 id=""></sect1> <sect1 id=""></sect1> ... </chapter>
et que je veuille le séparer en plusieurs petits fichiers indépendants avec :
- un fichier de chapitre contenant le titre et le résumé
- un fichier par sect1
Donc, un petit script XSLT qui fait ça très bien (enfin, suffisemment bien pour mes low expectations) :
<?xml version="1.0" encoding="iso-8859-1"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method="xml"/> <xsl:template match="abstract"> <xsl:copy-of select="@*|current()" /> </xsl:template> <xsl:template match="sect1"> <xsl:variable name="filename"> <xsl:value-of select="concat(@id, '.xml')" /> </xsl:variable> <xsl:document href="{$filename}"> <xsl:copy-of select="@*|current()" /> </xsl:document> </xsl:template>
<xsl:template match="/chapter/title"> <xsl:copy-of select="@*|current()"/> </xsl:template> <xsl:template match="/chapter"> <xsl:variable name="chapterfilename"> <xsl:value-of select="concat(@id, '.xml')" /> </xsl:variable> <xsl:document href="{$chapterfilename}"> <xsl:apply-templates /> </xsl:document> </xsl:template> </xsl:stylesheet>
Probablement très largement améliorable ; de plus il est nécessaire que les différentes sections aient chacune un attribut id pour pouvoir générer le nom de fichier. Ya probablement moyen de faire plus propre, mais, bon.
Alors là ! Merci, cela fait maintenant 2 jours que je cherche comment faire un <xsl:document> avec un href dynamique. Tu viens de me donner la réponse ! Merci encore ! Je t’aime !