[xquery-talk] querying an xml file with namespaces

Martin Probst martin at x-hive.com
Thu Jan 12 09:34:25 PST 2006


You can get all the namespaces in a document with something like this
"distinct-values(//*/namespace-uri(.))".

On Thu, 2006-01-12 at 08:07 +0100, Michaël Michaud wrote:
> Thank you Wolfgang,
> 
> You helped me to understand how it works.
> Now I must have a closer look at the XQuery functions syntax.
> I also noticed some namespace-relative methods in the xom Element class, 
> which may be helpful.
> 
> Michaël
> 
> Wolfgang Hoschek a écrit :
> 
> > On Jan 11, 2006, at 2:17 PM, Michaël Michaud wrote:
> >
> >> Hello,
> >>
> >> I try to query an xml file with nux XQueryUtil.
> >> First time, i get messages such as
> >>  "Prefix md has not been declared"
> >>
> >> I could get the result by adding something like
> >>  "declare namespace md="http://www.isotc211.org/2005/gmd";"
> >> in front of my query string.
> >
> >
> > That's the standard and hence recommended way of doing it.
> >
> >>
> >> Now I try to read the namespaces first with another query
> >>  XQueryUtil.xquery(node, "//namespace::*")
> >> to automatically add the namespaces in front of my main query,
> >> but I get the message :
> >>  "The namespace axis is not available in XQuery"
> >
> >
> > This simply won't work. The namespace axis has been deprecated by the  
> > W3C, so Saxon followed suit and disabled it a few releases ago by  
> > toggling an internal flag. Namespaces continue to be available  
> > supported, of course. It's just the namespace axis iteration that's  
> > gone.
> >
> >>
> >> Question : what is the simple method to query an xml file using
> >> namespaces ?
> >
> >
> > Depends on what you're trying to do.
> >
> > You could write yourself a Java method or XQuery function that  
> > computes the namespaces in scope for a given element, then precede  
> > the query with the relevant declarations. For example, using standard  
> > XQuery functions such as fn:namespace-uri(Node) or similar.
> >
> > The best solution might be to argue on the XOM mailing list for a  
> > public method returning the namespace declarations of a XOM  
> > XPathContext, such as nu.xom.XPathContext.toMap(). If this would be  
> > public I'd consider adding a query method that takes an XPathContext  
> > as additional input parameter, similar to the XOM XPath functionality.
> >
> > Wolfgang.
> >
> >
> > _______________________________________________
> > talk at xquery.com
> > http://xquery.com/mailman/listinfo/talk
> >
> >
> 
> _______________________________________________
> talk at xquery.com
> http://xquery.com/mailman/listinfo/talk
> 



More information about the talk mailing list