This is the mail archive of the
xsl-list@mulberrytech.com
mailing list .
RE: Need Xpath Question (help).
- From: "Corey A. Spitzer" <cspitzer at cisco dot com>
- To: xsl-list at lists dot mulberrytech dot com
- Date: Tue, 29 Jan 2002 08:46:20 -0600
- Subject: RE: [xsl] Need Xpath Question (help).
- Reply-to: xsl-list at lists dot mulberrytech dot com
preceding goes all the way up to the first sibling and all of it's
children. if you want just first the preceding sibling, do
preceding-sibling::node()[1]
At 05:51 AM 1/29/02 -0800, you wrote:
>Doesn't the preceding axis specifically exclude all ancestors, so
>//Price[.='49.95']/preceding::node()
>would not include the root anyhow?
>
>Dan
>
>-----Original Message-----
>From: Michael Kay [mailto:michael.h.kay@ntlworld.com]
>Sent: Tuesday, January 29, 2002 4:40 AM
>To: xsl-list@lists.mulberrytech.com
>Subject: RE: [xsl] Need Xpath Question (help).
>
>
>> > I am looking for the XPath that will :
>> >
>> > 1) Return the "LineItem" with the lowest Price "in
>> each LineItems"
>> > (hint: the parent axis is easier to get working in this
>> case than the
>> > sibling axes)
>
>If you want a single XPath expression, then:
>
>/Invoices/Invoice/LineItems/LineItem/Price[not(. > ../Price)]
>
>A more efficient approach is likely to be a recursive XSLT template.
>
>> >
>> > 2) Select all the text nodes, comment nodes,
>> processing instruction
>> > nodes, and element nodes that come before the 49.95 Price node,
>> > except the ancestors of that Price node.
>> >
>
>//Price[.='49.95']/preceding::node()
>
>This is almost right: it also includes the root node. If you want to get
>rid
>of the root, add the predicate [generate-id(.)!=generate-id(/)].
>
>Mike Kay
>
>
>> >
>> <?xml version="1.0" encoding="UTF-8"?>
>> <Invoices>
>> <Invoice ID='1000'>
>> <CustomerName>Jane Smith</CustomerName>
>> <LineItems>
>> <LineItem>
>> <Sku>134</Sku>
>> <Description>Dons Boxers</Description>
>> <Price>9.95</Price>
>> </LineItem>
>> <LineItem>
>> <Sku>153</Sku>
>> <Description>Rice Krispy COM Object</Description>
>> <Price>10000.00</Price>
>> </LineItem>
>> <LineItem>
>> <Sku>72</Sku>
>> <Description>Red Vines</Description>
>> <Price>4.95</Price></LineItem></LineItems></Invoice>
>> <Invoice ID='1010'>
>> <CustomerName>Storm Phillips</CustomerName>
>> <LineItems>
>> <LineItem>
>> <Sku>171</Sku>
>> <Description>COM is LOVE T-shirt</Description>
>> <Price>9.95</Price></LineItem>
>> <LineItem>
>> <Sku>200</Sku>
>> <Description>ATL Internals</Description>
>> <Price>49.95</Price></LineItem></LineItems></Invoice>
>> <Invoice ID='1020'>
>> <CustomerName>John Stockton</CustomerName>
>> <LineItems>
>> <LineItem>
>> <Sku>53</Sku>
>> <Description>Caffeinated Beverages</Description>
>> <Price>0.50</Price></LineItem>
>> <LineItem>
>> <Sku>22</Sku>
>> <Description>Friday Pizza</Description>
>> <Price>0.00</Price></LineItem>
>> <LineItem>
>> <Sku>201</Sku>
>> <Description>MFC Internals</Description>
>> <Price>39.95</Price></LineItem></LineItems></Invoice></Invoices>
>>
>>
>>
>>
>>
>>
>> Mitch K. Ragan
>> Boeing Commercial Aircraft Group
>> Global Electronic Commerce
>> Senior Systems Analyst 425-266-3155
>>
>>
>> XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
>>
>
>
> XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
>
>
> XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
>
>
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list