RE: Two namespace-questions (revisited)
"Michael Kay" <[email protected]>
| Newsgroups | gmane.comp.java.jdom.general |
|---|---|
| Message-ID | <00d801c7a84b$cadaf7f0$6401a8c0@turtle> |
If you don't like the XPath 1.0 specification, why not try XPath 2.0? XPath 2.0 allows you to set a default namespace for unqualified names in path expressions, and you can use that against JDOM input if you use Saxon. Michael Kay http://www.saxonica.com/ > -----Original Message----- > From: [email protected] > [mailto:[email protected]] On Behalf Of Kai Wörner > Sent: 06 June 2007 15:36 > To: [email protected] > Subject: Re: [jdom-interest] Two namespace-questions (revisited) > > Hello again, > > I'm stumbling over this same problem again and again! Now I'd > like to simply show parts of the same input XML file as last > time inside a Java program based on an XPath-expression. I > simply provide an input field for the XPath-string and seeing > the problems that the users already have drafting a > XPath-expression, I simply _know_ that they'll fail if they > have to add a namespace-declaration before each and every > element-name they use (especially since they don't have to do > this in any of the XML-Editors they use). > In addition, if I use an XMLOutputter to output the matched > Elements, they come out with another load of namespace-bulk > none of my users will understand. So in my tool I'd have to > use an expression like: > > //tei:s > > to get a result that looks like that: > > <s xmlns="http://www.tei-c.org/ns/1.0" part="N" TEIform="s"> > <cl type="lMAI tDEC" part="N" TEIform="cl"> > > as opposed to any XML-Editor where I'd use: > > //s > > to get: > > <s> > <cl type="lMAI tDEC"> > > Is it possible /at all/ to mimic the way it works in a > XML-Editor at all in JDom or do I have to look someplace else? > > Thanks again, > > Kai > > > XML: http://files.exmaralda.org/bl.xml > > > > > > > There is no default namespace in XPath 1.0. > > So you have to use a namespace prefix in your XPath > expressions. You > > can choose any prefix as there is no relationship between > the prefixes > > used in XPath and the ones in the document: prefixes are just > > shortcuts and the matching is done on the actual namespace URIs. > > > > The following should work: > > XPath xp = XPath.newInstance("/x:*"); > > xp.addNamespace("x", "http://www.tei-c.org/ns/1.0"); > > xp.selectNodes(document); > > > _______________________________________________ > To control your jdom-interest membership: > http://www.jdom.org/mailman/options/jdom-interest/youraddr@you > rhost.com _______________________________________________ To control your jdom-interest membership: http://www.jdom.org/mailman/options/jdom-interest/[email protected]