xsl-list
[Top] [All Lists]

xslt2 complex content sequences

2005-09-05 08:44:02

What's the simplest XSLT 2 equivalent of the Xquery

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

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>
--~--



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