Subject: Re: [xsl] Functional programming in XSLT From: Jeni Tennison <mail@xxxxxxxxxxxxxxxx> Date: Thu, 15 Mar 2001 17:19:43 +0000 |
Hi Mike, > Secondly, I don't like treating multiple exsl:result's as a > "recoverable error". I can't think of too many existing cases in > XSLT 1.0 where people are going to write stylesheets that depend on > errors being recovered by one processor, where they are going to > have considerable difficulty fixing the error if another processor > chooses not to recover from it. > > I still prefer having a static constraint on where <exsl:return> can > appear, but if you can't live with that, have a strict rule that > only one may be instantiated. I'm just putting the finishing touches on a new version of EXSLT - Functions that makes the changes that you suggested and Steve supported, and I've come up against the question about whether to specify that exsl:return actually terminates the function or not. I thought I'd take a look to see how you'd done it in Saxon. I used the following test: <saxon:function name="my:func"> <xsl:if test="true()"> <saxon:return select="false()" /> </xsl:if> <xsl:if test="true()"> <saxon:return select="true()" /> </xsl:if> <xsl:message>Doesn't terminate</xsl:message> </saxon:function> This function meets the static constraints on saxon:return and Instant Saxon 6.2 runs it without complaint. I was expecting it to return false and to not receive a message (the documentation I have says: "Instantiating a saxon:return element causes exit from the call of the enclosing saxon:function."). But in fact the result of calling my:func() is true (the value of the last saxon:return that's instantiated) and the message comes up, so I guess this means that saxon:return doesn't terminate the function. Perhaps this is just a bug in version 6.2, but I was thinking: surely it wouldn't matter if more than one exsl:return element is instantiated if the function is terminated on the instantiation of the exsl:return element. Rather than it being an error, we can just say it never happens. But perhaps it's difficult to implement something that terminates on the instantiation of a particular instruction, given that this is somewhat divergent from how instantiating instructions works in other situations? In that case, would it be easier to implement/understand if we said that exsl:return cannot be instantiated more than once, but other instructions can be instantiated after exsl:return? Cheers, Jeni --- Jeni Tennison http://www.jenitennison.com/ XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] Functional programming in, Uche Ogbuji | Thread | Re: [xsl] Functional programming in, Jeni Tennison |
Re: [xsl] Inserting into a String, David Carlisle | Date | [xsl] is it possible to access the , Vladimir . Stanishev |
Month |