[xsl] XSL Problem

Subject: [xsl] XSL Problem
From: "Dale Earnest" <dale.earnest@xxxxxxxxxxxxxxxxxxxxxxx>
Date: Tue, 10 Aug 2004 20:01:23 -0400
I've run into a difficult xslt problem and I was hoping someone may have some
insight.

I have an XML structure that looks like this (the '...'s represent nodes that
aren't directly relevant to the question and are omitted):

<PersAutoInsurance>
 <PersVeh>
  ...
  <AdditionalInterest>
    <AdditionalInterestInfo>
    <NatureInterestCd>ADDIN</NatureInterestCd>
   </AdditionalInterestInfo>
  </AdditionalInterest>
  <AdditionalInterest>
   ...
   <AdditionalInterestInfo>
    <NatureInterestCd>LIEN</NatureInterestCd>
   </AdditionalInterestInfo>
  </AdditionalInterest>
  <AdditionalInterest>
   ...
   <AdditionalInterestInfo>
    <NatureInterestCd>LIEN</NatureInterestCd>
   </AdditionalInterestInfo>
  </AdditionalInterest>
 </PersVeh>
 <PersVeh>
  <AdditionalInterest>
   ...
   <AdditionalInterestInfo>
    <NatureInterestCd>ADDIN</NatureInterestCd>
   </AdditionalInterestInfo>
  </AdditionalInterest>
  <AdditionalInterest>
   ...
   <AdditionalInterestInfo>
    <NatureInterestCd>LIEN</NatureInterestCd>
   </AdditionalInterestInfo>
  </AdditionalInterest>
  <AdditionalInterest>
   ...
   <AdditionalInterestInfo>
    <NatureInterestCd>AIL</NatureInterestCd>
   </AdditionalInterestInfo>
  </AdditionalInterest>
 </PersVeh>
</PersAutoInsurance>

What I'm trying to do is select NatureInterestCd's based on the following
criteria:
1) I cannot accept the first NatureInterestCd = LIEN for each vehicle (but may
accept any subsequent for processing)
2) I cannot accept the first NatureInterestCd = AIL for each vehicle (but may
accept any subsequent for processing)
2) I can accept any other node

I attempted to use this type of statement to get the nodes and loop over
them:
<xsl:for-each
select="PersAutoInsurance/PersVeh/AdditionalInterest/AdditionalInterestInfo[n
ot(NatureInterestCd = 'LIEN') and not(NatureInterestCd = 'AIL')]">

But that eliminates all nodes, not simply the first.  I tried adding in a
position() qualifier, but that ended up only checking the first node in the
whole node-set selected.

I tried
generate-id(PersAutoInsurance/PersVeh[1]/AdditionalInterest/AdditionalInteres
tInfo[NatureInterestCd = 'LIEN'][1]) as that XPATH returns the LIEN I don't
want (I had to use it in another part of the xsl), but the ID it generated
wasn't the same as the ID that was being generated when I looped over the all
the NatureInterestCd's, so I couldn't eliminate the node based on that.

I'm nearing my wits end on this problem and I was hoping that someone could
give some insight into this problem.

Dale Earnest

Current Thread