Hi Danny,
Thanks for the reply. Below is the code snippet that I have written for
updating the document
let $version-info-uri := get:build-next-version-info-uri($document_data)
(: This returns the uri of latest version available in database e.g.
"/content/documents/sd/62211250/ ABCD13255DEFG-version-info-7.xml :)
let $version-info := fn:doc($version-info-uri)/pce:version-info
let $parent-standard-id as xs:unsignedLong := $document_data/nmsp:parent-id (:
This value is returning a unsigned value "132456666267788" :)
let $uri := set:build-document-uri$document_data)
let $now := fn:current-dateTime()
let $old-doc-exists as xs:boolean := fn:doc-available($uri)
let $existing-date as xs:dateTime :=
(fn:doc($uri)/nmsp:document/nmsp:modified-date, $now)[1]
let $new-date as xs:dateTime := (set:to-dateTime(($document_data
/modifiedDate), $now)[1]
let $existing-description as xs:string := fn:string(fn:doc($uri)/
nmsp:document /nmsp:document_description)
let $new-description as xs:string := fn:string($new-document/
nmsp:document_description)
return
(: insert the doc if there is no previous version or the new version has a
newer modified date and the text of the description
is different :)
if (fn:not($old-doc-exists) or ($new-date > $existing-date and ($new-date
!= $now))) then
(
try{
if ($old-doc-exists) then
(
if ($existing-description ne $new-description) then
(
xdmp:log(fn:concat("version-info before", $version-info)),
xdmp:node-insert-child($version-info,<nmsp:parent-id>{$parent-id}</nmsp:parent-id>),
xdmp:log(fn:concat("version-info after", $version-info)),
xdmp:log(fn:concat("parent-document-id::",$parent-id)),
)
else( (: replacing the document directly without update :))
}
catch($ex) {xdmp:log($ex)}
)
else()
The above code is not inserting the parent-id in the version-info document and
it is not reporting any error at the time of insertion.
Thanks,
Sriram Gampa
-----Original Message-----
From: [email protected]
[mailto:[email protected]] On Behalf Of
[email protected]
Sent: Friday, August 10, 2012 10:06 PM
To: [email protected]
Subject: General Digest, Vol 98, Issue 30
Send General mailing list submissions to
[email protected]
To subscribe or unsubscribe via the World Wide Web, visit
http://developer.marklogic.com/mailman/listinfo/general
or, via email, send a message with subject or body 'help' to
[email protected]
You can reach the person managing the list at
[email protected]
When replying, please edit your Subject line so it is more specific than "Re:
Contents of General digest..."
Today's Topics:
1. Re: Reg: Issue with xdmp:node-insert-child() (Danny Sokolsky)
2. search:parse parenthetical grouping (Will Thompson)
3. Re: search:parse parenthetical grouping (Michael Blakeley)
4. Re: search:parse parenthetical grouping (Danny Sokolsky)
----------------------------------------------------------------------
Message: 1
Date: Fri, 10 Aug 2012 15:17:38 -0700
From: Danny Sokolsky <[email protected]>
Subject: Re: [MarkLogic Dev General] Reg: Issue with
xdmp:node-insert-child()
To: MarkLogic Developer Discussion <[email protected]>
Message-ID:
<c9924d15b04672479b089f7d55ffc1322264292...@exchg-be.marklogic.com>
Content-Type: text/plain; charset="us-ascii"
Hi Siriam,
Since you did not give the whole code or tell us the error you are seeing, it
is hard to say. For example, in the code you have, there is no $parent-id
variable bound. The basic idea you have works, as this code inserts a child
node after the root node:
xdmp:document-insert("/testdevlist.xml", <version-info xmlns="http://namespace">
<id>ABCD13255DEFG</id>
<additions/>
<updates/>
<deletes/>
</version-info>
);
declare namespace pce="http://namespace"; let $version-info :=
fn:doc("/testdevlist.xml")/pce:version-info
return xdmp:node-insert-child($version-info, <foo/>);
doc("/testdevlist.xml")
=>
<?xml version="1.0" encoding="UTF-8"?>
<version-info xmlns="http://namespace">
<id>ABCD13255DEFG</id>
<additions/>
<updates/>
<deletes/>
<foo xmlns=""/>
</version-info>
So I maybe if you simplify your query and then post some code along with
results and/or error messages, we can help figure it out.
-Danny
From: [email protected]
[mailto:[email protected]] On Behalf Of Gampa, Sriram
Sent: Friday, August 10, 2012 2:22 PM
To: [email protected]
Subject: [MarkLogic Dev General] Reg: Issue with xdmp:node-insert-child()
Hi All,
I'm having an issue while inserting an element into a node using
xdmp:node-insert-child().
My xml structure is as below
<version-info xmlns="http://namespace">
<id>ABCD13255DEFG</id>
<additions/>
<updates/>
<deletes/>
</version-info>
I'm trying to insert <parent-id> 13242682898790</parent-id> into the
<version-info> as child using the xdmp:node-insert-child() as part of my code
but the node is not getting inserted into the version-info xml. But when I
tried to the same through CQ its working fine.
let $version-info-uri := "/content/documents/sd/62211250/
ABCD13255DEFG-version-info-7.xml"
let $log1 := xdmp:log(fn:concat("Update Note: Version Info URI",
$version-info-uri)) let $version-info :=
fn:doc($version-info-uri)/pce:version-info
...
...
xdmp:log(fn:concat("version-info before", $version-info)),
xdmp:node-insert-child($version-info,<nmsp:parent-id>{$parent-id}</nmsp:parent-id>),
xdmp:log(fn:concat("version-info after", $version-info)),
xdmp:log(fn:concat("parent-document-id::",$parent-id)),
Could please let me know what is the issue with the above code.
Thanks,
Sriram Gampa
-------------- next part --------------
An HTML attachment was scrubbed...
URL:
http://developer.marklogic.com/pipermail/general/attachments/20120810/bd6f3c11/attachment-0001.html
------------------------------
Message: 2
Date: Fri, 10 Aug 2012 23:15:03 +0000
From: Will Thompson <[email protected]>
Subject: [MarkLogic Dev General] search:parse parenthetical grouping
To: MarkLogic Developer Discussion <[email protected]>
Message-ID:
<[email protected]>
Content-Type: text/plain; charset="us-ascii"
I need to prevent paren grouping from happening when the parens are part of a
string - typically it's a reference-type number. I can't think of a situation
where this would be desirable anyway:
search:parse('123.4(5)')
=> cts:and-query((cts:word-query("123.4(5"), cts:word-query(")")))
If I change the grammar to require a space on either or both sides of the
paren, then it will always break some legitimate grouping case like "(hello AND
world)".
Is there any way to control these grammar options a little further? It would be
easy if you could just use regexes in the grammar options, i.e.:
<starter strength="30" apply="grouping" delimiter="(^|\s)/)">/(($|\s)</starter>
Thanks,
Will
------------------------------
Message: 3
Date: Fri, 10 Aug 2012 16:59:22 -0700
From: Michael Blakeley <[email protected]>
Subject: Re: [MarkLogic Dev General] search:parse parenthetical
grouping
To: MarkLogic Developer Discussion <[email protected]>
Message-ID: <[email protected]>
Content-Type: text/plain; charset=us-ascii
That does seem undesirable. I was going to refer you to
https://github.com/mblakele/xqysp but it doesn't do much better - unless you
can get your users to quote the number?
import module namespace qe="com.blakeley.xqysp.query-eval"
at "query-eval.xqy";
qe:parse('123.4(5)'),
qe:parse('"123.4(5)"')
=>
cts:and-query((cts:word-query("123", ("lang=en"), 1), cts:word-query("4",
("lang=en"), 1), cts:word-query("5", ("lang=en"), 1)), ())
cts:word-query("123.4(5)", ("lang=en"), 1)
You can pass that output to search:resolve(), with pretty much the same
semantics as search:search.
-- Mike
On 10 Aug 2012, at 16:15 , Will Thompson wrote:
> I need to prevent paren grouping from happening when the parens are part of a
> string - typically it's a reference-type number. I can't think of a situation
> where this would be desirable anyway:
>
> search:parse('123.4(5)')
> => cts:and-query((cts:word-query("123.4(5"), cts:word-query(")")))
>
> If I change the grammar to require a space on either or both sides of the
> paren, then it will always break some legitimate grouping case like "(hello
> AND world)".
>
> Is there any way to control these grammar options a little further? It would
> be easy if you could just use regexes in the grammar options, i.e.:
>
> <starter strength="30" apply="grouping"
> delimiter="(^|\s)/)">/(($|\s)</starter>
>
> Thanks,
>
> Will
>
> _______________________________________________
> General mailing list
> [email protected]
> http://developer.marklogic.com/mailman/listinfo/general
>
------------------------------
Message: 4
Date: Fri, 10 Aug 2012 19:05:42 -0700
From: Danny Sokolsky <[email protected]>
Subject: Re: [MarkLogic Dev General] search:parse parenthetical
grouping
To: MarkLogic Developer Discussion <[email protected]>
Message-ID:
<c9924d15b04672479b089f7d55ffc1322264292...@exchg-be.marklogic.com>
Content-Type: text/plain; charset="us-ascii"
It probably won't work for you, but one idea is to change the starter for
grouping to have different delimiting chars. For example, 2 parens:
<starter strength="30" apply="grouping" delimiter="))">((</starter>
It might be better than a space....
-Danny
-----Original Message-----
From: [email protected]
[mailto:[email protected]] On Behalf Of Michael Blakeley
Sent: Friday, August 10, 2012 4:59 PM
To: MarkLogic Developer Discussion
Subject: Re: [MarkLogic Dev General] search:parse parenthetical grouping
That does seem undesirable. I was going to refer you to
https://github.com/mblakele/xqysp but it doesn't do much better - unless you
can get your users to quote the number?
import module namespace qe="com.blakeley.xqysp.query-eval"
at "query-eval.xqy";
qe:parse('123.4(5)'),
qe:parse('"123.4(5)"')
=>
cts:and-query((cts:word-query("123", ("lang=en"), 1), cts:word-query("4",
("lang=en"), 1), cts:word-query("5", ("lang=en"), 1)), ())
cts:word-query("123.4(5)", ("lang=en"), 1)
You can pass that output to search:resolve(), with pretty much the same
semantics as search:search.
-- Mike
On 10 Aug 2012, at 16:15 , Will Thompson wrote:
> I need to prevent paren grouping from happening when the parens are part of a
> string - typically it's a reference-type number. I can't think of a situation
> where this would be desirable anyway:
>
> search:parse('123.4(5)')
> => cts:and-query((cts:word-query("123.4(5"), cts:word-query(")")))
>
> If I change the grammar to require a space on either or both sides of the
> paren, then it will always break some legitimate grouping case like "(hello
> AND world)".
>
> Is there any way to control these grammar options a little further? It would
> be easy if you could just use regexes in the grammar options, i.e.:
>
> <starter strength="30" apply="grouping"
> delimiter="(^|\s)/)">/(($|\s)</starter>
>
> Thanks,
>
> Will
>
> _______________________________________________
> 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
End of General Digest, Vol 98, Issue 30
***************************************
_______________________________________________
General mailing list
[email protected]
http://developer.marklogic.com/mailman/listinfo/general