Tout d’abord, je salue tous les développeurs de ce Forum, qui m’a beaucoup aidé au cours de mon développement.
Je suis un nouveau posteur, mais cela va faire un mois que je lis attentivement les threads de ce forum.
Présentation : Je suis actuellement stagiaire en informatique financière dans un groupe aéronautique et une partie de ma mission est d’extraire de façon automatique des données XML issues de Crystal Reports, pour les transformer en HTML en utilisant XSLT.
PS : J’ai simplifié et randomisé mon code par souci de clarté et de compréhension.
Voila, je procède par deux transformation successives d’un XML par deux XSL en chaine avec XSLTProc de PHP5.
La première transformation s’opère sans problèmes. Il s’agit en fait d’un « rebalisage » ou je vais changer la manière dont l’arbre XML du premier document est construit et ajouter des balises plus compréhensibles.
Mon nouvel arbre XML simplifié donne ça :
Lorsque j’essaye de le re-process avec une nouvelle feuille XSL, le nouvel Output XML est vide, mise à part la nouvelle balise contenant les namespaces (ici la balise <test>).
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 <?xml version="1.0" ?> <?xml-stylesheet type="text/xsl" href="crashtest.xsl"?> <GUS_Relaxor xmlns="urn:schemas-microsoft-com:office:spreadsheet" xmlns:cr="urn:crystal-reports:schemas" xmlns:xsi="http://www.w3.org/2000/10/XMLSchema-instance" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet" xmlns:html="http://www.w3.org/TR/REC-html40"> <Tru Code="bri_gu"> <GU Nom="666"> <Titre_GU>666</Titre_GU> <Tableau> <Ligne> <Cellule Type="String" Nom="serveur">TTP</Cellule> <Cellule Type="String" Nom="account">99586</Cellule> <Cellule Type="Number" Nom="moyenne">128.3</Cellule> <Cellule Type="Number" Nom="eval">1569</Cellule> <Cellule Type="Number" Nom="periode">98476</Cellule> </Ligne> </Tableau> <Tableau> <Ligne> <Cellule Type="String" Nom="serveur">MOP</Cellule> <Cellule Type="String" Nom="account">85948</Cellule> <Cellule Type="Number" Nom="moyenne">2598</Cellule> <Cellule Type="Number" Nom="eval">65</Cellule> <Cellule Type="Number" Nom="periode">8475</Cellule> </Ligne> </Tableau> </GU> <GU Nom="EVA"> <Titre_GU>EVA</Titre_GU> <Tableau> <Ligne> <Cellule Type="String" Nom="serveur">LAT</Cellule> <Cellule Type="String" Nom="account">3254</Cellule> <Cellule Type="Number" Nom="moyenne">4859</Cellule> <Cellule Type="Number" Nom="eval">68</Cellule> <Cellule Type="Number" Nom="periode">6854</Cellule> </Ligne> </Tableau> <Tableau> <Ligne> <Cellule Type="String" Nom="serveur">TEP</Cellule> <Cellule Type="String" Nom="account">9854</Cellule> <Cellule Type="Number" Nom="moyenne">3256</Cellule> <Cellule Type="Number" Nom="eval">874</Cellule> <Cellule Type="Number" Nom="periode">658</Cellule> </Ligne> </Tableau> </GU> </Tru> </GUS_Relaxor>
Nouvelle feuille XSL :
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 <?xml version="1.0"?> <xsl:stylesheet xmlns:xsl = 'http://www.w3.org/1999/XSL/Transform' xmlns:cr = 'urn:crystal-reports:schemas' xmlns:xsi = 'http://www.w3.org/2000/10/XMLSchema-instance' xmlns = "urn:schemas-microsoft-com:office:spreadsheet" xmlns:o = "urn:schemas-microsoft-com:office:office" xmlns:x = "urn:schemas-microsoft-com:office:excel" xmlns:ss = "urn:schemas-microsoft-com:office:spreadsheet" xmlns:html = "http://www.w3.org/TR/REC-html40" version = "1.0" > <xsl:output method="xml"/> <xsl:template match="/"> <test> <xsl:for-each select="//Tableau"> <xsl:value-of select="Cellule"/> </xsl:for-each> </test> </xsl:template> </xsl:stylesheet>
Je veux préciser que ce n’est pas le parseur XSLT PHP qui ne marche pas, car j’ai le même problème avec le parseur d’IE6 etc. et pour d’autres doc XML ça marche bien.
En fait j’ai l’impression ma feuille XSL ne tien pas compte des balises du XML et ne les voie pas dans le XML source.
Problème de namespaces ? Je sèche complet !
J’espère avoir été assez claire dans mon approche du problème pour que ce soit compréhensible, je remercie d’avance toute les bonnes âmes qui aurait le courage de lire ce thread et d’y répondre.
@++
Partager