Alex Rivera | Logout

XPath selecting multiple elements with predicates

Asked 2010-11-02T16:01:37.880
12

I have an XPath query which is doing what I want, namely selecting a union of 'surname' & 'given-names' with the given predicates (It's actually either/or that I need, but the union works fine):

/header/authors/surname[./text() and @id='1']
|
/header/authors/given-names[./text() and @id='1']

However this seems overly long-winded to me and I feel that it should be possible to do something more succinct such as:

/header/authors/(surname|given-names)[./text() and @id='1']

... but this version is not valid XPath.

Can anyone tell me of a neater way of writing the original XPath expression which doesn't require the full path to be written twice?

Thanks

Richard

Edit
Report

1 Answer

4

How about

/header/authors/*[(name() = "surname" or name()="given-names") and ./text() and @id='1'] 
answered 2010-11-02T16:04:35.950

Your Answer