Re: [xsl] Required item type of value of variable $images is element(); supplied value has item type text()

Subject: Re: [xsl] Required item type of value of variable $images is element(); supplied value has item type text()
From: "Martynas Jusevičius martynas@xxxxxxxxxxxxx" <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx>
Date: Sun, 31 Mar 2019 21:56:57 -0000
I used Gerrit's example #3 and it works great. Thank you both.

On Sun, Mar 31, 2019 at 10:25 PM Michael Kay mike@xxxxxxxxxxxx
<xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx> wrote:
>
> If the template that's invoked returns text nodes, then the type check
as="element()*" is going to fail. (The function conversion rules are invoked,
but removal of whitespace text nodes isn't a conversion that ever happens). If
you want to filter out whitespace text nodes, you'll have to do it
explicitly.
>
> Michael Kay
> Saxonica
>
> > On 31 Mar 2019, at 20:00, Martynas JuseviD
ius martynas@xxxxxxxxxxxxx
<xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx> wrote:
> >
> > Hi,
> >
> > I have a simple snippet like this
> >
> >        <xsl:variable name="images" as="element()*">
> >            <xsl:apply-templates mode="ac:image"/>
> >        </xsl:variable>
> >
> > Sometimes the ac:image templates will return an <img> element,
> > sometimes nothing.
> >
> > In the case where there are no elements in the variable, I get an error
> >
> >    Required item type of value of variable $images is element();
> > supplied value has item type text()
> >
> > When I output the text, it's just whitespace.
> >
> > The element() cardinality is *, so why can't the processor just
> > suppress the whitespace and treat the variable content as zero
> > elements?
> >
> > The processor is Saxon-CE BTW.
> >
> > Martynas
> > atomgraph.com

Current Thread