Subject: Re: [xsl] function returning string with string-join() From: Hermann Stamm-Wilbrandt <STAMMW@xxxxxxxxxx> Date: Fri, 6 Aug 2010 17:15:44 +0200 |
> concat('NO', ('x',$input)[($input = (1,2)) +1], '.html') looks interesting, but ... $ java -jar ~/Desktop/saxon/saxon9he.jar -xsl:ifn.xsl -s:3.xml Error on line 29 of ifn.xsl: XPTY0004: Arithmetic operator is not defined for arguments of types (xs:boolean, xs:integer) in built-in template rule Transformation failed: Run-time errors were reported $ tail -6 ifn.xsl <xsl:template match="*"> <xsl:variable name="input" select="."/> <xsl:value-of select="concat('NO', ('x',$input)[($input = (1,2)) +1], '.html')"/> </xsl:template> </xsl:stylesheet> $ Mit besten Gruessen / Best wishes, Hermann Stamm-Wilbrandt Developer, XML Compiler, L3 WebSphere DataPower SOA Appliances ---------------------------------------------------------------------- IBM Deutschland Research & Development GmbH Vorsitzender des Aufsichtsrats: Martin Jetter Geschaeftsfuehrung: Dirk Wittkopp Sitz der Gesellschaft: Boeblingen Registergericht: Amtsgericht Stuttgart, HRB 243294 From: Dimitre Novatchev <dnovatchev@xxxxxxxxx> To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx Date: 08/06/2010 03:44 PM Subject: Re: [xsl] function returning string with string-join() concat('NO', ('x',$input)[($input = (1,2)) +1], '.html') -- 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 ------------------------------------- You've achieved success in your field when you don't know whether what you're doing is work or play On Fri, Aug 6, 2010 at 5:37 AM, ac <ac@xxxxxxxxxxxxx> wrote: > > Hi, > > I would have done this one simply as > ... > <xsl:sequence select="string-join (('NO', if (string($input)) then string ($input) else 'x', ',html'), '')"/> > ... > with the feeling that string-join() is typically faster than concat() and string() faster than set operation with predicates, and that the overall instruction is easier to read and understand > > Am I right? > > Cheers, > ac > > > > >> Am 06.08.2010 um 11:15 schrieb Andrew Welch: >> >> >>> >>> When returning atomics (such as xs:string) you should use xs:sequence >>> and not xsl:value-of, as value-of will create a text node that then >>> gets "atomized" to an atomic. >>> >> >> Thanks for that reminder... xsl:for-each-group and regular expressions are well settled in my XSLT2 mind-set, but xsl:sequence is more or less ignored. >> >> >>> >>> If you didnt have the xsl:message call you could do: >>> >>> <xsl:function name="my:filename" as="xs:string"> >>> <xsl:param name="input" as="xs:integer" /> >>> <xsl:sequence select="concat(if ($input = (1,2)) then ('NO1', >>> 'NO2')[$input] else 'NOx', '.html')"/> >>> </xsl:function> >>> >> >> Yes, if... >> >> I still try to find the best balance between writing some complex, possibly hard to debug multi-line XPath expressions or a tree of XSLT elements. Haven't found a general rule for that, and maybe there isn't. >> >> Thanks a lot, >> >> - Michael
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] function returning string, Dimitre Novatchev | Thread | Re: [xsl] function returning string, Dimitre Novatchev |
Re: [xsl] function returning string, Dimitre Novatchev | Date | Re: [xsl] question about generate-i, Dave Pawson |
Month |