Un ptit bout de XSLT

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.

Un commentaire sur « Un ptit bout de XSLT »

  1. 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 !

Votre commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l’aide de votre compte WordPress.com. Déconnexion /  Changer )

Photo Facebook

Vous commentez à l’aide de votre compte Facebook. Déconnexion /  Changer )

Connexion à %s

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur la façon dont les données de vos commentaires sont traitées.