Re: [xsl] Param Element

Subject: Re: [xsl] Param Element
From: Karl Stubsjoen <kstubs@xxxxxxxxx>
Date: Thu, 2 Jun 2005 14:42:35 -0700
Here is what I have, but not confident that it is working... it seems
that my check for uniqueness is failing, I get no results.  Isn't it a
fair test to ask of a value it it exists in a set of values as I am
here:
  <xsl:if test="$current_id = $activity_id">
Where activity_id is a set of ID values as defined below..

<xsl:param name="xm" select="in_proc" />

<xsl:variable name="activity_id" select="in_proc/row/@id"/>

<xsl:template match="/">
 <in_proc>
  <xsl:apply-templates select="row"/>
  <xsl:apply-templates select="$xm/row" mode="append"/>
 </in_proc>
</xsl:template>

<xsl:template match="row">
 <xsl:copy-of select="."/>
</xsl:template>

<xsl:template match="row" mode="append">
  <xsl:variable name="current_id" select="@id"/>
  <xsl:if test="$current_id = $activity_id">
    <xsl:copy-of select="."/>
  </xsl:if>
</xsl:template>

</xsl:stylesheet>



On 6/2/05, David Carlisle <davidc@xxxxxxxxx> wrote:
>
> > One other dilemna:  in order for the transformation to not complain, I
> > have to do a select on my parameter declerations which looks like:
>
> > <xsl:param name="xm" select="/" />
>
> If you pass in a value of this parameter then the select here is not
> used, it is just a default value in case no parameter is supplied when
> the stylesheet is called.
>
>
>
> > But since the source is the exact same as the parameter xml, how does
> > the select know which source to grab from?
>
> The select is always explictly into a specified node set that node set
> will have nodes from one or more documents (usually just one).
> in this case, you have select="/" so that selects the root node ancestor
> of the current node. If this is at the top level of teh stylesheet the
> current node is the root node of the main input document, so / selects
> that node.
>
> > Also, the above causes an
> > overflow when the below transformation is processed,
>
> most likely you have programmed an infinite loop, but it's hard to say
> given the snippet you showed.
>
>
> > so would it be correct to express select as:  select="in_proc"?
> That's also correct (but dofferent of course) but still if you supply a
> value to this parameter when you run the program it doesn't matter what
> select expression you use here.
>
> The templates that you show make no use of this parameter??
>
> As written you will get a copy of the input doc except the top level
> element will be duplicated as you generate an in_proc element in the
> template for / and then apply templates to the child nodees (which is
> the in_proc element in the source) which are copied.
>
>
> David
>
> ________________________________________________________________________
> This e-mail has been scanned for all viruses by Star. The
> service is powered by MessageLabs. For more information on a proactive
> anti-virus service working around the clock, around the globe, visit:
> http://www.star.net.uk
> ________________________________________________________________________

Current Thread