Bonjour,
j'ai une feuille XSLT qui transforme un xml en svg, elle a très bien fonctionné jusqu'ici, je lui ai apporté une modification et maintenant elle ne fonctionne plus du tout sous IE avec le plugin ADobe. Pourtant sous Firefox, elle n'as jamais céssé de fonctionner. Le problème c'est que je ne sais pas d'ou vient l'erreur; la page sous ie reste blanche.
Je vous donne le fichier xml et la feuille de style pour info
Fichier XML
histogramme.xsl
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 <?xml version="1.0" encoding="iso-8859-1" standalone="yes" ?> <?xml-stylesheet type="text/xsl" href="histogramme.xsl" ?> <dataset> <donnee value="" count="23" /> <donnee value="F" count="11" /> <donnee value="M" count="10" /> </dataset>
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64 <?xml version="1.0" encoding="ISO-8859-1"?> <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN" "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd"> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:param name="Ox" select="0" /> <xsl:param name="largeur_barre" select="100" /> <xsl:param name="pas_y" select="5" /> <xsl:param name="intervalle" select="20" /> <xsl:param name="taille_police" select="40" /> <!--Ici on cherche à retrouver la racine du document xml, dans ce cas la racine est data--> <xsl:template match="dataset"> <!-- On définit la taille du document svg--> <!-- <svg height="480px" width="700px" viewBox="0 0 800 300" preserveAspectRatio="xMinYMid meet" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> --> <svg height="100%" width="100%" viewBox="0 0 800 300" preserveAspectRatio="meet" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <!--<rect height="480px" width="700px" stroke="blue" fill="none" />--> <g transform="scale(0.5 0.5)"> <!-- On définit une variable qui va representer la position en x des éléments--> <!-- Pour chaque mot rencontré--> <xsl:for-each select="donnee"> <xsl:sort select="@count" data-type ="number" order = "descending" /> <xsl:variable name="couleur"> <xsl:choose> <xsl:when test="position() mod 5 = 1">red</xsl:when> <xsl:when test="position() mod 5 = 2">yellow</xsl:when> <xsl:when test="position() mod 5 = 3">green</xsl:when> <xsl:when test="position() mod 5 = 4">purple</xsl:when> <xsl:otherwise>orange</xsl:otherwise> </xsl:choose> </xsl:variable> <xsl:variable name="posx" select="position()*($largeur_barre+$intervalle) + $Ox "/> <xsl:variable name="pos" select="position()+20"/> <xsl:variable name="decompte" select="@count"/> <xsl:variable name="nombreoccurence" select="@count*10"/> <!--La variable posy représente la position en y des éléments. Elle est donnée par la fonction position() qui renvoie la position de l'élément dans l'abre xml. Je la multiplie par 120 pour espacer chaque element--> <xsl:variable name="posy" select="position()"/> <!--On applique une transformation telle que le mot soit affiché en diagonale--> <g transform="translate({$posx + $largeur_barre div 2 },{$pos}) rotate(50)"> <!--Affichage du mot --> <text font-size="40" > <xsl:value-of select="@value"/></text> </g> <g transform="translate({$posx}, {$posy - $nombreoccurence})"> <rect width="{$largeur_barre}" height="{$nombreoccurence}" fill="{$couleur}" /> <text x="{($largeur_barre - $taille_police) div 2}" y="-20" font-size="{$taille_police}" > <xsl:value-of select="$decompte"/> </text> </g> </xsl:for-each> </g> </svg> </xsl:template> </xsl:stylesheet>
Partager