Bonjour,
Savez-vous pourquoi le code XML suivant :
Fonctionne avec le XSL suivant :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 <?xml version="1.0" encoding="utf-8"?> <listitems> <data> <row link_Fr="http://www.google.fr" /> </data> </listitems>
Et pas avec le code de la fonction RemoveEndLine modifiée de cette façon :
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 <?xml version="1.0" encoding="utf-8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method="html"/> <xsl:template match="row"> <div> <xsl:call-template name="RemoveEndLine"> <xsl:with-param name="string" select="@ows_San_Link_Link_Fr" /> </xsl:call-template> </div> </xsl:template> <xsl:template name="RemoveEndLine"> <xsl:param name="string" /> <xsl:choose> <!-- Supprimer l'espace entre le # et le 1 sinon le forum l'interprête --> <xsl:when test="contains($string, '&# 13;')" > <xsl:call-template name="RemoveEndLine"> <!-- Supprimer l'espace entre le # et le 1 sinon le forum l'interprête --> <xsl:with-param name="string" select="substring-before($string, '&# 13;')" /> </xsl:call-template> </xsl:when> <!-- Supprimer l'espace entre le # et le 1 sinon le forum l'interprête --> <xsl:when test="contains($string, '&# 10;')" > <xsl:call-template name="RemoveEndLine"> <!-- Supprimer l'espace entre le # et le 1 sinon le forum l'interprête --> <xsl:with-param name="string" select="substring-before($string, '&# 10;')" /> </xsl:call-template> </xsl:when> <xsl:otherwise> <xsl:value-of select="$string" /> </xsl:otherwise> </xsl:choose> </xsl:template> </xsl:stylesheet>
J'utilise la parser Microsoft. Le second code a fonctionné dans le passé mais plus maintenant. Désormais, il part en boucle infinie. Cela vient-il de la version du parser utilisé qui aurait pu subir une mise à jour ?
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 <xsl:template name="RemoveEndLine"> <xsl:param name="string" /> <!-- Supprimer l'espace entre le # et le 1 sinon le forum l'interprête --> <xsl:variable name="vbCr">&# 13;</xsl:variable> <!-- Supprimer l'espace entre le # et le 1 sinon le forum l'interprête --> <xsl:variable name="vbLf">&# 10;</xsl:variable> <xsl:choose> <xsl:when test='contains($string, $vbCr)' > <xsl:call-template name="RemoveEndLine"> <xsl:with-param name="string" select="substring-before($string, $vbCr)" /> </xsl:call-template>--> </xsl:when> <xsl:when test='contains($string, $vbLf)' > <xsl:call-template name="RemoveEndLine"> <xsl:with-param name="string" select="substring-before($string, $vbLf)" /> </xsl:call-template> </xsl:when> <xsl:otherwise> <xsl:value-of select="$string" /> </xsl:otherwise> </xsl:choose> </xsl:template>
Merci pour votre réponse.
Cordialement,
Partager