Subject: Re: [xsl] How to store a sequence into an element ... andmaintainthe sequence inside the element? From: "Dimitre Novatchev dnovatchev@xxxxxxxxx" <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx> Date: Sun, 19 Jul 2020 22:43:43 -0000 |
> Dimitre, I am trying to avoid the overhead of markup. In matrices I don't want the overhead that markup incurs. Instead, I want plain old sequences. Liam talked about this in a post last week. Great. Then just use arrays or maps. I was under the impression that you wanted to **store** permanently the list and this is why you had to make it part of an XML document. So, the question is: how would the permanent storage representation of the list/matrice data be chosen. On Sun, Jul 19, 2020 at 3:21 PM Dr. Roger L Costello costello@xxxxxxxxx < xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx> wrote: > Michael, upon further reflection I realized that what you are saying is to > replace this markup: > > <Document> > <Greeting>My List</Greeting> > <List><xsl:sequence select="$list" /></List> > <Ending>The End</Ending> > </Document> > > with a map: > > <xsl:variable name="Document" as="map(xs:string, item()*)"> > <xsl:map> > <xsl:map-entry key="'Greeting'" select="('My List')"/> > <xsl:map-entry key="'List'" select="(1,2,3)"/> > <xsl:map-entry key="'Ending'" select="('The End')"/> > </xsl:map> > </xsl:variable> > > My application will process the map rather than markup. Neat! > > Dimitre, I am trying to avoid the overhead of markup. In matrices I don't > want the overhead that markup incurs. Instead, I want plain old sequences. > Liam talked about this in a post last week. > > /Roger > > -----Original Message----- > From: Dr. Roger L Costello costello@xxxxxxxxx < > xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx> > Sent: Sunday, July 19, 2020 5:26 PM > To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx > Subject: [EXT] Re: [xsl] How to store a sequence into an element ... > andmaintainthe sequence inside the element? > > Hello Michael, > > Ah, so I think what you are saying is that I could store the sequence in a > map and then overwrite the sequence that is in the map. Something like this: > > <xsl:variable name="list" as="map(xs:string, xs:integer*)"> > <xsl:map> > <xsl:map-entry key="'li'" select="(1,2,3)"/> > </xsl:map> > </xsl:variable> > ... do some processing and then update the list ... > <xsl:variable name="list" select="map:put($list, 'li', (4,1,5))"/> > ... do some more processing and then update the list ... > <xsl:variable name="list" select="map:put($list, 'li', (9,9,0))"/> > ... do some more processing and then update the list ... > > Right? > > /Roger > > From: Michael Kay mike@xxxxxxxxxxxx < > xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx> > Sent: Sunday, July 19, 2020 4:58 PM > To: xsl-list <xsl-list@xxxxxxxxxxxxxxxxxxxxxx> > Subject: [EXT] Re: [xsl] How to store a sequence into an element ... and > maintainthe sequence inside the element? > > 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 mailto:costello@xxxxxxxxx > <mailto: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 > > http://www.mulberrytech.com/xsl/xsl-list > http://lists.mulberrytech.com/unsub/xsl-list/673357 () > > -- Cheers, Dimitre Novatchev --------------------------------------- Truly great madness cannot be achieved without significant intelligence. --------------------------------------- To invent, you need a good imagination and a pile of junk ------------------------------------- Never fight an inanimate object ------------------------------------- To avoid situations in which you might make mistakes may be the biggest mistake of all ------------------------------------ Quality means doing it right when no one is looking. ------------------------------------- You've achieved success in your field when you don't know whether what you're doing is work or play ------------------------------------- To achieve the impossible dream, try going to sleep. ------------------------------------- Facts do not cease to exist because they are ignored. ------------------------------------- Typing monkeys will write all Shakespeare's works in 200yrs.Will they write all patents, too? :) ------------------------------------- Sanity is madness put to good use. ------------------------------------- I finally figured out the only reason to be alive is to enjoy it.
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] How to store a sequence i, Dr. Roger L Costello | Thread | [xsl] [ANN] Balisage: The Markup Co, B Tommie Usdin btusd |
Re: [xsl] How to store a sequence i, Dr. Roger L Costello | Date | Re: [xsl] How to store a sequence i, Mukul Gandhi gandhi. |
Month |