Re: [xsl] Creating a classification hierarcy by using XSLT to nest similarly named elements

Subject: Re: [xsl] Creating a classification hierarcy by using XSLT to nest similarly named elements
From: Chris Coyle <chriscoyle@xxxxxxxxx>
Date: Sat, 20 Jan 2007 05:17:18 -0800 (PST)
Thanks, Thomas.  This is almost exactly what I need.

Since "CATEGORY" will always be the most general (or
root level) in my classification scheme, my
<xsl:template match="EntityData"> needs to be more
speicific.  I believe I should only match when
<xsl:template match="EntityData"> AND <Attribute
name="CLASSIFICATION_LEVEL" type="string"> is equal to
"CATEGORY".

Can you tell me how to express this?

Gratefully,
Chris


--- Thomas Stone <tjbooker@xxxxxxxxxxxxxx> wrote:

> > ----- Original Message -----
> > From: "Chris Coyle" <chriscoyle@xxxxxxxxx>
> > So far, I have the following for my XSLT
> stylesheet:
> 
> >       <xsl:apply-templates
> select="//Transaction/Response"/>
> ...
> >   <xsl:template match="Response">
> >    <xsl:for-each
> select="MasterCatalogRecord/EntityData">
> 
>    Thanks for you question.  It would seem that you
> are looking for the EntityData records and not the
> Response records.  Using a template to respond to
> that particular record will be clearer.
> 
>    <xsl:apply-templates
>
select="//Transaction/Response/MasterCatalogRecord/EntityData">
> ...
> <xsl:template match="EntityData"> 
> 
> 
> > In order to achieve the nesting of elements I
> desire,
> > I believe I need to use recursion.  I just don't
> know
> > how to express it im my stylesheet.  Any
> suggestions
> > will be greatly appreciated.
> 
> 
>    This looks similar to a "self-join" database
> query.  You are selecting a main EntityData record
> and displaying it then finding that record's
> sub-EntityData record.  This would be much more
> efficient pulling from a database with indexes than
> after-the-fact in XML.  But that's a different
> forum;-)
> 
>    Your recursion is apparently one level deep, but
> the template doesn't have to know that!  Your
> apply-templates query needs to select your main
> records that do not have any parent-EntityData
> records.  I assume that this would be the
> CLASSIFICATION_ID Attribute entities with only a
> two-character string.
> 
> <xsl:apply-templates
>
select="//Transaction/Response/MasterCatalogRecord/EntityData[string-length(Attribute[@name='CLASSIFICATION_ID'])=2]"/>
> 
> 
>    Within your template, which now matches
> "EntityData", you will open the record tag and put
> out attributes to it.  Then, before you close the
> record tag, insert the following two lines to select
> this record's sub-EntityData records.
> 
> <xsl:variable name="main_id"
> select="Attribute[@name='CLASSIFICATION_ID']"/>
>         
> <xsl:apply-templates
>
select="//Transaction/Response/MasterCatalogRecord/EntityData[starts-with(Attribute[@name='CLASSIFICATION_ID'],$main_id)
> and
> string-length(Attribute[@name='CLASSIFICATION_ID'])
> > string-length($main_id)]"/>
> 
> 
> 
> -- 
> ___________________________________________________
> Search for products and services at:
> http://search.mail.com
> 
> 



 
____________________________________________________________________________________
It's here! Your new message!  
Get new email alerts with the free Yahoo! Toolbar.
http://tools.search.yahoo.com/toolbar/features/mail/

Current Thread