bonjour tout le monde je suis débutant en xml et j'ai réalisé un fichier xsl qui marche d'ailleur mais j'arrive pas à comprendre la syntaxe apply import et apply templateen fait voici mon fichier xsl :
malgré c'est moi qu'il a fait mais je comprends pas comment il s'exécute!!!
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 <?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="html"/> <xsl:template match="/"> <html> <head> <title>Liste des produits</title> </head> <body style="font-family:Arial; font-size:12pt;"> <i><h1 style="color:red">Liste des produits</h1></i> <xsl:apply-imports/> </body> </html> </xsl:template> <xsl:template name="fonction" match="produit" > <xsl:param name="n" select="inerte"/> <xsl:param name="x" select="0"/> <!--x peut avoir 0 ou 1 pour ce cas--> <xsl:choose> <xsl:when test="$x=1"><!--si x =1 alors --> <h2 STYLE="background-color:teal; color:white;"><xsl:text> nom produit : </xsl:text><i><xsl:value-of select="designation "/> </i> </h2> s <h3 style="color:blue"><xsl:text> référence : </xsl:text><xsl:value-of select="ref"/> </h3> <h3><xsl:text>catégorie : </xsl:text><xsl:value-of select="categorie"></xsl:value-of></h3> </xsl:when> <xsl:when test="$x=0"> <!--xsl:for-each select="produit"--> <xsl:apply-templates select="produit [niveau=$n]"/> <h2 STYLE="background-color:teal; color:white;"><xsl:text> nom produit : </xsl:text><i><xsl:value-of select="designation "/> </i> </h2> <h3><xsl:text> niveau de dangerosité : </xsl:text> <xsl:value-of select="niveau"/> </h3> <h3 style="color:blue"><xsl:text> coordonées : </xsl:text><xsl:value-of select="emplacement/zone"></xsl:value-of></h3> <!--/xsl:for-each--> </xsl:when> </xsl:choose> </xsl:template> </xsl:stylesheet>
en fait voilà mais remarques :
si je supprime <apply imports/> j'ai seulement Liste des produits !!!!
alors qu'il y a beaucoup de fichier XSL sur le net qui ne contiennent pas cette instruction !!
après
si je fait le xsl:for each !!! ça ne marche pas !!!!!!!!
et si je fait dans le <body> call:templates fonction ça ne donne ça n'a aucun effet en fait je trouve que XSL n'a pas vraiment les principes d'un langage procédurale comme C c'est à dire les procédures et la fonction main !!! c'est ce que j'ai cru au debut mais puis ce qu'il excute la template fonction même sans le call:template alors c'est différent
finalement merci beaucoup d'avance même si je trouve que je suis pas assez claire mais bon !!!merci d'avance !
Partager