xsl-list
[Top] [All Lists]

Re: [xsl] Simple template matching problem

2007-05-07 14:18:09
I have a problem with the below templates. The first template
*ideally* displays a bunch of input fields, based on the table's
structure as defined by $invTable.

The second template *ideally* creates a single form control (there are
several besides 'varchar'/'float')

My problem is that when the top template is "Records/Record" I'm
getting infinite recursion loop. When I use match "Records" all is
fine. I suspect its because of a template mismatch.

<xsl:template match="Records/Record">
   <xsl:apply-templates select="$invTable[COLUMN_NAME='beginDate']">
            <xsl:with-param name="value" select="//beginDate" />
   </xsl:apply-templates>
</xsl:template>

<xsl:template match="Record[DATA_TYPE='varchar' or DATA_TYPE='float']">
   <appropriateInputBox />
</xsl:template>


Variable $invTable uses select="document('xml.xml')/Records/Record" on
the following XML.

xml.xml

<Records>
  <Record>
     <COLUMN_NAME>beginDate</COLUMN_NAME>
     <DATA_TYPE>varchar</DATA_TYPE>
  </Record>
</Records>

On 5/7/07, Abel Braaksma <abel(_dot_)online(_at_)xs4all(_dot_)nl> wrote:
Steve wrote:
> I want a template to match the root node of either default.xml or
> record.xml
>
> Right now it only succesfully matches record.xml
>
> default.xml
>
> <root>
>   <stuff />
> </root>
>
> record.xml
>
> <Records>
>   <Record />
> </Records>
>
> Current xsl:
>
> <xsl:template match="root | Records">
>  hey, hey. We are, in fact, the monkeys.
> </xsl:template>

I suppose you are missing something like:

<xsl:apply-templates select="document('record.xml')/*" />

the match itself in your code is correct for either. Can you send
something more of your code? In addition, look through your stylesheet
for something like match="/Records" or something like
match="Records[(_at_)id]" which both may have a higher precedence which can
be a reason for not matching 'Records' in the first place.

Another way to try your code is (carefully) replacing your
apply-templates with copy-of to see if you really select something in
apply-templates, or that you have some error in the namespace prefix,
the absence of one, or anything else that can be a cause of
non-selection (missing CamelCase?).

Cheers,
-- Abel

--~------------------------------------------------------------------
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>
--~--



--~------------------------------------------------------------------
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>
--~--