xsl-list
[Top] [All Lists]

Re: [xsl] recreate apply-templates using a function

2012-02-12 10:43:51
What's the issue there?

It should really have have a return type of item()*, and the param
should really be called 'node-list' rather than 'context':

<xsl:function name="f:apply-templates" as="item()*">
  <xsl:param name="node-list" as="node()*"/>
  <xsl:apply-templates select="$node-list/>
</xsl:function>

anything else?


One possible issue is that people may want the results to correspond
to the sequence order of the argument.

This could be "assured" if you use:

<xsl:for-each select="$node-list">
  <xsl:apply-templates select="."/>
</xsl:for-each>

However, if you use this apply() function in:

/a/b/f:apply()

the results will be deduplicated and sorted in document order. If new
nodes are created, their order will be unpredictable
(implementation-dependent).

It is still OK to use such a function within an XPath expression if
order and deduplication don't matter, though.


Cheers,
Dimitre

On Sun, Feb 12, 2012 at 8:30 AM, Andrew Welch 
<andrew(_dot_)j(_dot_)welch(_at_)gmail(_dot_)com> wrote:
Hi Dimitre,

On 12 February 2012 15:48, Dimitre Novatchev 
<dnovatchev(_at_)gmail(_dot_)com> wrote:
On Sun, Feb 12, 2012 at 5:24 AM, Andrew Welch 
<andrew(_dot_)j(_dot_)welch(_at_)gmail(_dot_)com> wrote:
If you needed to call apply-templates using a function call (say as
part of an xpath) any reason why this wouldn't be fine:

<xsl:function name="f:apply-templates" as="node()*">
   <xsl:param name="context" as="node()*"/>
   <xsl:apply-templates select="$context"/>
</xsl:function>

with:

<xsl:sequence select="f:apply-templates(child::node())"/>

(ignoring modes and params etc)

Seems ok to me...

Except when you use it as the second operand of the / operator.

What's the issue there?

It should really have have a return type of item()*, and the param
should really be called 'node-list' rather than 'context':

<xsl:function name="f:apply-templates" as="item()*">
  <xsl:param name="node-list" as="node()*"/>
  <xsl:apply-templates select="$node-list/>
</xsl:function>

anything else?

--
Andrew Welch
http://andrewjwelch.com

--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: 
<mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--




-- 
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
-------------------------------------
To avoid situations in which you might make mistakes may be the
biggest mistake of all
------------------------------------
Quality means doing it right when no one is looking.
-------------------------------------
You've achieved success in your field when you don't know whether what
you're doing is work or play
-------------------------------------
Facts do not cease to exist because they are ignored.
-------------------------------------
I finally figured out the only reason to be alive is to enjoy it.

--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--