Soit le fichier XML suivant

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
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
 
<?xml version="1.0" encoding="ISO-8859-1"?>
<?xml-stylesheet type="text/xsl" href="file-xsl.xsl"?>
<root>
        <structure id="0001">
                <reference>STRUCT0001</reference>
                <libelle refentite="a" numcreation="b">Structure 1</libelle>
                <telephone>04-99-61-90-29</telephone>
                <nombre>0</nombre>
                <intervenants id="rupture"></intervenants>
                <adresse>Rue de la république</adresse>
                <entite></entite>
        </structure>
        <structure id="0002">
                <reference>STRUCT0002</reference>
                <libelle>Structure 2</libelle>
                <telephone>04-99-61-90-25</telephone>
                <nombre>2</nombre>
                <intervenants id="rupture">
                  <intervenant>
                    <nom refentite="a" numcreation="b">DUPOND</nom>
                    <prenom>Marcel</prenom>
                  </intervenant>
                  <intervenant>
                    <nom refentite="a" numcreation="b">DURAND</nom>
                    <prenom>Jacques</prenom>
                  </intervenant>
                </intervenants>
                <adresse></adresse>
                <entite></entite>
        </structure>
        <structure id="0003">
                <reference>STRUCT0003</reference>
                <libelle>Structure 3</libelle>
                <telephone>04-99-61-90-20</telephone>
                <nombre>0</nombre>
                <intervenants id="rupture"></intervenants>
                <adresse></adresse>
                <entite>Mon entité</entite>
        </structure>
        <structure id="0004">
                <reference>STRUCT0004</reference>
                <libelle>Structure 4</libelle>
                <telephone>04-99-61-90-20</telephone>
                <nombre>0</nombre>
        </structure>
        <structure id="0005">
                <reference>STRUCT0005</reference>
                <libelle>Structure 5</libelle>
                <telephone>04-99-61-90-20</telephone>
                <nombre>0</nombre>
        </structure>
        <structure id="0006">
                <reference>STRUCT0006</reference>
                <libelle>Structure 6</libelle>
                <telephone>04-99-61-90-20</telephone>
                <nombre>0</nombre>
        </structure>
        <structure id="0007">
                <reference>STRUCT0007</reference>
                <libelle>Structure 7</libelle>
                <telephone>04-99-61-90-20</telephone>
                <nombre>0</nombre>
        </structure>
        <structure id="0008">
                <reference>STRUCT0008</reference>
                <libelle>Structure 8</libelle>
                <telephone>04-99-61-90-20</telephone>
                <nombre>0</nombre>
        </structure>
        <structure id="0009">
                <reference>STRUCT0009</reference>
                <libelle>Structure 9</libelle>
                <telephone>04-99-61-90-20</telephone>
                <nombre>0</nombre>
        </structure>
        <structure id="00010">
                <reference>STRUCT00010</reference>
                <libelle>Structure 10</libelle>
                <telephone>04-99-61-90-20</telephone>
                <nombre>0</nombre>
        </structure>
        <structure id="00011">
                <reference>STRUCT00011</reference>
                <libelle>Structure 11</libelle>
                <telephone>04-99-61-90-20</telephone>
                <nombre>0</nombre>
        </structure>
        <structure id="00012">
                <reference>STRUCT00012</reference>
                <libelle>Structure 12</libelle>
                <telephone>04-99-61-90-20</telephone>
                <nombre>0</nombre>
        </structure>
</root>
auquel j'applique la feuille XSL suivante
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
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
 
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <!-- Import Entete -->
  <xsl:import href="entete.xsl"/>
  <xsl:output method="html" indent="yes"/>
 
  <!-- Parametres d entrees -->
  <xsl:param name="champTri"/>
  <xsl:param name="sensTri"/>
  <xsl:param name="nbEnregPage"/>
  <xsl:param name="filterKey"/>
  <xsl:param name="filterValue"/>
 
  <!-- Template lien -->
  <xsl:template name="lien">
    <xsl:param name="refEntite"/>
    <xsl:param name="numCreation"/>
    <xsl:param name="item"/>
    <xsl:choose>
      <xsl:when test="$refEntite != '' and $numCreation != ''">
        <td><a href="concat($refEntite,' ',$numCreation)"><xsl:value-of select="."/></a></td>
      </xsl:when>
      <xsl:otherwise>
        <td><xsl:value-of select="."/></td>
      </xsl:otherwise>
    </xsl:choose>
  </xsl:template>
  <!-- Fin Template lien -->
 
  <xsl:template match="root">
  <table>
 
    <!-- Chargement Entete -->
    <xsl:call-template name="entete"/>
 
    <!-- Pour Chaque ligne -->
    <xsl:for-each select="node()[child::*[name()=$filterKey and contains(text(),$filterValue)] and position() &gt; 0 and position() &lt; $nbEnregPage+1]">
      <xsl:sort select="*[name()=$champTri]" order="{$sensTri}"/>
      <xsl:variable name="vRefEntite" select="@refentite"/>
      <xsl:variable name="vNumCreation" select="@numcreation"/>
      <!-- tri -->
      <tr>
      <!-- Colorer une ligne sur 2 -->
      <xsl:if test="(position() mod 2)=0">
        <xsl:attribute name="bgcolor">grey</xsl:attribute>
      </xsl:if>
 
      <!-- Pour chaque colonne -->
      <xsl:for-each select="*">
        <xsl:choose>
          <!-- Si noeud pouvant etre multiple -->
          <xsl:when test="@id='rupture'">
            <xsl:if test="count(*) &gt; 1">
              <td>
                <table>
                  <xsl:for-each select="node()">
                    <tr>
                      <td>
                        <xsl:call-template name="lien">
                          <xsl:with-param name="refEntite" select="@refentite"/>
                          <xsl:with-param name="numCreation" select="@numcreation"/>
                          <xsl:with-param name="item" select="."/>
                        </xsl:call-template>
                      </td>
                    </tr>
                  </xsl:for-each>
                </table>
              </td>
            </xsl:if>
            <xsl:if test="count(*) &lt; 1">
            <td></td>
            </xsl:if>
          </xsl:when>
          <!-- Sinon appel template lien -->
          <xsl:otherwise>
            <xsl:call-template name="lien">
              <xsl:with-param name="refEntite" select="@refentite"/>
              <xsl:with-param name="numCreation" select="@numcreation"/>
              <xsl:with-param name="item" select="."/>
            </xsl:call-template>
          </xsl:otherwise>
        </xsl:choose>
 
      </xsl:for-each>
      </tr>
    </xsl:for-each>
 
  </table>
  </xsl:template>
 
</xsl:stylesheet>
selon que je fasse la transformation côté client via l'exemple fourni sur ce forum ou côté serveur via
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
 
     TransformerFactory tFactory = TransformerFactory.newInstance();
     Transformer transformer = tFactory.newTransformer(new StreamSource(xslt));
 
     transformer.setParameter("champTri","reference");
     transformer.setParameter("sensTri","ascending");
     transformer.setParameter("nbEnregPage","10");
     transformer.setParameter("filterKey","reference");
     transformer.setParameter("filterValue","STRUC");
 
     transformer.transform(new StreamSource(xml),new StreamResult(System.out));
Je me retrouve avec un résultat différent.
La transformation côté client me ramène exactement les enregs demandés (10), par contre celle côté serveur me ramène seulement 5 enregs.

Je ne vois pas d'où peut venir le problème. Si ce n'est de ma feuille XSL qui doit être mal codée...

Merci d'avance.