Subject: RE: [xsl] A sequence of more than one item is not allowed as the value of item From: "Andrew Welch" <ajwelch@xxxxxxxxxxxxxxx> Date: Wed, 1 Jun 2005 12:10:53 +0100 |
> > <xsl:variable name="foo" as="xs:string"> > > <xsl:text/>abc<xsl:value-of select="'def'"/> </xsl:variable> > > > > <xsl:value-of select="$foo"/> > > > > Gives the error message: "A sequence of more than one item is not > > allowed as the value of item $foo" > > > > This is because variable $foo contains two strings, > > beware of the difference between a text node and a string. > The content of your variable constructs a sequence of two > text nodes. It then tries to cast these to a string as that's > what you specified in the as attribute and that fails. > > This would work: > > <xsl:variable name="foo" as="xs:string"> > <xsl:value-of>abc<xsl:value-of > select="'def'"/></xsl:value-of> </xsl:variable> Ahh ok, I will have to read up on <xsl:value-of/> - the only place I've seen this before is wd-xsl, looks odd now. [snip] > > > > Is it really the case that we will have to be very aware of > how many > > items we are creating > > Welcome to the wonderful world of strict type checking:-) > Often as not the only reason for using an as attribute is to > generate an error on code that would otherwise work as you > want to trap user-errors earlier rather than rely on implicit > conversions. So if you say as="xs:string" you are saying that > you want exactly one string, so if you give it a sequence of > two things you error. This is either a good thing or a bad > thing, depending on whether, at heart, you are a lisp > programmer or a pascal one:-) The goal of specifying as="xs:string" is to prevent the unnecessary contruction of a document node. I'm trying to remove all implicit type conversions and keep the types as restrictive as possible, mainly because it's good practice but also for the performance benefits. I think because it's type
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] A sequence of more than o, David Carlisle | Thread | Re: [xsl] A sequence of more than o, David Carlisle |
Re: [xsl] A sequence of more than o, David Carlisle | Date | RE: [xsl] A sequence of more than o, Andrew Welch |
Month |