Darin, have you tried using xdmp:query-trace()? Which version of the server are you using?
I suspect that the eQName is working, but the unnecessary string() call is a problem. Try this: xdmp:estimate( //* [node-name(.)=$eQName] [...@*[node-name(.) = $aQName] = $value] ) Trace: 2010-09-15 08:36:55.576 Info: Docs: line 6: Analyzing path: fn:collection()/descendant::f...@bar = "baz"] 2010-09-15 08:36:55.576 Info: Docs: line 6: Step 1 is searchable: fn:collection() 2010-09-15 08:36:55.576 Info: Docs: line 6: Step 2 is searchable: descendant::f...@bar = "baz"] 2010-09-15 08:36:55.576 Info: Docs: line 6: Path is fully searchable. 2010-09-15 08:36:55.576 Info: Docs: line 6: Gathering constraints. 2010-09-15 08:36:55.576 Info: Docs: line 6: Comparison contributed hash value constraint: foo/@bar = "baz" 2010-09-15 08:36:55.576 Info: Docs: line 6: Step 2 predicate 1 contributed 1 constraint: @bar = "baz" 2010-09-15 08:36:55.576 Info: Docs: line 6: Comparison contributed hash value constraint: foo/@bar = "baz" 2010-09-15 08:36:55.576 Info: Docs: line 6: Step 2 predicate 1 contributed 1 constraint: @bar = "baz" 2010-09-15 08:36:55.576 Info: Docs: line 6: Step 2 contributed 3 constraints: descendant::f...@bar = "baz"] 2010-09-15 08:36:55.576 Info: Docs: line 6: Executing search. -- Mike On 2010-09-15 08:02, McBeath, Darin W (ELS-STL) wrote: > Thanks Mary. That was pretty dumb on my part. But, I still do have a > question based on my more complex example. > > Basically, I want to get fragment counts where a fragment contains a given > element, attribute, and value for that attribute. I was thinking that I > could do XPath such as below wrapped in a xdmp:estimate. > > xdmp:estimate(//*[node-name(.)=$eQName and string(./@*[node-name(.) = > $aQName]) = $value]) > > But, this always seems to return me the number of fragments in the DB. I did > verify that > > //*[node-name(.)=$eQName and string(./@*[node-name(.) = $aQName]) = $value] > > Only returns the nodes which I want ... so, unlike last time it would appear > the query is at least written correctly. Perhaps, what I'm trying to do with > XPath and an accurate estimate is not currently possible. I believe that I > have the necessary indexes enabled that should support an accurate estmate. > > I did verify that something explicit such as the following returns the > correct result: > > xdmp:estimate(//skos:conceptsche...@rdf:about=$value]) > > This makes me believe that my indexes are configured correctly. > > I will likely drop back and try a cts:element-attribute-value-query or > xdmp:eval the XPath expression (such as above) ... but, I'm curious as to > whether I'm still doing something wrong above or whether this is really not > possible. I also can't really create range indexes on the element/attribute > as I'm trying to make this a fairly generic solution whereby one could query > on any element/attribute. > > Thanks. > > Darin. > > -----Original Message----- > From: Mary Holstege [mailto:mary.holst...@marklogic.com] > Sent: Tuesday, September 14, 2010 4:22 PM > To: General Mark Logic Developer Discussion; McBeath, Darin W (ELS-STL) > Subject: Re: [MarkLogic Dev General] How to get accurate fragment counts > using xdmp:estimate when the QName is a variable > > On Tue, 14 Sep 2010 13:05:58 -0700, McBeath, Darin W (ELS-STL) > <d.mcbe...@elsevier.com> wrote: > ... >> The following query returns me the value I would expect. >> >> xdmp:estimate(//skos:ConceptScheme) >> >> However, if I have a variable $eQName which is essentially the QName for >> skos:ConceptScheme >> >> xdmp:estimate(//$eQName) >> >> returns me every fragment in the DB. > > I think the problem is that your query isn't doing what you > think it is. It equivalent to //"skos:ConceptScheme", > the value of which is the string "skos:ConceptScheme" repeated > for every element in the database. So the estimate is > correct, but it isn't what you want. > > The only way to get the result you wany from the path is > something like //*[fn:node-name(.)=$eQName]. > > //Mary > _______________________________________________ > General mailing list > General@developer.marklogic.com > http://developer.marklogic.com/mailman/listinfo/general _______________________________________________ General mailing list General@developer.marklogic.com http://developer.marklogic.com/mailman/listinfo/general