Lecture de fichier texte non XML
Introduction
Dans cette partie du cours, nous allons voir comment utiliser un fichier texte brut (non XML) avec le langage XSLT.
Rappel : Limitation du XSLT
Dans son principe de fonctionnement originel, XSLT est conçu pour prendre en entrée un fichier XML bien formé.
Fondamental : Lecture de fichier non XML
XSLT 2.0 introduit la possibilité de lire des fichiers texte qui ne sont pas nécessairement des fichiers XML bien formés.
La fonction :
permet en effet de lire une ressource externe et de renvoyer le résultat sous forme d'une chaîne de caractères.
L'argument $href correspond à l'URI de la ressource externe à lire.
Il est également possible de préciser un encodage spécifique via l'argument optionnel $encoding.
Exemple : Exemple de lecture d'un fichier texte non XML
Lecture du fichier txt.txt, en utilisant l'encoding iso-8859-1. La fonction unparsed-text(...) récupère le contenu du fichier et renvoie le résultat sous forme d'une chaîne de caractère à la commande xsl :value-of, qui affiche donc le contenu du fichier lu.
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
exclude-result-prefixes="xs"
version="2.0">
<xsl:output method="text"></xsl:output>
<xsl:template match="/">
<xsl:value-of select="unparsed-text('txt.txt', 'iso-8859-1')" disable-output-escaping="yes"/>
</xsl:template>
</xsl:stylesheet>
<?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xs="http://www.w3.org/2001/XMLSchema" exclude-result-prefixes="xs" version="2.0"> <xsl:output method="text"></xsl:output> <xsl:template match="/"> <xsl:value-of select="unparsed-text('txt.txt', 'iso-8859-1')" disable-output-escaping="yes"/> </xsl:template> </xsl:stylesheet>
Le paramètre disable-output-escaping, permet d'indiquer si les caractères spéciaux (comme '<' par exemple) sont échappés ou non.
Conseil : Comment lancer la transformation sans fichier XML source ?
Habituellement l'utilisation d'une transformation XSLT se fait via le document XML source (en utilisant la processing instruction « <?xml-stylesheet ... ?> »
).
<poeme titre="The Stone Troll" auteur="JRR Tolkien">
<strophe>
<vers>Troll sat alone on his seat of stone,</vers>
<vers>And munched and mumbled a bare old bone;</vers>
</strophe>
<strophe>
<vers>Up came Tom with his big boots on.</vers>
<vers>Said he to Troll: 'Pray, what is yon?</vers>
</strophe>
</poeme>
<?xml version="1.0" encoding="UTF-8"?> <?xml-stylesheet type="xsl" href="poeme.xsl"?> <poeme titre="The Stone Troll" auteur="JRR Tolkien"> <strophe> <vers>Troll sat alone on his seat of stone,</vers> <vers>And munched and mumbled a bare old bone;</vers> </strophe> <strophe> <vers>Up came Tom with his big boots on.</vers> <vers>Said he to Troll: 'Pray, what is yon?</vers> </strophe> </poeme>
Pour pallier ce principe, si on ne souhaite pas faire appel à un fichier XML source, il faut utiliser le fichier XSLT (qui est du XML) comme entrée.