RE: [xsl] Infinite Loop when param empty

Subject: RE: [xsl] Infinite Loop when param empty
From: "Karl J. Stubsjoen" <karl@xxxxxxxxxxxxxxxxxxxx>
Date: Fri, 23 Jul 2004 07:52:56 -0700
>It depends. Why do you want to give the parameter a default value? Do you
>want the default to be different from any value that the user could supply?
>What are you actually trying to achieve?

There parameter is to be interpreted as a node set.  Without some form of a
select this fails.  Typically, I have just used select="/" but now know that
I don't want to do this.

>means "use the value of x supplied by the caller; if the caller didn't
>supply a value, use the root node of the principal source document." It's
>perfectly legitimate to do that, I just find it hard to imagine a situation
>where it would be useful.

I would NEVER want a parameter to be the result of the prinicpal source
document if the user did not supply the parameter.  I would ALWAYS want the
parameter to default to an EMPTY node set if none was supplied.

>Michael Kay

So then, best practice?  Would this be:
<xsl:param name="ENTRY_TEMPLATE" select="/.."/>

Again, without some form of a select, the tranformation will fail.  If I had
just:
<xsl:param name="ENTRY_TEMPLATE" />

..and actually I think all node tests would fail even if a valid xml source
was supplied to the above parameter.  Example:

<xsl:apply-templates select="$ENTRY_TEMPLATE"/>  (would fail??).

Karl

-----Original Message-----
From: Michael Kay [mailto:mhk@xxxxxxxxx]
Sent: Friday, July 23, 2004 6:48 AM
To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
Subject: RE: [xsl] Infinite Loop when param empty


>
> Woah!  That went way over my head Michael.
> So, in the example below It would be more standard to (as
> suggested by Dave
> and Wendell):
>
> <xsl:param name="ENTRY_TEMPLATE" select="/.."/>
>

It depends. Why do you want to give the parameter a default value? Do you
want the default to be different from any value that the user could supply?
What are you actually trying to achieve?

If the parameter is global, then

<xsl:param name="x" select="/"/>

means "use the value of x supplied by the caller; if the caller didn't
supply a value, use the root node of the principal source document." It's
perfectly legitimate to do that, I just find it hard to imagine a situation
where it would be useful.

Michael Kay

Current Thread