De XML à Word (WordML) via XSLT

Bonjour,

Aujourd’hui, petit post sur l’utilisation de XSLT pour créer un document Word à l’aide d’un fichier XML

Procédure:

1. Créez ou ouvrez sous word le fichier type, celui que vous voudriez générer. Puis sauvegardez le au format .xml (2003)

2. Ouvrez le avec un éditeur de text (comme notepad++ par exemple)

Constatez qu’il est assez long (et brouillon!)

Il consiste en ces 3 lignes :

<?xml version=1.0″ encoding=”UTF-8″ standalone=”yes”?>
 
<?mso-application progid=”Word.Document?>

Suivi d’une balise:

<w:wordDocument xmlns:aml=”ht….> (ici se trouve toutes les données du document) </w:wordDocument>

3. Modifiez la structure pour avoir au final:

<?xml version=1.0″ encoding=”Windows-1252?>
 
<xsl:stylesheet version=2.0″
 
xmlns:xsl=”http://www.w3.org/1999/XSL/Transform”
 
xmlns:msxsl=”urn:schemas-microsoft-com:xslt”
 
extension-element-prefixes=”msxsl”
 
xmlns:aml=”http://schemas.microsoft.com/aml/2001/core”
 
xmlns:dt=”uuid:C2F41010-65B3-11d1-A29F-00AA00C14882″
 
xmlns:ve=”http://schemas.openxmlformats.org/markup-compatibility/2006″
 
xmlns:o=”urn:schemas-microsoft-com:office:office”
 
xmlns:v=”urn:schemas-microsoft-com:vml”
 
xmlns:w10=”urn:schemas-microsoft-com:office:word”
 
xmlns:w=”http://schemas.microsoft.com/office/word/2003/wordml”
 
xmlns:wx=”http://schemas.microsoft.com/office/word/2003/auxHint”
 
xmlns:wsp=”http://schemas.microsoft.com/office/word/2003/wordml/sp2″
 
xmlns:sl=”http://schemas.microsoft.com/schemaLibrary/2003/core”
 
w:macrosPresent=”no” w:embeddedObjPresent=”no” w:ocxPresent=”no” xml:space=”preserve”>
 
<xsl:output method=”xml” indent=”no” version=1.0″
 
encoding=”Windows-1252″ standalone=”yes”/>
 
<w:ignoreSubtree w:val=”http://schemas.microsoft.com/office/word/2003/wordml/sp2″/>
 
<xsl:template match=/>
 
<xsl:processing-instruction name=”mso-application”>
 
<xsl:text>progid=”Word.Document</xsl:text>
 
</xsl:processing-instruction>
 
<w:wordDocument>
 
<o:DocumentProperties>
 
<!– gardez tout ce qui se trouve à l’interieur de Document Properties, de meme pour les blocs suivants:>
 
</o:DocumentProperties>
 
<w:fonts>
 
</w:fonts>
 
<w:styles>
 
</w:styles>
 
<w:divs>
 
</w:divs>
 
<w:shapeDefaults>
 
</w:shapeDefaults>
 
<w:docPr>
 
</w:docPr>
 
<w:body> <!– ici se trouve le “vrai contenu”
 
</w:body>
 
</w:wordDocument>
 
</xsl:template>
 
</xsl:stylesheet>

Renommez en .xslt

Voila, vous avez désormais une feuille xslt qui doit vous donner l’exacte réplique de votre page word. Elle n’a rien de dynamique pour le moment mais vous avez la base! Le reste n’est qu’utilisation normale du « langage » xsl!

Pour ajouter un saut de page, la commande est :

<w:br w:type=”page”/>

Bonne chance