logoalt Hacker News

masklinnyesterday at 8:26 AM1 replyview on HN

That… has nothing to do with xpath?

If your document has namespaces, xpath has to reflect that. You can either tank it or explicitly ignore namespaces by foregoing the shorthands and checking `local-name()`.


Replies

codeulikeyesterday at 10:41 AM

Ok. Perhaps 'namespace the query' wasnt quite the right way of explaining it. All I'm saying is, whenever I've used xpath, instead of it looking nice like

/*bookstore/*book/*title

its been some godawful mess like

/*[name()='bookstore']/*[name()='book']/*[name()='title']

... I guess because they couldn't bear to have it just match on tags as they are in the file and it had to be tethered to some namespace stuff that most people dont bother with. A lot of XML is ad-hoc without a namespace defined anywhere

Its like

Me: Hello Xpath, heres an XML document, please find all the bookstore/book/title tags

Xpath: *gasps* Sir, I couldn't possibly look for those tags unless you tell me which namespace we are in. Are you some sort of deviant?

Me: oh ffs *googles xpath name() syntax*

show 3 replies