Link to home
Start Free TrialLog in
Avatar of trenttorkelson
trenttorkelson

asked on

xpath results are not as expected

this is my xml:

</ROOT>
<Item Segment="COMFIN" Dept="Blackberry" Category1="Active Directory" Category2="Password Reset" Code="Reset" />
<Item Segment="GEHC" Dept="Remote Support" Category1="Hardware" Category2="Cable" Code="Replace" />
<Item Segment="Plastics" Dept="Blackberry" Category1="Software" Category2="Casing" Code="Install" />
<Item Segment="Plastics" Dept="Remote Support" Category1="Hardware" Category2="Casing" Code="Repair" />
<Item Segment="Plastics" Dept="Site Support" Category1="Hardware" Category2="Parts &amp; Vendor 5.0" Code="Replace" />
</ROOT>

this is my query:

"/ROOT/Item[@Dept='Site Support' and not(@Category1=preceding::Item/@Category1)]/@Category1"
returns nothing

for those of you that it isn't plain to see, i'm attempting to select all Item nodes that have a attrib of Dept/with value of Site Support, and also, the preceding nodes must not have duplicate category1 values.
then the query gets the category1 attribute nodes from the Item nodes.

This does not work correctly on this expression, but it does here:

"/ROOT/Item[@Dept='Blackberry' and not(@Category1=preceding::Item/@Category1)]/@Category1"
returns active directory, and software

my assumption is that the reason that i get no results on the first query is that there is only one dept attribute with the site support value, and because of the way that i've formatted my query string, it removes the nodes that it finds in the first expression when it test's the second expression. that's my guess though..
ASKER CERTIFIED SOLUTION
Avatar of zc2
zc2
Flag of United States of America image

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
Avatar of trenttorkelson
trenttorkelson

ASKER

good one! i actually figured it would be another predicate somewhere..
just didn't know how/where/why

thank you