How should I write this XPath statement

How would I write an XPath statement,executed from the 'Order' level to access the following:

+ Order
  + item
    - price
    - quantity
    - type

Open in new window


I wrote the following, but since I am executing this from the
Orders level, it seems to get confused on the Cardinality.  
How should I write this ?

fn:sum($Orders/item[type = 'Shoe']/quantity*price)

Open in new window


Thanks
Anthony LuciaAsked:
Who is Participating?
 
Geert BormansConnect With a Mentor Information ArchitectCommented:
Do you try to make a total of quantity * price for each shoe item?
You can't do that this way
Using XPath1/XSLT1 sum() only works on nodes, not on sequences... you will need recursive processing for that (I can show you an example if you send a decent example document and the XSLT you already have)
If you are using XSLT2, you need to make sure that also the price is in context
I would make a function fun:line-total() (note you need your own namespace)
fn:sum($Orders/item[type = 'Shoe']/fun:line-total(quantity,price))
if you are just using XPath 2.0 outside the context of XSLT
fn:sum(for $i in $Orders/item[type = 'Shoe'] return $i/quantity * $i/price)

Cheers
Geert
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.