[MarkLogic Dev General] If xml element exists

Kapoor, Pragya PKapoor1 at innodata.com
Wed Jan 27 21:52:38 PST 2016


Erik,


If I understand correctly, you mean to say, if I know the document from where I need to fetch the elements, still the cts:search will be faster than fn:doc()


For example: fn:doc("/misc/SavedTextSearches.xml")/TextSearches/User[Name = $User] )  (: slower :)

                        cts:search(/TextSearches/User, cts:element-value-query(xs:QName("Name"), $User)  (: faster:)

Thanks
Pragya
________________________________
From: general-bounces at developer.marklogic.com <general-bounces at developer.marklogic.com> on behalf of Erik Hennum <Erik.Hennum at marklogic.com>
Sent: Wednesday, January 27, 2016 7:13 PM
To: MarkLogic Developer Discussion
Subject: Re: [MarkLogic Dev General] If xml element exists

Hi, Pragya:

If you need to retrieve the document anyway, you can test for the existence or absence of nodes with:

    http://docs.marklogic.com/fn:exists
    http://docs.marklogic.com/fn:empty

as in

    let $root:= fn:doc("/misc/SavedTextSearches.xml")/TextSearches
    let $hasUser := ($root/User/Name/string(.) = $User)
    let $isHidden := fn:exists($root/Hidden)
    return ...

To find documents of interest based on criteria, however, you should use cts:search() instead of fn:doc(),

fn:doc() retrieves documents into memory before inspecting the document, where cts:search() matches against the indexes and thus (depending on the criteria) retrieves many fewer documents much more quickly.


Hoping that helps,


Erik Hennum
________________________________
From: general-bounces at developer.marklogic.com [general-bounces at developer.marklogic.com] on behalf of Kapoor, Pragya [PKapoor1 at innodata.com]
Sent: Tuesday, January 26, 2016 10:32 PM
To: MarkLogic Developer Discussion
Subject: Re: [MarkLogic Dev General] If xml element exists



Few more examples:


 if ($DocRecord[fn:not(.[Hidden])])
                then
                 ()
               else
                    $DocRecord


if ($NumOfGroups = 1)
        then
          $DocRecords[fn:not(.[Hidden])]
        else ()


________________________________
From: general-bounces at developer.marklogic.com <general-bounces at developer.marklogic.com> on behalf of Kapoor, Pragya <PKapoor1 at innodata.com>
Sent: Wednesday, January 27, 2016 11:38 AM
To: MarkLogic Developer Discussion
Subject: [MarkLogic Dev General] If xml element exists



Hi,


I need to check the below conditions at multiple places, if there are other more performant way to achieve these:


if ( fn:doc("/misc/SavedTextSearches.xml")/TextSearches/User[Name = $User] )
  then
    "YES"
  else
    "NO"


if ( fn:doc("/misc/SavedTextSearches.xml")/TextSearches )
  then
    ( )
  else 'p'

Thanks
Pragya


"This e-mail and any attachments transmitted with it are for the sole use of the intended recipient(s) and may contain confidential , proprietary or privileged information. If you are not the intended recipient, please contact the sender by reply e-mail and destroy all copies of the original message. Any unauthorized review, use, disclosure, dissemination, forwarding, printing or copying of this e-mail or any action taken in reliance on this e-mail is strictly prohibited and may be unlawful."
"This e-mail and any attachments transmitted with it are for the sole use of the intended recipient(s) and may contain confidential , proprietary or privileged information. If you are not the intended recipient, please contact the sender by reply e-mail and destroy all copies of the original message. Any unauthorized review, use, disclosure, dissemination, forwarding, printing or copying of this e-mail or any action taken in reliance on this e-mail is strictly prohibited and may be unlawful."
"This e-mail and any attachments transmitted with it are for the sole use of the intended recipient(s) and may contain confidential , proprietary or privileged information. If you are not the intended recipient, please contact the sender by reply e-mail and destroy all copies of the original message. Any unauthorized review, use, disclosure, dissemination, forwarding, printing or copying of this e-mail or any action taken in reliance on this e-mail is strictly prohibited and may be unlawful."
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://developer.marklogic.com/pipermail/general/attachments/20160128/4659df56/attachment-0001.html 


More information about the General mailing list