Yes, comparing dateTimes is sometimes tricky--I always get it wrong the first 
few times....  Doing some explicit casting like this might fix that error:
 

for $x in cts:uris()
where fn:ends-with($x, ".docx") and
  xs:dateTime(fn:data(xdmp:zip-get(doc($x), 
"customXml/item1.xml")/Customer/Date))
    gt xs:dateTime(xs:date("2008-01-01"))
return
$x

-Danny

From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of Yves Dolce
Sent: Tuesday, December 11, 2007 1:10 PM
To: [email protected]
Subject: RE: [MarkLogic Dev General] using XQuery on Word documents


Right, Danny.
First I enabled the URI Lexicon and fire the query you suggested. It did not 
work but others did!
Thanks for the help!!
 
FWIW, the error I got is related to date format, I guess:
 
XDMP-COMPARE: <Date>2008-10-01T00:00:00</Date> gt xs:date("2008-01-01") -- 
Items not comparable: xs:date("2008-01-01") lt 
xdt:untypedAtomic("2008-10-01T00:00:00")



> --------------------------------------------------
> From: "Yves Dolce (hotmail.com)" <[EMAIL PROTECTED]>
> Sent: Monday, December 10, 2007 4:31 PM
> To: "General Mark Logic Developer Discussion" 
> <[email protected]>
> Subject: Re: [MarkLogic Dev General] using XQuery on Word documents
> 
> > Thanks Danny. Just by looking at the syntax, I'm pretty this is what I 
> > want. I'll try this tomorrow and will confirm. Thanks again.
> >
> > --------------------------------------------------
> > From: "Danny Sokolsky" <[EMAIL PROTECTED]>
> > Sent: Monday, December 10, 2007 4:06 PM
> > To: "General Mark Logic Developer Discussion" 
> > <[email protected]>
> > Subject: RE: [MarkLogic Dev General] using XQuery on Word documents
> >
> >> Hi Yves,
> >>
> >> To do this efficiently, it is very helpful to have a URI lexicon. A URI 
> >> lexicon gives you very fast access the URI of every document in the 
> >> database. You enable the URI lexicon in the Admin Interface database 
> >> config page for your database.
> >>
> >> Once you have the URI lexicon created (and reindexing has completed), you 
> >> can do something like this to get what you want:
> >>
> >> for $x in cts:uris()
> >> where fn:ends-with($x, ".docx") and
> >> xdmp:zip-get(doc($x), "customXml/item1.xml")/Customer/Date
> >> gt xs:date("2008-01-01")
> >> return
> >> $x
> >>
> >> If you do it without the URI lexicon, you will probably need to do it in 
> >> batches, because to get the URIs you need to first fetch the document and 
> >> then do xdmp:node-uri to find its URI. This can effectively attempt to 
> >> put the entire database in memory, and you therefore would probably need 
> >> to do it in batches without the URI lexicon.
> >>
> >> If you have a lot of docx's in your database, you still probably want to 
> >> do this in batches.
> >>
> >> Is this what you were looking for?
> >>
> >> -Danny
> >>
> >> From: [EMAIL PROTECTED] 
> >> [mailto:[EMAIL PROTECTED] On Behalf Of Yves Dolce
> >> Sent: Monday, December 10, 2007 2:27 PM
> >> To: [email protected]
> >> Subject: [MarkLogic Dev General] using XQuery on Word documents
> >>
> >> This is a question that will have a simple answer. If only I knew more 
> >> about XQuery...
> >>
> >> If I run the following line in CQ:
> >> xdmp:zip-get(doc("Contract.docx"), "customXml/item1.xml")
> >>
> >> I get:
> >> <Customer>
> >> <Date>2008-11-15T00:00:00</Date>
> >> <CompanyName>Bebop Corporation</CompanyName>
> >> <FirstName>Erick</FirstName>
> >> <LastName>Trojan</LastName>
> >> <SSN>1111-22-3333</SSN>
> >> <Address>Av. Revolucion 841, DF, CP 03910, Mexico</Address>
> >> <ContactTitle>Test Manager</ContactTitle>
> >> <Phone>+52 (55) 6666-66666</Phone>
> >> </Customer>
> >>
> >> How should I express a query that essentially says: for each docx file in 
> >> the DB, get me its customXml/item1.xml part, if it has one, and the 
> >> <Date> element in it is greater than 1/1/2008.
> >>
> >> Does my question make sense? Thanks!
> >> _______________________________________________
> >> General mailing list
> >> [email protected]
> >> http://xqzone.com/mailman/listinfo/general
> >>
> > _______________________________________________
> > General mailing list
> > [email protected]
> > http://xqzone.com/mailman/listinfo/general
> > 
_______________________________________________
General mailing list
[email protected]
http://xqzone.com/mailman/listinfo/general

Reply via email to