[Date Prev]
| [Thread Prev]
| [Thread Next]
| [Date Next]
--
[Date Index]
| [Thread Index]
Re: [xml-dev] Concerned about the increasing reliance on XPath
- From: Andrew Welch <andrew.j.welch@gmail.com>
- To: stephengreenubl@gmail.com
- Date: Mon, 9 May 2011 17:04:19 +0100
On 9 May 2011 16:43, Stephen D Green <stephengreenubl@gmail.com> wrote:
> I tried to think of a way to write the XPath expression so
> it gives the same result whatever the version of XPath
> and it gets rather complex and obscure and not what I'd
> be expecting a non-specialist developer to do or understand
> well enough to be able to maintain it but it does evaluate
> to true whatever the version and maybe (?) whatever the
> namespace bindings
>
> /*[local-name()='a']/@version-id = 0.4
To select a elements in any namespace, that could/should be:
/*:a/@version-id
> What would I have to do to ensure it didn't get the same result
> with another default namespace though? I guess I'd have to
> make the expression even more complex:
>
> /*[local-name()='a'][namespace-uri()='http://example.com']/@version-id = 0.4
You've just stumbled across the big problem with namespaces in xpath -
you have to set up the mappings outside of the xpath itself.
Often the best thing to do is use a prefix (not change the default
namespace) and then its clear in the xpath a namespace is involved.
So in your example you could do:
/a/@version-id.....
along with the default namespace changed to "http://example.com", but
you could just as easily do:
/e:a/@version-id....
and then whoever is looking at the xpath knows they need to have a
look at the mapping for e.
--
Andrew Welch
http://andrewjwelch.com
[Date Prev]
| [Thread Prev]
| [Thread Next]
| [Date Next]
--
[Date Index]
| [Thread Index]