Hi Geert, I found it, it was my fault. Those jps data was load from outside. I first got data from database, make them into one big file, then I loaded this big file into marklogic as a test.xml, then I loop through the sub node to separate each jps node to be a separate file in the uri I want. But I forgot to delete this test.xml file, and all the values are coming from this file. I deleted this test.xml and I get correct value.
Thanks so much for your idea that use cts:search and base-uri, that's how I found it. and I'm merging now. Helen On May 6, 2010, at 1:52 PM, Geert Josten wrote: > Hi Helen, > > No sorry, my mistake, you did write that each article/jps was in a separate > xml file. > > Your code looks okay. There must be something subtle going on. Have you > thought of taking the filter query and put it in a cts:search and ask for the > base-uri of each result to see which results are returned that way? > > I could also imagine that you are running with admin user, which has as side > effect that deleted docs are visible to you, and could therefore pollute the > results you get. Try merging the database to get rid of deleted fragments.. > > Kind regards, > Geert > >> -----Original Message----- >> From: [email protected] >> [mailto:[email protected]] On Behalf Of >> helen chen >> Sent: donderdag 6 mei 2010 19:37 >> To: General Mark Logic Developer Discussion >> Subject: Re: [MarkLogic Dev General] question on query >> >> Sorry I didn't describe clearly. >> >> each <article> tag means one xml file, and each <jps> tag >> also means one xml file. >> The <article> tag holds the true article data, it is the top >> element in the xml file the <jps> tag is some meta >> information that does not exist in article data, it is on >> volume level, which means each coden and volume will have a >> separate xml file. and jps tag is the top element in the xml >> file. the coden volume and publication_year tag are also >> unique in each xml file. >> >> We don't do special thing for fragment when loading data. >> But if they are in separate file, that should means they are >> in different fragment. Correct me if it is not. >> >> if I do the query like the following, I'll get correct value, >> but the big element-values query did not. >> >> >> fn:doc()/nsjps:jps[(./nsjps:coden eq "AAA") and >> (./nsjps:volume eq "12")]/nsjps:publication_year/text() >> >> >> >> >> >> >> Thanks, Helen >> >> >> >> >> >> >> <article>...<coden>AAA</coden><volume>1</volume><issue>1</issu >> e><paper>123</paper>....</article> >> >> >> >> On May 6, 2010, at 12:55 PM, Geert Josten wrote: >> >> >> Hi Helen, >> >> Looking more closely at your problem now. You say you >> have one big file with all articles, which works correctly. >> You also have on big file with all jps elements. Could it be >> that you have added 'article' as fragment root? I think you >> also need 'jps' as fragment root. >> >> Your filter query will restrict the element-values to a >> set of fragments from which it 'takes' the appropriate >> values. But it will take all within the same fragment. So if >> you don't fragment on 'jps', your filter query will always >> return the whole xml (with all jps elements) as one fragment, >> and hence element-values will always return all possible values.. >> >> HTH >> >> Kind regards, >> Geert >> >> >> >> -----Original Message----- >> >> >> From: [email protected] >> >> >> >> [mailto:[email protected]] On Behalf Of >> >> >> helen chen >> >> >> Sent: donderdag 6 mei 2010 18:46 >> >> >> To: General Mark Logic Developer Discussion >> >> >> Subject: Re: [MarkLogic Dev General] question on query >> >> >> >> Hi Geert, >> >> >> >> Yes, the collation in the code is the collation >> I used to set >> >> >> the element-range indexes. >> >> >> >> I actually tried to do the query without specifying the >> >> >> collation like following, and I tried to take >> collation out >> >> >> one by one, but marklogic complains that there >> is no element >> >> >> range index for it, so I have to put collation there. >> >> >> >> >> cts:element-values(fn:QName("nsjps","publication_year"),(), >> >> >> ("ascending"), >> >> >> cts:and-query(( >> >> >> >> >> cts:element-range-query(fn:QName("nsjps","coden"), "=", "AAA", ()), >> >> >> >> >> cts:element-range-query(fn:QName("nsjps","volume"), "=", "12", ()) >> >> >> ), ()) >> >> >> ) >> >> >> >> >> >> Helen >> >> >> >> On May 6, 2010, at 12:33 PM, Geert Josten wrote: >> >> >> >> >> Hi Helen, >> >> >> >> >> >> You are using a particular collation in your code. Do >> >> >> all indexes specify this same collation? >> >> >> >> >> >> Kind regards, >> >> >> Geert >> >> >> >> >> >> >> >> >> >> drs. G.P.H. (Geert) Josten >> >> >> Consultant >> >> >> >> >> >> >> >> >> <image894d23....@724072c4b4fa45a4 >> >> >> <mailto:[email protected]> > >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> Daidalos BV >> >> >> >> >> >> Hoekeindsehof 1-4 >> >> >> 2665 JZ Bleiswijk >> >> >> >> >> >> T +31 (0)10 850 1200 >> >> >> F +31 (0)10 850 1199 >> >> >> >> >> >> <mailto:[email protected]> >> [email protected] >> >> >> www.daidalos.nl <http://www.daidalos.nl/> >> >> >> >> >> >> KvK 27164984 >> >> >> >> >> >> >> P Please consider the environment before >> printing this mail. >> >> >> De informatie - verzonden in of met dit e-mailbericht - >> >> >> is afkomstig van Daidalos BV en is uitsluitend >> bestemd voor >> >> >> de geadresseerde. Indien u dit bericht onbedoeld hebt >> >> >> ontvangen, verzoeken wij u het te verwijderen. Aan dit >> >> >> bericht kunnen geen rechten worden ontleend. >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> ________________________________ >> >> >> >> From: [email protected] >> >> >> >> [mailto:[email protected]] On Behalf Of >> >> >> helen chen >> >> >> Sent: donderdag 6 mei 2010 18:13 >> >> >> To: General Mark Logic Developer Discussion >> >> >> Cc: helen chen >> >> >> Subject: [MarkLogic Dev General] question on query >> >> >> >> >> >> >> >> >> I have a query works on one structure but not >> >> >> on another set of structure, I couldn't see the clue, >> >> >> >> >> >> >> >> >> for the working one: our data is like in the >> >> >> following structure >> >> >> >> >> >> >> <article>...<coden></coden><volume></volume><issue></issue><pa >> >> >> per></paper>....</article> >> >> >> >> >> >> the following are examples of the data, each >> >> >> tag <article> means one xml in marklogic: >> >> >> >> >> >> article 1: >> >> >> >> <article>...<coden>AAA</coden><volume>1</volume><issue>1</issu >> >> >> e><paper>123</paper>....</article> >> >> >> article 2: >> >> >> >> <article>....<coden>AAA</coden><volume>1</volume><issue>2</iss >> >> >> ue><paper>233</paper>...</article> >> >> >> ... >> >> >> >> >> >> I want to get issue list for the coden and >> >> >> volume, so I use the query >> >> >> >> >> >> >> >> >> cts:element-values(fn:QName("ns1","issue"),(), >> >> >> >> ("collation=http://marklogic.com/collation/en/MO", "descending"), >> >> >> cts:and-query(( >> >> >> >> >> >> >> cts:element-range-query(fn:QName("ns1","coden"), "=", "AAA", >> >> >> "collation=http://marklogic.com/collation/en/MO"), >> >> >> >> >> >> >> cts:element-range-query(fn:QName("ns1","volume"), "=", "1", >> >> >> "collation=http://marklogic.com/collation/en/MO") >> >> >> )) >> >> >> ) >> >> >> >> >> >> >> >> >> >> >> >> this one works very good, and it gives me the >> >> >> correct issue list for different coden/volume. >> >> >> >> >> >> >> >> >> ------- for the not working one: >> >> >> I have another situation that I want to use >> >> >> query similar with the above one: >> >> >> I have xml file structure like : <jps >> >> >> xmlns="nsjps"> <coden></coden> <volume></volume> >> >> >> <publication_year></publication_year></jps> >> >> >> >> >> >> >> >> >> the following every line is one xml file >> >> >> ... >> >> >> <jps xmlns="nsjps"> <coden>AAA</coden> >> >> >> <volume>12</volume> >> <publication_year>1968</publication_year></jps> >> >> >> <jps xmlns="nsjps"> <coden>AAA</coden> >> >> >> <volume>11</volume> >> <publication_year>1967</publication_year></jps> >> >> >> <jps xmlns="nsjps"> <coden>AAA</coden> >> >> >> <volume>10</volume> >> <publication_year>1966</publication_year></jps> >> >> >> <jps xmlns="nsjps"> <coden>AAB</coden> >> >> >> <volume>15</volume> >> <publication_year>1978</publication_year></jps> >> >> >> ... >> >> >> >> >> >> >> >> >> here every coden and volume should have unique >> >> >> value as publication_year. I thought if I use >> the following >> >> >> query for coden=AAA and volume=12, I should get >> only 1968 as >> >> >> return, but I got all the values for all the >> publication_year >> >> >> for coden=AAA and volume=12, which is 1968, >> 1967, 1966... >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> cts:element-values(fn:QName("nsjps","publication_year"),(), >> >> >> >> ("collation=http://marklogic.com/collation/en/MO", "descending"), >> >> >> cts:and-query(( >> >> >> >> >> >> cts:element-range-query(fn:QName("nsjps","coden"), "=", >> >> >> "AAA", >> "collation=http://marklogic.com/collation/en/MO"), >> >> >> >> >> >> >> cts:element-range-query(fn:QName("nsjps","volume"), "=", >> >> >> "12", >> "collation=http://marklogic.com/collation/en/MO") >> >> >> )) >> >> >> ) >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> Any one can help me? >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> Thanks, Helen >> >> >> >> >> >> >> >> >> >> >> _______________________________________________ >> >> >> 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 _______________________________________________ General mailing list [email protected] http://developer.marklogic.com/mailman/listinfo/general
