Subject: Re: [xsl] How to store a sequence into an element ... and maintain the sequence inside the element? From: "Michael Kay mike@xxxxxxxxxxxx" <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx> Date: Sun, 19 Jul 2020 20:57:52 -0000 |
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@xxxxxxxxx <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx> 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
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] How to store a sequence i, Wendell Piez wapiez@ | Thread | Re: [xsl] How to store a sequence i, Dr. Roger L Costello |
Re: [xsl] How to store a sequence i, Dr. Roger L Costello | Date | Re: [xsl] How to store a sequence i, Martin Honnen martin |
Month |