Subject: Re: [xsl] CSV output - select using xpath in variable From: Nick Leaton <nickle@xxxxxxxxx> Date: Fri, 11 Jun 2010 09:02:07 +0100 |
Thanks. I'll have a look at evaulate. At least 2.0 fixed the select from a parameter e.g. $message/trade/instrument and you don't have to use a node set function! :-) Nick On Fri, Jun 11, 2010 at 8:58 AM, Imsieke, Gerrit, le-tex <gerrit.imsieke@xxxxxxxxx> wrote: > Dear Nick, > > dynamic evaluation of XPath expressions is not (yet?) available in standard > XSLT 2. Have you looked at saxon:evaluate? > http://www.saxonica.com/documentation/extensions/functions/evaluate.html > > Gerrit > > > On 11.06.2010 09:48, Nick Leaton wrote: >> >> I'm trying to get a variant on the XSLT cookbook template to output csv >> >> >> http://books.google.co.uk/books?id=6q50V7oykqEC&lpg=PP1&pg=PA240#v=onepage&q= delimiter&f=false >> >> Page 240-241 >> >> It uses XSLT 2.0 and parts of it are quite neat. >> >> I like the idea of importing a generic module, and then defining the >> columns to export in the importing module. >> >> I want to extend it to hand different delimiters, in the same way, and >> also different line terminators. >> >> The next extension is correctly quoting the output if it containts >> quotes in strings etc. >> >> So far, I can do this. >> >> However, there is one problem I can't solve. >> >> My input data is not regular, but CSV output needs to be regular. So I >> want to defined the column names like this >> >> <xsl:variable >> name="columns" >> select=" >> 'trade', >> 'trade', >> 'currency', >> 'isin' >> " >> as="xs:string*" >> /> >> >> and the path names to get the data like this >> >> >> <xsl:variable >> name="nodepaths" >> select=" >> 'tradeid', >> 'trader', >> 'currency', >> 'instrument/isin' >> " >> as="xs:string*" >> /> >> >> The interesting part is the isin. To get the path from the input >> fragment, it is an xpath. >> >> So if I had >> >> <xsl:variable name="path" select="instrument/isin" as="xs:string"/> >> >> and >> >> <xsl:variable name="message"> >> <message> >> <trade> >> <tradeid>1</tradeid> >> <trader>Nick</trader> >> <currency>USD</currency> >> <instrument> >> <isin>US0123456789</isin> >> </instrument> >> <trade> >> </message> >> <xsl:variable> >> >> I want to do something like >> >> <xsl:value-of select="$message/$path"/> >> >> and have it return US0123456789 >> >> What's the best way? >> >> -- >> Nick >> > > -- > Gerrit Imsieke > Geschdftsf|hrer / Managing Director > le-tex publishing services GmbH > Weissenfelser Str. 84, 04229 Leipzig, Germany > Phone +49 341 355356 110, Fax +49 341 355356 510 > gerrit.imsieke@xxxxxxxxx, http://www.le-tex.de > > Registergericht / Commercial Register: Amtsgericht Leipzig > Registernummer / Registration Number: HRB 24930 > > Geschdftsf|hrer: Gerrit Imsieke, Svea Jelonek, > Thomas Schmidt, Dr. Reinhard Vvckler > > -- Nick
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] CSV output - select using, Imsieke, Gerrit, le- | Thread | Re: [xsl] CSV output - select using, Imsieke, Gerrit, le- |
Re: [xsl] CSV output - select using, Imsieke, Gerrit, le- | Date | Re: [xsl] CSV output - select using, Imsieke, Gerrit, le- |
Month |