On 3 May 2010 15:46, spig <[email protected]> wrote: > I have an additional-query specified in my options to search:search. I need > to specify a search if an element exists in the XML, but I want to discard > that as a search if the element does not exist. Specifically I have an > expiration date for content and initially I have had additional-query > specified like this: > > <additional-query> > { > cts:and-query(( > cts:element-range-query(xs:QName("publicationDate"), "<=", > fn:current-date()), > cts:element-range-query(xs:QName("expirationDate"), ">=", > fn:current-date()), > cts:not-query(cts:element-query(xs:QName("preview"), "true")) > )) > } > </additional-query> > > > Is there a way to remove the expirationDate element-range-query if there is > no expirationDate in the document?
The usual idiom for "if nnn exists then nnn else default" is "(nnn, default)[1]", so you could use: (//expirationDate, current-date())[1] ge current-date() If the expirationDate exists, it will be first in the sequence and get selected, otherwise the current-date() will be first and that will be selected, which will return true in the test. -- Andrew Welch http://andrewjwelch.com Kernow: http://kernowforsaxon.sf.net/ _______________________________________________ General mailing list [email protected] http://developer.marklogic.com/mailman/listinfo/general
