Je voudrais vous exposer mon pb avec la fonction document(). L'exposé est un peu long , je m'en excuse.
J'ai un fichier principal session.xml qui spécifie 3 fichiers xml secondaires : en fait deux balises spécifient le même fichier (session_start.xml) mais il est ouvert deux fois par document() avec une racine différente spécifiée par document () /../.
Les fichiers xml secondaires contiennent des infos concernant une session de transfert de fichiers
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 <?xml version="1.0" encoding="UTF-8"?> <index> <FileSessionStart uri="/home/hadoop/Bureau/session_start.xml"/> <FileSessionStop uri="/home/hadoop/Bureau/session_stop.xml" /> <FileTransfers uri="/home/hadoop/Bureau/session_start.xml" /> </index>
- Session_start.xml contient de infos de debut session, et des infos sur les transferts de fichiers individuels (balises <filetransfer>..</filetransfer>).
- Session_stop.xml contient les mêmes balises de début de session mais pas les balises de transfert de fichiers
ex: session_start.xml
ex session_stop.xml
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 <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <?xml-stylesheet type="text/xml"?> <SessionElem> <state>started</state> <startstop>Start</startstop> <sessionID>fa588ee7-78a6-483a-8cdb-a01f804b92af</sessionID> <direction>send</direction> <userstr>1c3f3239-1771-4bc0-8b32-165ae178c467</userstr> <errcode>0</errcode> <errstr>No error</errstr> <startTime>2011-04-06T16:42:29.117+02:00</startTime> <type>Session</type> <source>/home/mramos/aspera/DPCC/7daysForCnes</source> <target>/tmp/Aspera-transfert</target> <peer>194.199.172.209</peer> <userId>0</userId> <user>admin</user> <targetrate>300000000</targetrate> <minrate>0</minrate> <ratemode>adapt</ratemode> <secure>no</secure> <license>091b-2ebf</license> <peerlicense>091b-3dda</peerlicense> <filecount>1920</filecount> <file1></file1> <file2></file2> <filelast></filelast> <totalbytes>0</totalbytes> <totalsize>0</totalsize> <token></token> <cookie>aspera.console:957dbbd4-f7b2-459a-86b4-985c81be203a:7Days For CNES + Complete Source</cookie> <filetransfer> <state>unknown</state> <startstop>UNKNOWN</startstop> <id>fa588ee7-78a6-483a-8cdb-a01f804b92af-1</id> <size>20433</size> <filename>/aspera/e2es2-stageout/20110331/3245407754684465154/mdb/cu3/fl/dfle/Oga2_0000_0000.gbin</filename> <checksum> <algorithm>md5</algorithm> <value>785a0a0deacce5d7079865d6f3280478</value> </checksum> </filetransfer> <filetransfer> <state>unknown</state> <startstop>UNKNOWN</startstop> <id>fa588ee7-78a6-483a-8cdb-a01f804b92af-2</id> <size>593344</size> <filename>/aspera/e2es2-stageout/20110331/3245407754684465154/mdb/cu3/fl/odas/PrimarySource_0000_0000.gbin</filename> <checksum> <algorithm>md5</algorithm> <value>d1460ece2bb057fab6f883185cbc239d</value> </checksum> </filetransfer> .. etcetra.. </SessionElem>
La feuille de style xsl est censée traiter le fichier xml principal session.xml, ouvrir les fichiers secondaires et afficher les infos suivantes dans cet ordre :
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 <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <?xml-stylesheet type="text/xml"?> <SessionElem> <state>success</state> <startstop>Stop</startstop> <sessionID>fa588ee7-78a6-483a-8cdb-a01f804b92af</sessionID> <direction>send</direction> <userstr>1c3f3239-1771-4bc0-8b32-165ae178c467</userstr> <errcode>0</errcode> <errstr>No error</errstr> <endTime>2011-04-06T17:05:29.452+02:00</endTime> <type>Session</type> <source>/home/mramos/aspera/DPCC/7daysForCnes</source> <target>/tmp/Aspera-transfert</target> <peer>194.199.172.209</peer> <userId>0</userId> <user>admin</user> <targetrate>300000000</targetrate> <minrate>0</minrate> <ratemode>adapt</ratemode> <secure>no</secure> <license>091b-2ebf</license> <peerlicense>091b-3dda</peerlicense> <filecount>1920</filecount> <file1>/home/mramos/aspera/DPCC/7daysForCnes/CompleteSource/mdb/cu1/integrated/CompleteSource_0000_0000.gbin</file1> <file2>/home/mramos/aspera/DPCC/7daysForCnes/CompleteSource/mdb/cu1/integrated/CompleteSource_0000_0002.gbin</file2> <filelast>/home/mramos/aspera/DPCC/7daysForCnes/3245407754684465154/mdb/cu3/fl/dfle/Oga2_0000_0000.gbin</filelast> <totalbytes>15012341380</totalbytes> <totalsize>15012341380</totalsize> <token></token> <cookie>aspera.console:957dbbd4-f7b2-459a-86b4-985c81be203a:7Days For CNES + Complete Source</cookie> </SessionElem>
- infos de début de session issues de session_start.xml
- infos de fin de session issues de session_stop.xml
- infos de transfert de fichiers issue de session_start.xml
Ce sont les templates <xsl:template match="SessionElem"> et <xsl:template match="filetransfer"> qui sont censés faire ça.
Mais j'ai un pb : les infos de début de session (issues de session_start.xml) s'affichent bien, celles concernant les transferts de fichiers aussi, mais pas celles de fin de session issues de session_stop.xml. Ca donne ça en sortie:
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 <?xml version="1.0" encoding="ISO-8859-1"?> <xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method="html" encoding="ISO-8859-1"/> <xsl:template match="index"> <html> <body> <xsl:apply-templates/> </body> </html> </xsl:template> <xsl:template match="FileSessionStart"> <xsl:text>-----------------Debut de Session-----------------</xsl:text><br/><br/> <xsl:apply-templates select="document(@uri)/SessionElem"/> </xsl:template> <xsl:template match="FileSessionStop"> <xsl:text>------------------Fin de Session------------------</xsl:text><br/> <xsl:apply-templates select="document(@uri)/SessionElem"/> </xsl:template> <xsl:template match="FileTransfers"> <xsl:text>--------------------Fichiers--------------------------</xsl:text><br/> <xsl:apply-templates select="document(@uri)/SessionElem/filetransfer"/> </xsl:template> <xsl:template match="SessionElem"> <xsl:text>Identification de la session</xsl:text> <ul> <li><xsl:text>Session : </xsl:text><xsl:value-of select="sessionID "/></li> <li><xsl:text>Direction : </xsl:text><xsl:value-of select="direction "/></li> <li><xsl:text>Debut : </xsl:text><xsl:value-of select="startTime"/></li> <li><xsl:text>Fin : </xsl:text><xsl:value-of select="endTime"/></li> <li><xsl:text>Source : </xsl:text><xsl:value-of select="source"/></li> <li><xsl:text>Cible : </xsl:text><xsl:value-of select="target"/></li> <li><xsl:text>Nombre de fichiers: </xsl:text><xsl:value-of select="filecount"/></li> </ul> <xsl:text>Compte rendu</xsl:text> <ul> <li><xsl:text>Etat : </xsl:text><xsl:value-of select="state"/></li> <li><xsl:text>StartSTop : </xsl:text><xsl:value-of select="startstop"/></li> <li><xsl:text>Erreur : </xsl:text><xsl:value-of select="errsst"/></li> <li><xsl:text>Code Erreur: : </xsl:text><xsl:value-of select="errcode"/></li> <li><xsl:text>Vitesse : </xsl:text><xsl:value-of select="targetrate"/></li> <li><xsl:text>Mode : </xsl:text><xsl:value-of select="ratemode"/></li> </ul> </xsl:template> <xsl:template match="filetransfer"> <ul TYPE="circle"> <li><xsl:text>name : </xsl:text><xsl:value-of select="filename"/></li> <li><xsl:text>ESAC prefix : </xsl:text><xsl:value-of select="substring-before(filename ,'mdb')"/></li> <li><xsl:text>CNES filename : </xsl:text><xsl:value-of select="concat('mdb',substring-after(filename ,'mdb'))"/></li> <li><xsl:text>id : </xsl:text><xsl:value-of select="id"/></li> <li><xsl:text>startstop : </xsl:text><xsl:value-of select="startstop"/></li> <li><xsl:text>state : </xsl:text><xsl:value-of select="state"/></li> <li><xsl:text>taille : </xsl:text><xsl:value-of select="size"/></li> <xsl:text>------</xsl:text> </ul> </xsl:template> </xsl:stylesheet>
On voit que l'on passe par le template <xsl:template match="SessionElem"> pour session_start.xml mais pas pour session_stop.xml.
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 <html> <body> -----------------Debut de Session-----------------<br> <br>Identification de la session<ul> <li>Session : fa588ee7-78a6-483a-8cdb-a01f804b92af</li> <li>Direction : send</li> <li>Debut : 2011-04-06T16:42:29.117+02:00</li> <li>Fin : </li> <li>Source : /home/mramos/aspera/DPCC/7daysForCnes</li> <li>Cible : /tmp/Aspera-transfert</li> <li>Nombre de fichiers: 1920</li> </ul>Compte rendu<ul> <li>Etat : started</li> <li>StartSTop : Start</li> <li>Erreur : </li> <li>Code Erreur: : 0</li> <li>Vitesse : 300000000</li> <li>Mode : adapt</li> </ul> ------------------Fin de Session------------------<br> --------------------Fichiers--------------------------<br> <ul TYPE="circle"> <li>name : /aspera/e2es2-stageout/20110331/3245407754684465154/mdb/cu3/fl/dfle/Oga2_0000_0000.gbin</li> <li>ESAC prefix : /aspera/e2es2-stageout/20110331/3245407754684465154/</li> <li>CNES filename : mdb/cu3/fl/dfle/Oga2_0000_0000.gbin</li> <li>id : fa588ee7-78a6-483a-8cdb-a01f804b92af-1</li> <li>startstop : UNKNOWN</li> <li>state : unknown</li> <li>taille : 20433</li>------</ul> <ul TYPE="circle"> <li>name : /aspera/e2es2-stageout/20110331/3245407754684465154/mdb/cu3/fl/odas/PrimarySource_0000_0000.gbin</li> <li>ESAC prefix : /aspera/e2es2-stageout/20110331/3245407754684465154/</li> <li>CNES filename : mdb/cu3/fl/odas/PrimarySource_0000_0000.gbin</li> <li>id : fa588ee7-78a6-483a-8cdb-a01f804b92af-2</li> <li>startstop : UNKNOWN</li> <li>state : unknown</li> <li>taille : 593344</li>------</ul> etc...
J'ai tourné et retourné le truc dans tous les sens.. rien à faire.Si quelqu'un a un peu de temps à perdre avec ce pb, ce serait super sympa
pierre
Partager