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 !

Laisser un 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 )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

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

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s