Subject: Re: [xsl] saxon:try() From: Florent Georges <lists@xxxxxxxxxxxx> Date: Fri, 4 Jan 2008 18:29:48 +0100 (CET) |
Colin Paul Adams wrote: > >>>>> "Florent" == Florent Georges <lists@xxxxxxxxxxxx> writes: > Florent> But I think that the ex:error-safe instruction should > Florent> be exactly predictable, deterministic. If an expression > Florent> stands lexically outside of the instruction, if it > Florent> produces an exception, it shouldn't be caught (but that's > Florent> only my humble point of view). > But that goes against the declarative nature of XSLT. I don't think so. XSLT has the concept of context. And the evolution of the dynamic context relies on the lexical stylesheet. Whenever the value of a global variable is actually evaluated, the context is the one corresponding to a global variable. For instance: <xsl:variable name="v" select="/a" as="element()"/> <xsl:template match="/"> <ex:error-safe> <ex:try> <xsl:for-each select="doc('...')"> <xsl:copy-of select="$v"/> ... The same way the context node when evaluating $v will always be the document node of the initial input tree, the try handler should always be the handler that was in the context where the variable has been declared. At least that is one way to define it. And in my humble opinion this is the most natural way (but I tend to often find natural what I defined myself :-p). > xsl:variable declares the definition of a value. It > doesn't indicate execution at all. We agree. > The reference to the variable, which is inside the ex:try, > is the most logical place to think of the evaluation > occuring. Or rather, it is the place at which you access > the value. I don't see why this is more logical there. For me, the most logical is at one place where it is referenced (from possibly many). And only once. The first one while the evaluation of the stylesheet. But all that is about implementation. > If you DIDN'T access the variable within the > transformation at all, when should the error be raised? > Prior to the execution of the initial template? That would > be a bit harsh. I don't really see the point. There no notion of time in the evaluation of the stylesheet. And '5.3 says: Dynamic errors are reported only if the instructions or expressions that cause them are actually evaluated. So the error could remain not evaluated, couldn't it? And if it is actually evaluated, the transformation should fail because the error occured outside of an ex:error-safe. Thank you for your feedback, --drkm _____________________________________________________________________________ Ne gardez plus qu'une seule adresse mail ! Copiez vos mails vers Yahoo! Mail http://mail.yahoo.fr
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] saxon:try(), Florent Georges | Thread | Re: [xsl] saxon:try(), Colin Paul Adams |
Re: [xsl] Replace an attribute, Martin Honnen | Date | Re: [xsl] saxon:try(), Colin Paul Adams |
Month |