[xsl] select elements based on value NOT contained in descendant elements

Subject: [xsl] select elements based on value NOT contained in descendant elements
From: cknell@xxxxxxxxxx
Date: Tue, 17 Jul 2007 15:38:47 -0400
Consider this structure:
<ROWSET>
<ROW>
  <NAME/>
  <CREDIT_CARDS>
    <CREDIT_CARD>
       <ISSUER/>
       <NUMBER/>
    </CREDIT_CARD>
    <CREDIT_CARD>
       <ISSUER/>
       <NUMBER/>
    </CREDIT_CARD>
  </CREDIT_CARDS>
</ROW>
</ROWSET>

I need to select the rows who do not have a CREDIT_CARD descendant whose ISSUER descendant contains one of a set of values.

For example, say that I want to select all ROW elements that do not have an ISSUER descendant with one of these values: ABC, MNO, RST


I tried a construct like this, but it failed to filter out the ROWS I expected it to filter,

select="ROW[not(CREDIT_CARDS/CREDIT_CARD/ISSUER= ('ABC','MNO','RST'))]"

Namely, ROW elements which had ISSUER descendants whose text value was one of the three listed strings.

What am I missing here? Am I misusing the not() operator?

Thanks.
-- 
Charles Knell
cknell@xxxxxxxxxx - email

Current Thread