Ouverture de documents xml secondaires
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:
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:
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:
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 :
- 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.
Code:
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:
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 :mrgreen:
pierre