- From: Dimitre Novatchev <dnovatchev@gmail.com>
- Date: Sat, 9 Jan 2021 11:19:56 -0800
- To: Michael Kay <mike@saxonica.com>, public-xslt-40@w3.org
- Message-ID: <CAK4KnZcqT0dT+CJqckmAB5pjmZZH4smW5qtGyOXPAeknDq7-7Q@mail.gmail.com>
On Sat, Jan 9, 2021 at 11:15 AM Dimitre Novatchev <dnovatchev@gmail.com> wrote: > On Sat, Jan 9, 2021 at 9:39 AM Michael Kay <mike@saxonica.com> wrote: > >> > >> > Why not just: >> > >> > <xsl:array select ="{expressionProducingAnArray}"/> >> > >> >> >> Constructing an array when you need to invoke xsl:apply-templates as part >> of the array construction is very inconvenient at present, and that's a >> common requirement when transforming XML to JSON. >> >> Also, there's no easy way in XPath of constructing a completely general >> array: the [...] constructor only works if the size of the array is known >> statically, and the array{...} constructor only works if each member of the >> array is a singleton. >> > > Then something like this: > > <xsl:array member-constructor="{ Function taking an xs:integer as > argument and producing item()* }"/> > > And with risk to open a can of worms here, why not (just the name of the > attribute!): > > <xsl:array member-generator="{ Function (generator) taking an xs:integer > as argument and producing item()* }"/> > > The generator can be formally defined to be array-variadic, thus, in addition to the member-index, any necessary additional parameters can be passed to it > Thanks, > Dimitre > > On Sat, Jan 9, 2021 at 9:58 AM Dimitre Novatchev <dnovatchev@gmail.com> > wrote: > >> >> >> On Sat, Jan 9, 2021 at 9:39 AM Michael Kay <mike@saxonica.com> wrote: >> >>> > >>> > Why not just: >>> > >>> > <xsl:array select ="{expressionProducingAnArray}"/> >>> > >>> >>> >>> Constructing an array when you need to invoke xsl:apply-templates as >>> part of the array construction is very inconvenient at present, and that's >>> a common requirement when transforming XML to JSON. >>> >>> Also, there's no easy way in XPath of constructing a completely general >>> array: the [...] constructor only works if the size of the array is known >>> statically, and the array{...} constructor only works if each member of the >>> array is a singleton. >>> >> >> Then something like this: >> >> <xsl:array member-constructor="{ Function taking an xs:integer as >> argument and producing item()* }"/> >> >> Thanks, >> Dimitre >> >> >> >>> Michael Kay >>> Saxonica >> >> >> >> -- >> 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. >> >> > > > -- > 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. > > -- 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.
Received on Saturday, 9 January 2021 19:20:21 UTC