xsl-list
[Top] [All Lists]

RE: xslt2 complex content sequences

2005-09-05 10:51:05

What's the simplest XSLT 2 equivalent of the Xquery

<a>{1,2}{3}</a>

Saxon compiles this XQuery into code equivalent to:

<xsl:element name="a">
 <xsl:sequence select="1,2"/>
 <xsl:text/>
 <xsl:sequence select="3"/>
</xsl:element>

The zero-length text node disappears when added to an element, but it stops
the 2 and 3 being considered adjacent.

You could of course convert all the values to text nodes "by hand" using
xsl:value-of, which would eliminate all automatic spacing. That would seem
more natural in XSLT.

Michael Kay
http://www.saxonica.com/


Xquery (like XSLT) puts spaces between (the string value of) atomic
values when constructing element content, but doesn't put 
spaces between
enclosed expressions (which are like Attribute Value Templates, except
they work in element content as well as attributes in xquery)

So you get
<a>1 23</a>

In XSLT, obvious translations are things like

<a>
 <xsl:sequence select="1"/>
 <xsl:sequence select="2"/>
 <xsl:sequence select="3"/>
</a>

or


<a>
 <xsl:sequence select="(1,2)"/>
 <xsl:sequence select="3"/>
</a>

But these are equivalent and produce space separated:
<a>1 2 3</a>

I came up with putting in an element node to stop the automatic space
addition, then removing the extra node:

<a>
<xsl:variable name="x">
 <xsl:sequence select="1"/>
 <xsl:sequence select="2"/>
<x/>
 <xsl:sequence select="3"/>
</xsl:variable>
<xsl:copy-of select="$x/node()[not(self::x)]"/>
</a>

Which produces the right thing, but that seems a bit unnatural.
I have a feeling I've missed some construction possibility
that lets me control this spacing directly?....

David

______________________________________________________________
__________
This e-mail has been scanned for all viruses by Star. The
service is powered by MessageLabs. For more information on a proactive
anti-virus service working around the clock, around the globe, visit:
http://www.star.net.uk
______________________________________________________________
__________

--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: 
<mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--





--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--



<Prev in Thread] Current Thread [Next in Thread>