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]Récupérer erreur de la fonction document() ?


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 7
    Par défaut [XSL]Récupérer erreur de la fonction document() ?
    Bonjour à tous,

    J'utilise actuellement la fonction document() dans mon xsl pour pouvoir récupérer un deuxieme fichier XML, outre celui que je transforme.
    Cependant, il se peut que le fichier que je désire importer via la fonction document() n'existe pas et dans ce cas, mon traitement doit être différent.

    En clair, est ce qu'il y a un moyen de récupérer dans le XSL l'information que le fichier désigné existe vraiment ou pas ?

    Merci d'avance,

    Chips

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

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

    la fonction document() renvoie la racine du document désigné. Tu peux tester s'il existe des noeuds sous cette racine assez simplement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <xsl:choose>
      <xsl:when test="document()[node()]">
        ...
      </xsl:when>
      <xsl:otherwise>
        ...
      </xsl:otherwise>
    </xsl:choose>
    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
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 7
    Par défaut
    je test de ce pas et je reviens pour dire le résultat

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 7
    Par défaut
    Hélas, ça n'a pas l'air de marcher...

    Voilà ce que j'ai essayé d'exécuter

    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
     
    <xsl:variable name="pathBIB" select="'fic.xml'"/>
    	<xsl:template match="/">
    		<html>
    			<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
    			<head/>
    			<body>
    			<xsl:choose>
    				<xsl:when test="document($pathBIB)[node()]">
    					trouvé !
    				</xsl:when>
    				<xsl:otherwise>
    					perdu !
    				</xsl:otherwise>
    			</xsl:choose>
                                                    ...
    Si le fichier fic.xml n'existe pas, IE me dit "le système ne trouve pas la ressource spécifiée" au lieu de continuer l'exécution du XSL et me marquer "perdu !" au début...

    J'ai essayé en mettant le path sans l'entourer du caractère ' mais là par contre, même si le fichier existe, il me dit "perdu !"

    Je comprends pas trop ce qui cloche...

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 7
    Par défaut
    Citation Envoyé par GrandFather
    la fonction document() renvoie la racine du document désigné.
    Je confirme mais le problème est que si le document désigné n'existe pas, la fonction renvoie une erreur et non pas une "racine nulle".

    <j'espère que GrandPapa repassera par là >

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

    Informations forums :
    Inscription : Mai 2004
    Messages : 4 587
    Par défaut
    Désolé, j'ai répondu un peu trop vite : comme tu l'as constaté, si le fichier n'existe pas, une erreur est déclenchée et le traitement XSLT est stoppé. Tous les processeurs n'ont pas ce comportement (la norme autorise qu'aucune erreur ne soit levée et qu'un node-set vide soit renvoyé - voir http://www.w3.org/TR/xslt#document) mais c'est malheureusement le cas de MSXML (qui est utilisé par IE).

    Avec XSL, il n'existe aucun moyen de tester si le fichier existe et de déclencher un traitement en conséquence.
    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

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 7
    Par défaut
    Merci bien pour ta réponse très précise.

    J'avais en effet lu la norme mais je comprenais pas si on pouvait ou pas récupérer l'erreur lors du traitement XSLT... j'aurais peut etre du m'exprimer comme ca, ca aurait évité que tu répondes trop vite

    Bon ben va falloir que j'aille expliquer tout çà à mon maître de stage

+ 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]récupérer une valeur de plusieurs fichiers XML
    Par snoop dans le forum XSL/XSLT/XPATH
    Réponses: 7
    Dernier message: 05/02/2006, 00h32
  3. [XSL-FO] fonction document()
    Par bob33 dans le forum XSL/XSLT/XPATH
    Réponses: 8
    Dernier message: 10/05/2005, 10h07
  4. Réponses: 2
    Dernier message: 11/08/2004, 15h01
  5. Erreur sur une fonction avec des paramètres
    Par Elois dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 05/05/2004, 21h00

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