Thanks again Geert.
It's taking me a while to come over from XPath land but with this list's help I'm getting closer. gary From: [email protected] [mailto:[email protected]] On Behalf Of Geert Josten Sent: Wednesday, June 22, 2011 2:40 PM To: General MarkLogic Developer Discussion Subject: Re: [MarkLogic Dev General] element values in fragments Hi Gary, Are you aware that cts:element-value-match is returning values that match the pattern, not a query that does so? Run it separately. Wouldn't be surprised if it would return an empty sequence, you might want to try '*' instead of '?' as pattern.. Cts:and-query doesn't return doc-id's. Queries are always fragment-based, and result in a positive match if the query (and its sub-queries) are satisfied within a single fragment, with the exception of document-fragment-query.. Kind regards, Geert Van: [email protected] [mailto:[email protected]] Namens Gary Larsen Verzonden: dinsdag 21 juni 2011 20:16 Aan: 'General MarkLogic Developer Discussion' Onderwerp: Re: [MarkLogic Dev General] element values in fragments Hi Mike, Using cts:uris() and cts:document-query() I was able to get cts:element-values() to return values. It would help me to understand why a cts:and-query() does not work in this case. I was under the assumption that a cts:and-query() would return doc ids which would be equivalent. Thanks, gary -----Original Message----- From: [email protected] [mailto:[email protected]] On Behalf Of Michael Blakeley Sent: Tuesday, June 21, 2011 1:04 PM To: General MarkLogic Developer Discussion Subject: Re: [MarkLogic Dev General] element values in fragments If your current fragmentation strategy maps well to the way that your application reads and updates documents, then it may make sense to copy some information down into the sub-fragments. Alternatively, you could use cts:uris() to get all the document uris that match the top-level part of the query, then feed those uris into a cts:document-query() that tests the sub-fragments. -- Mike On 21 Jun 2011, at 10:05 , Gary Larsen wrote: > Hi Danny, > > The original $cq was finding results, but removing the document-fragment-query still returns an empty sequence. If I change cts:element-values to use an element in the document, but not in a fragment, it correctly returns values. > > I had to use fragments in order to load some large documents, but I haven't figured out how this is effecting my query strategy. > > Thanks, > gary > > > From: [email protected] [mailto:[email protected]] On Behalf OfDanny Sokolsky > Sent: Tuesday, June 21, 2011 12:37 PM > To: General MarkLogic Developer Discussion > Subject: Re: [MarkLogic Dev General] element values in fragments > > Hi Gary, > > I think element-values will give you answers based on fragments, so I don't think you need that document-fragment-query (which the way you have written it I think causes that query to match nothing). Something like: > > xquery version "1.0-ml"; > declare default element namespace'http://developer.envisn.com/xmlns/envisn/netvisn/'; > > let $modelKey := 'i627DE1CC4CF94F73ACAB3D27953C5D3C' > > let $cq := > cts:and-query(( > cts:directory-query("/db/netvisn/content/","infinity"), > cts:element-value-query(xs:QName("contentKey"), $modelKey, "exact) > )) > > cts:element-values(xs:QName("column"),"", ("document"), $cq) > > Does that work? What version of MarkLogic are you running? > > -Danny > > From: [email protected] [mailto:[email protected]] On Behalf OfGary Larsen > Sent: Tuesday, June 21, 2011 9:11 AM > To: 'General MarkLogic Developer Discussion' > Subject: [MarkLogic Dev General] element values in fragments > > Hi, > > I'm trying to create a query to return distinct element values. I've done this before but this time the element resides in a document fragment. In the query below the 'column' element is in a fragment so I included the document-fragment-query in the constraining query. > > Something is not correct as an empty sequence is being returned. > > xquery version "1.0-ml"; > declare default element namespace'http://developer.envisn.com/xmlns/envisn/netvisn/'; > > let $modelKey := 'i627DE1CC4CF94F73ACAB3D27953C5D3C' > > let $cq := > cts:and-query(( > cts:directory-query("/db/netvisn/content/","infinity"), > cts:element-value-query(xs:QName("contentKey"), $modelKey, "exact"), > cts:document-fragment-query(cts:element-value-match(xs:QName("column"), "?")) > )) > > let $columns := cts:element-values(xs:QName("column"),"", (), $cq) > for $column in $columns return $column > > This query does return values though: > > return cts:search(doc(), $cq)//column > > <column xmlns="http://developer.envisn.com/xmlns/envisn/netvisn/">CITY</column> > <column xmlns="http://developer.envisn.com/xmlns/envisn/netvisn/">COMPANYNAME</colum n> > <column xmlns="http://developer.envisn.com/xmlns/envisn/netvisn/">COUNTRY</column> > <column xmlns="http://developer.envisn.com/xmlns/envisn/netvisn/">REGIONID</column> > <column xmlns="http://developer.envisn.com/xmlns/envisn/netvisn/">COUNTRY</column> > <column xmlns="http://developer.envisn.com/xmlns/envisn/netvisn/">COUNTRY</column> > <column xmlns="http://developer.envisn.com/xmlns/envisn/netvisn/">COUNTRY</column> > <column xmlns="http://developer.envisn.com/xmlns/envisn/netvisn/">CITY</column> > > Thanks for any assistance, > gary > _______________________________________________ > General mailing list > [email protected] > http://developer.marklogic.com/mailman/listinfo/general _______________________________________________ General mailing list [email protected] http://developer.marklogic.com/mailman/listinfo/general
_______________________________________________ General mailing list [email protected] http://developer.marklogic.com/mailman/listinfo/general
