Re: [xsl] XSL For-Each Help!

Subject: Re: [xsl] XSL For-Each Help!
From: Wendell Piez <wapiez@xxxxxxxxxxxxxxxx>
Date: Tue, 18 Jul 2006 11:05:42 -0400
Rusty,

These turned out to be pretty simple errors to make (and fix):

At 07:06 PM 7/17/2006, you wrote:
<xsl:key name="itemsbydistributor"
match="ItemAsSold[CanOrderFlag='true'][CanShipFlag =
'true']" use="DistributorCode"/>

In your data (as posted yesterday), the elements in the predicates are CanOrder and CanShip, without "Flag" appended.


--then down within the XSL file i have----:
<xsl:variable name="distributorVal">
<!-- only process distributorCodes if canShip and
canOrder are both true -->
   <xsl:for-each
select="//DistributorCode[generate-id(parent::ItemAsSold)=generate-id(key('itemsbydistributor',current())[1])
]">

Here, you want generate-id(key('itemsbydistributor',.)[1], no "current()". If that was my error, I apologize. :-) (If this is a global variable, current() is probably returning the root node. You want the value of the DistributorCode.


<xsl:value-ofselect="DistributorCode"/>

Here you want value-of select=".", since the context is already the DistributorCode.


Alternatively, you could select
 //ItemAsSold[generate-id()=generate-id(key('itemsbydistributor',DistributorCode)[1])]

and then get the value of its DistributorCode.

I hope that helps.

Do you get the concept, anyhow?

Cheers,
Wendell

Current Thread