Re: Detection d'erreur sur document()

Bruno Chatel <[email protected]> Fri, 14 Dec 2007 23:07:08 +0100
Newsgroups gmane.text.xml.french.tech
Message-ID <[email protected]>
Bonjour,
Si vous utilisez un processeur compatible XSLT2 (et XPATH2), vous pouvez 
utiliser la fonction
doc-available qui renvoit un booleén :
http://www.w3.org/TR/xquery-operators/#func-doc-available

Cordialement
--
Bruno Chatel
Tel : (+33) (0)4 96 11 14 57
[email protected]
http://www.chadocs.com
--------------------------------------

Eric van der Vlist wrote :
> Bonjour,
> Le mercredi 12 décembre 2007 à 13:58 +0100, Philippe Prados a écrit :
>   
>> Dans un feuille XSL, je souhaite insérer un extrait XML dans un document
>> s'il est présent, ou le construire s'il n'est pas présent.
>> Lorsque j'indique un document($filename), s'il n'est pas présent j'ai
>> une erreur. 
>>     
>
> En fait, la recommandation XSLT laisse aux processeurs XSLT le choix de
> signaler l'erreur ou non : "Si l'extraction de la ressource se solde par
> une erreur alors, le processeur XSLT peut signaler l'erreur; s'il ne le
> fait pas, il doit récupérer sur l'erreur en retournant un ensemble vide
> de noeuds."
>
> http://xmlfr.org/w3c/TR/xslt/#function-document
>
> Lorsque l'implémentation que vous utilisez génère une erreur, vous ne
> pouvez pas y faire grand chose, si ce n'est choisir une autre
> implémentation (telle que Saxon) qui ne génère pas d'erreur!
>
>   
>> Comment éviter cela et faire un test pour traiter l'erreur ?
>>     
>
> Cela ne permet pas d'éviter l'erreur, mais lorsque le processeur XSLT ne
> génère pas d'erreur, la recommandation spécifie qu'il doit retourner un
> ensemble de noeuds vide. Dans ce cas, il suffit alors de tester si
> l'ensemble de noeuds est vide pour savoir s'il y a un document ou non :
>
>     <xsl:choose>
>         <xsl:when test="document('doc.xml')/*">Il y a un document :-)</xsl:when>
>         <xsl:otherwise>Il n'y en a pas :-( ...</xsl:otherwise>
>     </xsl:choose>
>
> Cordialement,
>
> Eric van der Vlist
>
>   
>> Merci
>>
>> Philippe
>>     
>
>