Subject: Re: [xsl] function returning string with string-join() From: Dimitre Novatchev <dnovatchev@xxxxxxxxx> Date: Fri, 6 Aug 2010 09:58:48 -0700 |
> looks interesting, but ... Yes, I mixed XPath 1.0 and XPath 2.0. The correct XPath 2.0 expression is: concat('NO', ('x',$input)[number($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 8:15 AM, Hermann Stamm-Wilbrandt <STAMMW@xxxxxxxxxx> wrote: > > > B 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: > B XPTY0004: Arithmetic operator is not defined for arguments of types > (xs:boolean, xs:integer) > B in built-in template rule > Transformation failed: Run-time errors were reported > $ tail -6 ifn.xsl > <xsl:template match="*"> > B <xsl:variable name="input" select="."/> > B <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: B B B Dimitre Novatchev <dnovatchev@xxxxxxxxx> > To: B B B B xsl-list@xxxxxxxxxxxxxxxxxxxxxx > Date: B B B 08/06/2010 03:44 PM > Subject: B B Re: [xsl] function returning string with string-join() > > > > B 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: > >>> > >>> B B <xsl:function name="my:filename" as="xs:string"> > >>> B B B B <xsl:param name="input" as="xs:integer" /> > >>> B B B B <xsl:sequence select="concat(if ($input = (1,2)) then ('NO1', > >>> 'NO2')[$input] else 'NOx', '.html')"/> > >>> B B </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, Hermann Stamm-Wilbra | Thread | Re: [xsl] function returning string, Hermann Stamm-Wilbra |
Re: [xsl] question about generate-i, G. Ken Holman | Date | [xsl] Katakana substitution regex, Hoskins & Gretton |
Month |