|
Subject: RE: [xsl] user functions with variable number of parameters From: "G. Ken Holman" <gkholman@xxxxxxxxxxxxxxxxxxxx> Date: Sun, 10 Aug 2008 09:10:45 -0400 |
Not quite what I want, need a little more logic. I've ALMOST got it now. I've figured out that I can just use a normal untyped parameter, pass it as a set, such as:
fn:myconcat(('abc', '123', 'def'))
In the function figured out to use for-each on the parameter, but now trying to figure out how to tell which element # I'm on inside the for-each, especially to detect the last item. Also need to discard the 'current' item if it's empty, which I can't quite get.
T:\ftemp>type chris.xsl <?xml version="1.0" encoding="US-ASCII"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xsd="http://www.w3.org/2001/XMLSchema" exclude-result-prefixes="xsd" xmlns:c="urn:x-Chris" version="2.0">
<xsl:template match="/">
<xsl:value-of select="c:mysequence(('abc', '123', 'def'))"/>
<xsl:text>
</xsl:text>
<xsl:value-of select="c:myconcat(('abc', '123', 'def'))"/>
</xsl:template><xsl:function name="c:mysequence"> <xsl:param name="args"/>
<xsl:for-each select="$args">
<xsl:choose>
<xsl:when test=". castable as xsd:decimal">
<xsl:sequence select="xsd:decimal(.) * 2"/>
</xsl:when>
<xsl:when test="position()=last()">
<xsl:sequence select="concat(.,.)"/>
</xsl:when>
<xsl:otherwise>
<xsl:sequence select="."/>
</xsl:otherwise>
</xsl:choose>
</xsl:for-each>
</xsl:function><xsl:function name="c:myconcat"> <xsl:param name="args"/>
<xsl:for-each select="$args">
<xsl:choose>
<xsl:when test=". castable as xsd:decimal">
<xsl:value-of select="xsd:decimal(.) * 2"/>
</xsl:when>
<xsl:when test="position()=last()">
<xsl:value-of select="concat(.,.)"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="."/>
</xsl:otherwise>
</xsl:choose>
</xsl:for-each>
</xsl:function></xsl:stylesheet> T:\ftemp>xslt2 chris.xsl chris.xsl con abc 246 defdef abc246defdef T:\ftemp>
-- Upcoming XSLT/XSL-FO hands-on courses: Wellington, NZ 2009-01 World-wide corporate, govt. & user group XML, XSL and UBL training RSS feeds: publicly-available developer resources and training G. Ken Holman mailto:gkholman@xxxxxxxxxxxxxxxxxxxx Crane Softwrights Ltd. http://www.CraneSoftwrights.com/s/ Box 266, Kars, Ontario CANADA K0A-2E0 +1(613)489-0999 (F:-0995) Male Cancer Awareness Nov'07 http://www.CraneSoftwrights.com/s/bc Legal business disclaimers: http://www.CraneSoftwrights.com/legal
| Current Thread |
|---|
|
| <- Previous | Index | Next -> |
|---|---|---|
| RE: [xsl] user functions with varia, Bordeman, Chris | Thread | [xsl] RE: user functions with varia, Tony Nassar |
| RE: [xsl] user functions with varia, Bordeman, Chris | Date | Re: [xsl] Create xml file with recu, Mukul Gandhi |
| Month |