Subject: RE: [xsl] XPath to match attribute with multiple values...? From: "Michael Kay" <mike@xxxxxxxxxxxx> Date: Wed, 10 Nov 2004 19:05:30 -0000 |
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: [xsl] 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 |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] XPath to match attribute , Emmanouil Batsis | Thread | Re: [xsl] XPath to match attribute , Matt Dittbenner |
Re: [xsl] XPath to match attribute , Emmanouil Batsis | Date | Re: [xsl] XPath to match attribute , Matt Dittbenner |
Month |