Bonjour à tous,
Je tente de développer un filtre en XSLT pour pouvoir exporter des données contenues dans une feuille tableur OpenOffice.
Filtre :
Concrètement, je possède un élément par ligne, dans lequel je stocke sa valeur et auquel j'assigne 5 attributs.
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 <xsl:template match="/"> <data><!--Process all tables --> <xsl:apply-templates select="//table:table"/> </data> </xsl:template> <xsl:template match="table:table"> <xsl:for-each select="table:table-row"> <xsl:if test="position()>1"> <xsl:element name="value"> <xsl:for-each select="table:table-cell"> <xsl:choose> <xsl:when test="position()=1"> <xsl:attribute name="year"> <xsl:value-of select="text:p"/> </xsl:attribute> </xsl:when> <xsl:when test="position()=2"> <xsl:attribute name="month"> <xsl:value-of select="text:p"/> </xsl:attribute> </xsl:when> <xsl:when test="position()=3"> <xsl:attribute name="day"> <xsl:value-of select="text:p"/> </xsl:attribute> </xsl:when> <xsl:when test="position()=4"> <xsl:attribute name="week_day"> <xsl:value-of select="text:p"/> </xsl:attribute> </xsl:when> <xsl:when test="position()=5"> <xsl:attribute name="hour"> <xsl:value-of select="text:p"/> </xsl:attribute> </xsl:when> <xsl:when test="position()=6"> <xsl:value-of select="text:p"/> </xsl:when> </xsl:choose> </xsl:for-each> </xsl:element> </xsl:if> </xsl:for-each> </xsl:template>
Jusque là le filtre semblait être efficace mais j'ai rencontré des problèmes lorsque des cellules d'une même ligne ont des contenus identiques.
Par exemple si toutes les cellules de la ligne 2 contiennent "0", mon filtre n'attribut une valeur qu'à un seul élément (en l’occurrence "year"). Ensuite, il passe à la ligne suivante. Je n'arrive pas à comprendre ce qui m'échappe.
Et ce que quelqu'un a une idée de(s) l'erreur(s) que j'ai pu commettre? C'est la première fois que j'écris quelque chose en XSL donc il y a très certainement plusieurs failles dans l'organisation de mon code! Je vous remercie par avance!
Partager