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 |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] Creating a classification, Thomas Stone | Thread | Re[2]: [xsl] Creating a classificat, Alexey Nickolaenkov |
Re: [xsl] Separate same level eleme, Spencer Tickner | Date | Re[2]: [xsl] Creating a classificat, Alexey Nickolaenkov |
Month |