[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message]

Re: apply-templates repeats inside xsl:for-each, why

Subject: Re: apply-templates repeats inside xsl:for-each, why
From: "Syd Bauman s.bauman@xxxxxxx" <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx>
Date: Mon, 16 Jun 2014 01:03:41 -0000
Re:  apply-templates repeats inside xsl:for-each
Well, without seeing at least the code that matches <concept> and
the portion of the input that has <concept>, it's hard to impossible
to say. But my first guess would be that the code that matches
<concept id="unique_2"> generates one line of output for each
<platform>.

But a few odd things jump to mind:
 
 * It would seem there is both a <platform> and a <concept> with
   id=unique_2. While not necessarily invalid, most of us think of
   the id= attribute as an ID attribute, and thus necessarily
   unique. But even if your schema (unwisely, I daresay) permits
   values of id= to be non-unique, it seems terribly misleading to
   say in the value it self that it is unique, when it's not.

 * The predicate "[@id = @id]" will never return false, and thus
   seems a bit silly. (Perhaps you meant "[@id = $id]"? I've made
   that mistake :-)

> I'm running xsl:for-each on a variable $platforms that holds this:
> 
>        <platform name="windows_xp" id="unique_2"/>
>        <platform name="windows_vista" id="unique_35"/>
>        <platform name="windows_7" id="unique_37"/>
> 
> The following code produces the same output 3 times for each node in 
> $platforms:
> 
>          <xsl:for-each select="$platforms/platform">
>            <xsl:apply-templates select="$root-of-input-file/map/concept/concept[@id = @id]"/>
>          </xsl:for-each>
> 
> So in the output I get this kind of thing:
> 
> Windows XP
> Windows Vista
> Windows 7
> Windows XP
> Windows Vista
> Windows 7
> Windows XP
> Windows Vista
> Windows 7
> 
> I was expecting to get one output for each element in
> $platforms. If I use the following outside of xsl:for-each, I get
> one output:
> 
> <xsl:apply-templates select="$root/map/concept/concept[@id = 'unique_2']"/>
> 
> What am I missing?

Current Thread

PURCHASE STYLUS STUDIO ONLINE TODAY!

Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced!

Buy Stylus Studio Now

Download The World's Best XML IDE!

Accelerate XML development with our award-winning XML IDE - Download a free trial today!

Don't miss another message! Subscribe to this list today.
Email
First Name
Last Name
Company
Subscribe in XML format
RSS 2.0
Atom 0.3
Site Map | Privacy Policy | Terms of Use | Trademarks
Free Stylus Studio XML Training:
W3C Member
Stylus Studio® and DataDirect XQuery ™are products from DataDirect Technologies, is a registered trademark of Progress Software Corporation, in the U.S. and other countries. © 2004-2013 All Rights Reserved.