IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

XSL/XSLT/XPATH XML Discussion :

[XSL-FO] fonction document()


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Membre du Club
    Inscrit en
    Décembre 2002
    Messages
    67
    Détails du profil
    Informations forums :
    Inscription : Décembre 2002
    Messages : 67
    Points : 55
    Points
    55
    Par défaut [resolu] [XSL-FO] fonction document()
    Bonjour,
    J'ai besoin de fusionner plusieurs documents xml en un seul document pdf.
    Je pensais utiliser la fonction document() afin d'accéder à chaucund e mes documents.
    j'utilise le code suivant :

    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
     
    <xsl:template name="result_page">		
    		<xsl:for-each select ="reporting/Ligne">
    			<xsl:variable name="Path_XML" select="NomLien" />
    			<xsl:variable name="Source" select="document('$Path_XML')" />					
    			<fo:block>				
    			<fo:table table-layout="fixed" width="80%">
    				<fo:table-column column-width="proportional-column-width(1)"/>
    				<fo:table-column column-width="proportional-column-width(1)"/>				
    				<fo:table-body>
    					<fo:table-row font-weight="bold" 
    									text-align="center" 
    									vertical-align="middle"
    						  			background-color="#A6A5C2">
    						<fo:table-cell border="black"
    									border-style="solid"
    									border-width="1pt">
    							<fo:block>&nbsp;Fichier de test&nbsp;:</fo:block>
    						</fo:table-cell>
    						<fo:table-cell border="black"
    									border-style="solid"
    									border-width="1pt">
    							<fo:block>
     
    							<xsl:value-of select="$Source/results/session" />
     
    							</fo:block>
    						</fo:table-cell>						
    					</fo:table-row>
    					<fo:table-row font-weight="bold" 
    									text-align="center" 
    									vertical-align="middle"
    						  			background-color="#A6A5C2">
    						<fo:table-cell border="black"
    									border-style="solid"
    									border-width="1pt">
    							<fo:block>&nbsp;Date&nbsp;:</fo:block>
    						</fo:table-cell>
    						<fo:table-cell border="black"
    									border-style="solid"
    									border-width="1pt">
    							<fo:block><xsl:value-of select="$Source/results/date"/></fo:block>
    						</fo:table-cell>						
    					</fo:table-row>		
    				</fo:table-body>				
    			</fo:table>	
    		</fo:block>
    		<fo:block break-after="page"></fo:block>
    		</xsl:for-each>
    	</xsl:template>
    Je boucle sur l'ensemble de mes documents xml.
    Mais lorsque je veux recuperer des données pour les afficher, aucun résultat.

    Pouvez-vous m'aider

    Merci d'avance

  2. #2
    Expert éminent
    Avatar de GrandFather
    Inscrit en
    Mai 2004
    Messages
    4 587
    Détails du profil
    Informations personnelles :
    Âge : 54

    Informations forums :
    Inscription : Mai 2004
    Messages : 4 587
    Points : 7 103
    Points
    7 103
    Par défaut
    Bonjour,

    retire les quotes autour de ta variable dans ta fonction document :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <xsl:variable name="Source" select="document($Path_XML)" />
    FAQ XML
    ------------
    « Le moyen le plus sûr de cacher aux autres les limites de son savoir est de ne jamais les dépasser »
    Giacomo Leopardi

  3. #3
    Membre du Club
    Inscrit en
    Décembre 2002
    Messages
    67
    Détails du profil
    Informations forums :
    Inscription : Décembre 2002
    Messages : 67
    Points : 55
    Points
    55
    Par défaut
    je viens d'essayer mais le résultat est le même.
    Ai-je bien le droit d'utilsier cette fonction avec xsl-fo ?
    Sinon je ne comprends pas d'où peut venir mon erreur

  4. #4
    Expert éminent
    Avatar de GrandFather
    Inscrit en
    Mai 2004
    Messages
    4 587
    Détails du profil
    Informations personnelles :
    Âge : 54

    Informations forums :
    Inscription : Mai 2004
    Messages : 4 587
    Points : 7 103
    Points
    7 103
    Par défaut
    La fonction document() est une fonction XPath tout ce qu'il y a de plus standard, et n'a rien à voir avec FO. La cause la plus probable du problème est que le fichier pointé par ta variable est impossible à atteindre (mauvais chemin, par exemple).

    L'inconvénient de cette fonction est qu'elle ne gère pas les erreurs d'entrées/sorties, et qu'il est donc difficile de savoir ce qui cloche...

    Peux-tu donner un exemple ce ce que contient <NomLien> ?
    FAQ XML
    ------------
    « Le moyen le plus sûr de cacher aux autres les limites de son savoir est de ne jamais les dépasser »
    Giacomo Leopardi

  5. #5
    Membre du Club
    Inscrit en
    Décembre 2002
    Messages
    67
    Détails du profil
    Informations forums :
    Inscription : Décembre 2002
    Messages : 67
    Points : 55
    Points
    55
    Par défaut
    si je fais
    <xsl:value-of select="$Path_XML" />, donc de NomLien
    cela me donne comme valeur affiché :
    C:\workspace\greco\UnitTest\xml\Access\Admin\admin_001.001.xml

    ce qui correspond bien au fichier souhaité.

  6. #6
    Membre du Club
    Inscrit en
    Décembre 2002
    Messages
    67
    Détails du profil
    Informations forums :
    Inscription : Décembre 2002
    Messages : 67
    Points : 55
    Points
    55
    Par défaut
    je viens de remarquer ceci.
    La valeur contenu par NomLien ets bien la bonne.
    Mais lors de mon execution, j'ai me message d'erreur suivant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    file:///C:/workspace/greco/UnitTest/xsl/reporting_pdf.xsl; Ligne #323; Colonne #59; Impossible de charger le document demandé : c:\C:\workspace\greco\UnitTest\xsl\workspace\greco\UnitTest\xml\Access\Admin\admin_001.001.xml (Syntaxe du nom de fichier, de répertoire ou de volume incorrecte)
    Un chemin supplémentaire vient se concatener au premier sans que je sache pourquoi

  7. #7
    Membre expérimenté
    Avatar de virgul
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    1 625
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 625
    Points : 1 666
    Points
    1 666
    Par défaut
    Salut,

    Pourquoi ne pas mettre seulement le nom du XML dans la variable et laissé le document() dans ton FO?

    De plus ton document sera plus lisible car la ou dirait(au premier coup d'oeil que tu browse une varible ca fait bizzare(ce n'est qu'une question d'interprétation je sais a toi de voir)!

    Car en tout cas sa marche je l'ai fait!

    ++

    Thierry

    P.S. essaye pour ton XML de donné tonfichier.xml pas seuleument tonfichier. Ce n'est qu'une suggestion
    "Life is short don't forget to inhale"
    Mais: "Mieux vaux arriver en retard dans ce monde... qu'en avance à l'autre."

  8. #8
    Expert éminent
    Avatar de GrandFather
    Inscrit en
    Mai 2004
    Messages
    4 587
    Détails du profil
    Informations personnelles :
    Âge : 54

    Informations forums :
    Inscription : Mai 2004
    Messages : 4 587
    Points : 7 103
    Points
    7 103
    Par défaut
    Essaie de respecter la syntaxe d'une URL pour ton chemin de fichier :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <NomLien>file:///C:/workspace/greco/UnitTest/xsl/workspace/greco/UnitTest/xml/Access/Admin/admin_001.001.xml</NomLien>
    FAQ XML
    ------------
    « Le moyen le plus sûr de cacher aux autres les limites de son savoir est de ne jamais les dépasser »
    Giacomo Leopardi

  9. #9
    Membre du Club
    Inscrit en
    Décembre 2002
    Messages
    67
    Détails du profil
    Informations forums :
    Inscription : Décembre 2002
    Messages : 67
    Points : 55
    Points
    55
    Par défaut
    Merci pour vos réponses
    J'ai réussi à m'en sortir en mettant dans mon url appelé dans la focntion document des chemins du genre
    "../chemin d'accés vers mon fichier"

    Mais je n'ai toujours pas trés bien compris pourquoi l'autre méthode ne fnctionne pas.
    Il semble que dans l'utilisation de la fonction document, il y ait des différences d'interprétation entre les chemins absolus et les chemins relatifs.

    Mais encore merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XSL] fonction document
    Par maa dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 04/03/2006, 17h38
  2. [XSL]Probleme fonction recursive
    Par Le-Cortex dans le forum XSL/XSLT/XPATH
    Réponses: 9
    Dernier message: 12/12/2005, 15h10
  3. [XSL] Erreur : Ce document a déjà un noeud DocumentElement
    Par luimême dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 22/11/2005, 18h22
  4. [XSL]Récupérer erreur de la fonction document() ?
    Par Chips dans le forum XSL/XSLT/XPATH
    Réponses: 6
    Dernier message: 16/05/2005, 18h03
  5. [XSL] Transformation de document xml
    Par youbyoub dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 11/04/2005, 16h13

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo