|
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 |