Re: [xsl] Param Element

Subject: Re: [xsl] Param Element
From: Karl Stubsjoen <kstubs@xxxxxxxxx>
Date: Thu, 2 Jun 2005 21:59:13 -0700
Sorry : )

Structure is:

<in_proc>
 <row />
 <row />
 ...
</in_proc>

On 6/2/05, Michael Kay <mike@xxxxxxxxxxxx> wrote:
> > Michael:  the content of the source xml is the persisted state of the
> > supplied xm data param.
>
> That tells me absolutely nothing about the structure of either.
>
> Let's be concrete. Is the outermost element of your source XML caled <row>
> or is it called <in_proc>? If it's called <row> then I can point to one set
> of errors in your stylesheet, if it's called <in_proc> then I can point to
a
> different set. It's possible that your stylesheet is written to allow it to
> be either, but that seems unlikely.
>
> Michael Kay
> http://www.saxonica.com/
>
>
> xm data param may or may not contain new
> > data.  This data is appended to the xml source when it is new.  There
> > is an id column named "activityid" which allows me a guarantee of
> > unique matches.
> >
> >
> >
> >
> > On 6/2/05, David Carlisle <davidc@xxxxxxxxx> wrote:
> > >
> > >   It is working...
> > >
> > > This seems unlikely.
> > >
> > >   I'm still a little confused on the parm(s) but no worries!
> > >
> > >   On 6/2/05, Karl Stubsjoen <kstubs@xxxxxxxxx> wrote:
> > >   > 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>
> > >   >
> > >   >
> > >
> > >
> > >  <xsl:apply-templates select="row"/>
> > >  <xsl:template match="row">
> > >  <xsl:copy-of select="."/>
> > >  </xsl:template>
> > >
> > > is equivalent (but slower, probably) to
> > > <xsl:copy-of select="row"/>
> > > it just copies all the row elements. In this case however it prduces
> > > nothing as there are no row element children of the current
> > node (the
> > > only child of / is a in_proc element (I guess, you have not
> > shown your
> > > input format)
> > >
> > >  <xsl:if test="$current_id = $activity_id">
> > > this test is always true (given the default value of $xm)
> > as $current_id
> > > is an attribute node from the set $activity_id
> > > Even if you supply an xm parameter so that the tests may be false,
> > >
> > >  <xsl:apply-templates select="$xm/row" mode="append"/>
> > >  <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>
> > >
> > > is equivalent to
> > >
> > > <xsl:copy-of select="$xm/row[@id = $activity_id]"/>
> > >
> > > 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