I don't know much about the DB:XML standards or the motivations behind tying Xindice to them, and what I'm about to say may be beating a horse you've all already beaten--if so let me apologize ahead of time. I'm afraid I haven't had the time to follow the Xindice query support as closely as I'd like, or these mailing-lists, but I was fairly shocked that Xindice didn't support attribute query returns. So I just wanted to chime in with my 2 cents on this from the stand-point of my experience using XML databases and XPath queries to get real work done (mainly with Tamino).
Being able to do XPath queries that return just attributes is CRITICAL. I need and use this all the time. The most basic example is also the most onerous if you're forced to get the element and it's entire sub-tree: suppose you need a list of just the ids of documents matching a particular your query criteria. Suppose also these documents are fairly large, and / or the result set very large. The list of ids might have been a 1k of data but the list of entire documents a 100 Megs. This limitation has just rendered a very basic application task impractical. Normally I'm all about standards and staying away from "proprietary", but I don't rate having the result of the query in conformance to some standard very high. If it's XML, it can always be transformed to some other format. What I do rate high is power and flexibility. Power and flexibility in defining not only the query criteria but also what data is returned. Being able to get ALL of an element's attributes would also be a very useful feature (is "@*" legal XPath syntax?) Being able get the child text nodes of an element without all of the element's descendant elements would also be huge (if I read the spec correctly XPath does not support this). Efficient support for unions, to selectively retrieve a few non-contiguous portions of the xml tree would also be great (as awkward as the Xpath union syntax may be). And personally, I'm not all that enamoured of XML Query as a cure-all for XPath's limitations, most of which could be solved by very simple extensions to the syntax.. I'd much rather have non-standard extensions to the current standards (even XPath itself) to get the job done, then be limited by standards that aren't entirely baked yet. -- Eric Schwarzenbach On 5 Apr 2002 at 0:35, Mark J. Stang wrote: > Everyone is correct, it doesn't work. It is not Xindice, but rather > the XML:DB or DB:XML or something like that API that doesn't support > it. So until the API is updated, Xindice doesn't support it. > HOWEVER, this is not to say that you can't get back the node that > contains the attribute. I have nodes like: > > <name first="mark" last="stang" /> > > And I do searches for "mark" or "stang" and they work, they just > return then entire node. So, you get more than you asked for. > And if you search for an attribute of the root node, then you can get > the entire document. > > Check out: > > http://www.zvon.org/xxl/XPathTutorial/General/examples.html > > I have yet to find any bugs in the XPath queries :-). > > HTH, > > Mark > > Maarten Eerdekens wrote: > > > Xindice can only return a nodeset as a result of a xpath query, and > > because attributes are no nodes, this returns nothing. You will have > > to make a work around. I think I heard the experts are working on > > it. > > > > -----Original Message----- > > From: Dominic Gamble [mailto:[EMAIL PROTECTED] > > Sent: vrijdag 5 april 2002 8:55 > > To: [email protected] > > Subject: Xindice doesn't fully support XPath? /@attribute doesn't > > work! > > > > It seems that XPath /@attribute queries don't work in Xindice! > > Please tell me I am wrong. > > > > When I execute the following xpath query: > > > > xindice xpath -c /db/websystem -q "/Classes/Class[last()]" > > > > I get the following results: > > > > <?xml version="1.0"?> > > <Class name="Page" id="1" superclass="1" template="1" > > xmlns:src="http://xml.apache.org/xindice/Query" > > src:col="/db/websystem" src:key="class"> > > <Elements> > > <Element name="Title" class="Single Line Text" > > required="true" /> <Element name="Author" > > class="Single Line Text" required="false" /> > > <Element name="Keywords" class="Single Line Text" > > required="false" /> <Element name="Description" > > class="Single Line Text" required="false" > > /> > > </Elements> > > </Class> > > > > This is all ok, but when I then attempt to get the attribute 'id' > > only, using the following query: > > > > xindice xpath -c /db/websystem -q "/Classes/Class[last()]/@id" > > > > I get NOTHING! This happens both from the command line, _and_ from > > within code. > > > > Does anyone know why? Has it just not been implemented? > > I'm using Xindice 1.0. > > > > Thanks, > > Dominic Gamble > > Stratlink >
