Bonjour,
Voilà, je vais essayé d'être clair.
J'utilise des feuilles de style XSLT générées par MapForce, en entrée, on a des fichiers XML correspondant à un schéma précis qui est notre format standard et reflètent nos tables SQL.
Pour générer nos fichiers de sorties transformés en un format désiré, on passe donc par ces feuilles de style.
Suivant nos requêtes, chaque table ne retourne pas une ligne, notre fichier XML avant transformation peut avoir ces 3 têtes là :
OU
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 <table1> <colonne1>ABC</colonne1> <colonne2>123</colonne2> </table1> <table2> <colonne1>titi</colonne1> <colonne2>toto</colonne2> </table2>
OU
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 <table1> <colonne1>ABC</colonne1> <colonne2>123</colonne2> </table1>
Or, j'ai un template qui fait un contrôle entre les colonnes 1 de chaque table. Donc quant les 2 tables sont représentées dans le fichier XML, ça va, mais dans les 2 autres cas, impossible d'avoir quelque chose en sortie.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 <table2> <colonne1>titi</colonne1> <colonne2>toto</colonne2> </table2>
Ce template doit permettre de s'assurer d'avoir une donnée récurrente et indispensable (colonne 1 dans chaque table) en sortie (si dans table 1, je prends cette donnée, sinon, si pas de représentation de la table 1 dans le fichier XML, je prends celle de la table 2).
Voici mon template :
Donc dans le cas où la table 1 n'est pas représentée, data1 n'est pas valorisée et mon template ne fonctionne plus.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 <xsl:template name="recurrentDataRestitution"> <xsl:param name="data1" select="."/> <xsl:param name="data2" select="."/> <xsl:choose> <xsl:when test="$data1"> <xsl:value-of select="$data1"/> </xsl:when> <xsl:otherwise> <xsl:value-of select="$data2"/> </xsl:otherwise> </xsl:choose> </xsl:template>
J'ai donc pensé à un test de la valorisation de data1 comme on peut le faire avec ISSET en php, mais je ne sais pas si c'est possible.
Si vous avez la solution ou des idées, je suis suepr preneur, là, je craque.
Merci d'avance
Partager