Pour vérifier la sortie, nous avons utilisé le freeware
XSLDebugger.
Voici notre fichier XSL :
<?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="/developpeur/rss/channel">
<feed
version="0.3" xmlns="http://purl.org/atom/ns#">
<title><xsl:value-of
select="title" /></title>
<link
rel="alternate" type="text/html" href="{link}" />
<modified><xsl:value-of
select="lastBuildDate" /></modified>
<author>
<name><xsl:value-of
select="webMaster" /></name>
</author>
<xsl:for-each
select="item">
<entry>
<title><xsl:value-of
select="title" /></title>
<link
rel="alternate" type="text/html" href="{link}" />
<summary
type="text/plain"><xsl:value-of select="description" /></summary>
<modified><xsl:value-of
select="pubDate" /></modified>
</entry>
</xsl:for-each>
</feed>
</xsl:template>
</xsl:stylesheet>
|
Modifier la structure d'un document
XML suppose une solution unique : il est peu probable que vous puissez
adapter notre code à d'autres documents (hors RSS).
Comme vous pouvez le remarquer,
la restructuration se fait de manière très itérative
: notre feuille XSL tourne essentiellement autour de xsl:value-of
et d'une boucle xsl:for-each. Cela
est dû au fait que nous reconstruisons littéralement le fichier
XML, en ne gardant que le contenu des balises du fichier d'origine...
Notons tout d'abord l'utilisation de xsl:output
method="xml", qui comme son nom l'indique force le
type du fichier en sortie.
La suite de notre construction est ensuite relativement simple : on
insère autour de nos balises Atom les codes XSL qui permettent
de retrouver le contenu des balises RSS...
Précisons l'utilité de la construction XSL {nomDeLaBalise},
qui permet d'appeler directement le contenu d'une balise sans devoir
faire appel à une construction XSL plus lourde. Sans cela,
nous aurions dû, pour la balise <link>,
faire appel à un constructeur de balise, tel que :
<xsl:element name="link" use-attribute-sets="attriblink"
/>
...qui lui-même ferait appel à...
<xsl:attribute-set name="attriblink">
<xsl:attribute name="rel">alternate</xsl:attribute>
<xsl:attribute name="type">text/html</xsl:attribute>
<xsl:attribute name="href"><xsl:value-of select="link"
/></xsl:attribute>
</xsl:attribute-set>
Nous gagnons donc beaucoup à
faire un simple appel comme suit
<link rel="alternate" type="text/html"
href="{link}" />
Page 1 | 2
|