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 () /../.

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>
Les fichiers xml secondaires contiennent des infos concernant une session de transfert de fichiers


  • 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
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>
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
 
<?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>
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 :

  1. infos de début de session issues de session_start.xml
  2. infos de fin de session issues de session_stop.xml
  3. 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.

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>
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
<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...
On voit que l'on passe par le template <xsl:template match="SessionElem"> pour session_start.xml mais pas pour session_stop.xml.

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