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
|