[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message]

RE: XPath to match attribute with multiple values...?

Subject: RE: XPath to match attribute with multiple values...?
From: "Michael Kay" <mike@xxxxxxxxxxxx>
Date: Wed, 10 Nov 2004 19:05:30 -0000
xpath multiple attributes
In 2.0 if you have a schema that describes the attribute as list-valued then

  contains(@categories, "business")

will do the right thing.

If you don't have a schema, then

  contains(tokenize(@categories, '\s'), "business")

will do the right thing.

With 1.0, it's much harder.

Michael Kay
http://www.saxonica.com/
 

> -----Original Message-----
> From: Emmanouil Batsis [mailto:Emmanouil.Batsis@xxxxxxxxxxx] 
> Sent: 10 November 2004 19:03
> To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> Subject: Re:  XPath to match attribute with multiple values...?
> 
> Matt Dittbenner wrote:
> 
> > Let me show another example.....
> >
> > <package name="product1" categories="personal small_business"/>
> > <package name="product2" categories="business enterprise" />
> >
> > In this example I want to match packages that belong to the 
> category 
> > "business" exclusively (not including small business). Using the 
> > contains function will return both product1 and product2, 
> which is not 
> > the data I am looking for.
> 
> 
> Ahhhh, right; sorry for the too-quick reply. I guess you need 
> to work a 
> little more by matching the nodes with contains, then 
> validating them in 
> a template with the substring functions. Check out
> 
> http://www.w3.org/TR/xpath#section-String-Functions
> 
> for reference. Dunno if an extention exists for what you want (ie 
> match-word or something), but i guess it checking out EXSLT would not 
> take too much time.
> 
> hth,
> 
> Manos
> 
> >
> > Thanks for such fast responses!
> >
> > Emmanouil Batsis wrote:
> >
> >> An attribute value is atomic. You can look whether it contains a 
> >> substring using the contains(a, b) function. It will 
> return true if a 
> >> contains b.
> >>
> >> hth,
> >>
> >> MAnos
> >>
> >> Matt Dittbenner wrote:
> >>
> >>> Hey there,
> >>>
> >>> I am having trouble finding any information on this. I 
> have some XML 
> >>> data with an attribute that has a space-delimited list 
> inside of it 
> >>> (kind of like putting multiple classes on an element in 
> html for use 
> >>> by CSS). How can I use XPath to match the nodes with 
> attributes that 
> >>> contain a specific value. I think the best way to describe this 
> >>> would be with an example:
> >>>
> >>> <data>
> >>>    <item name="a" attribute="value value1"/>
> >>>    <item name="b" attribute="value2 value1"/>
> >>>    <item name="c" attribute="value1 value3"/>
> >>>    <item name="d" attribute="value"/>
> >>> </data>
> >>>
> >>> If I want to match the elements where "attribute" has one of its 
> >>> values "value1", I want item "a", item "b" and item "c". But if I 
> >>> want the elements where "attribute" has one of its values 
> "value", I 
> >>> should get item "a" and item "d". If you use the 
> contains() string 
> >>> function, you would obviously match all items, which is 
> not what I 
> >>> want.
> >>>
> >>> As I said before CSS allows you to create styles that apply to a 
> >>> class, and on your html, you can just set class="class1 class2 
> >>> class3". That way ".class1", ".class2", ".class3", and 
> >>> ".class1.class2" are all separate styles! I don't need 
> this extent 
> >>> of functionality, but it leads me to believe something like this 
> >>> just might exist in XPath.
> >>>
> >>> Any ideas?
> >>>
> >>> Thanks in advance,
> >>>    Matt

Current Thread

PURCHASE STYLUS STUDIO ONLINE TODAY!

Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced!

Buy Stylus Studio Now

Download The World's Best XML IDE!

Accelerate XML development with our award-winning XML IDE - Download a free trial today!

Don't miss another message! Subscribe to this list today.
Email
First Name
Last Name
Company
Subscribe in XML format
RSS 2.0
Atom 0.3
Site Map | Privacy Policy | Terms of Use | Trademarks
Free Stylus Studio XML Training:
W3C Member
Stylus Studio® and DataDirect XQuery ™are products from DataDirect Technologies, is a registered trademark of Progress Software Corporation, in the U.S. and other countries. © 2004-2013 All Rights Reserved.