That's the point Liam was making last week - XML is very text-oriented. When
you add a list of numbers to a document it gets serialized as a string. As
Martin says, you can turn it back into a sequence of numbers by validating
against a list type defined in a schema. But that's very limiting, which is why
XSLT 3.0 introduced maps and arrays.
Michael Kay
Saxonica
On 19 Jul 2020, at 20:14, Dr. Roger L Costello costello(_at_)mitre(_dot_)org
<xsl-list-service(_at_)lists(_dot_)mulberrytech(_dot_)com> wrote:
Hi Folks,
I created a sequence (1, 2, 3) as follows:
<xsl:variable name="list" select="(1, 2, 3)" as="xs:integer*" />
I checked that $list contains 3 integers:
<xsl:message>count($list) = <xsl:value-of
select="count($list)"/></xsl:message>
Sure enough, the output shows that there are 3 items:
count($list) = 3
Next, I want to store that sequence of integers in an element, along with
other elements:
<xsl:variable name="document" as="element(Document)">
<Document>
<Greeting>My List</Greeting>
<List><xsl:sequence select="$list" /></List>
<Ending>The End</Ending>
</Document>
</xsl:variable>
Does the <List> element contain a sequence of 3 integers:
<xsl:message>count($document/List) = <xsl:value-of
select="count($document/List)"/></xsl:message>
Yikes! No it doesn't:
count($document/List) = 1
How to do what I want to do? That is, how to store the sequence of integers
in an element, along with other elements, such that I can pull the sequence
out of the element and immediately operate on the sequence? If that can't be
done, then what's the right way to do what I want to do?
Here is my XSLT program:
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
version="3.0">
<xsl:template match="/">
<xsl:variable name="list" select="(1, 2, 3)" as="xs:integer*" />
<xsl:message>count($list) = <xsl:value-of
select="count($list)"/></xsl:message>
<xsl:variable name="document" as="element(Document)">
<Document>
<Greeting>My List</Greeting>
<List><xsl:sequence select="$list" /></List>
<Ending>The End</Ending>
</Document>
</xsl:variable>
<xsl:message>count($document/List) = <xsl:value-of
select="count($document/List)"/></xsl:message>
</xsl:template>
</xsl:stylesheet>
/Roger
--~----------------------------------------------------------------
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
EasyUnsubscribe: http://lists.mulberrytech.com/unsub/xsl-list/1167547
or by email: xsl-list-unsub(_at_)lists(_dot_)mulberrytech(_dot_)com
--~--