Bonjour,
J'ai actuellement pour tache d'améliorer la rédaction d'un feuille de style XSL dont le style est assez lourd. Cette feuille de style récupère des informations stockés dans des attributs d'éléments d'un fichier XSD, et affiche une page HTML sous forme d'arbre.
La fonction permettant d'afficher des icônes à côtés des différents nœuds et éléments se présentais comme cela:
C'est fonctionnel, mais très lourd car il y a beaucoup d'images. J'ai dans l’idée de créer des variables pour chaque images, puis faire en sorte qu'à l'appel de la fonction, le programme compare le nom de l'attribut avec le nom de chaque variables (for-each) et sélectionne l'image si les noms sont égaux. J'ai cependant un soucis dans la sélection des variables et de leurs valeurs via Xpath. Je vous montre un prototype non fonctionnel mais qui vous montrera mieux ce que j'ai en tête. Est-il possible de faire les choses de cette manière ou est-ce que je me trompe complétement de méthode ?
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 <xsl:template name="displayIcon"> <xsl:choose> <xsl:when test="@type = 'udt:TextType'"> <img src="data:image/png;base64,..." title="udt:TextType" /> </xsl:when> <xsl:otherwise> <xsl:choose> <xsl:when test="@type = 'udt:DateTimeType'"> <img src="data:image/png;base64,..." title="udt:DateTimeType" /> </xsl:when> <xsl:otherwise> <xsl:choose> <xsl:when test="@type = 'ContactType'"> <img src="data:image/png;base64,..." title="ContactType" /> </xsl:when> <xsl:otherwise> <xsl:choose> ............................. </xsl:choose> </xsl:otherwise> </xsl:choose> </xsl:otherwise> </xsl:choose> </xsl:otherwise> </xsl:choose> </xsl:template>
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 <xsl:variable name="udt:TextType" xmlns:udt="urn:un:unece:uncefact:data:standard:UnqualifiedDataType:10" select="'data:image/png;base64,..." /> <xsl:variable name="udt:DateTimeType" xmlns:udt="urn:un:unece:uncefact:data:standard:UnqualifiedDataType:10" select="'data:image/png;base64,..." /> <xsl:variable name="ContactType" select="'data:image/png;base64,..." /> <xsl:template name="displayIcon" xmlns:udt="urn:un:unece:uncefact:data:standard:UnqualifiedDataType:10" xmlns:qdt="fr:gouv:culture:archivesdefrance:seda:v1.0:QualifiedDataType:1"> <xsl:for-each select="xsl:variable"> <xsl:choose> <xsl:when test="@type = xsl:variable/@name"> <img> <xsl:attribute name="src"> <xsl:value-of select="xsl:variable/@select" /> </xsl:attribute> <xsl:attribute name="title"> <xsl:value-of select="xsl:variable/@name" /> </xsl:attribute> </img> </xsl:when> <xsl:otherwise> <xsl:choose> <xsl:when test="@name = xsl:variable/@name"> <img> <xsl:attribute name="src"> <xsl:value-of select="xsl:variable/@select" /> </xsl:attribute> <xsl:attribute name="title"> <xsl:value-of select="xsl:variable/@name" /> </xsl:attribute> </img> </xsl:when> <xsl:otherwise> <img> <xsl:attribute name="src"> <xsl:value-of select="$Default" /> </xsl:attribute> <xsl:attribute name="title"> <xsl:value-of select="@name" /> </xsl:attribute> </img> </xsl:otherwise> </xsl:choose> </xsl:otherwise> </xsl:choose> </xsl:for-each> </xsl:template>
Partager