And to transform the doc using XQuery, take a look at the typeswitch 
expression: http://docs.marklogic.com/guide/app-dev/typeswitch#id_65827

-pete

From: general-boun...@developer.marklogic.com 
[mailto:general-boun...@developer.marklogic.com] On Behalf Of Joe Bryan
Sent: Friday, August 01, 2014 8:15 PM
To: MarkLogic Developer Discussion
Subject: Re: [MarkLogic Dev General] Urgent request for assistance (please)

Hi Paul,

The xdmp:node-* functions only work on documents stored in the database. To 
update a file on disk, you'll need to reconstruct the entire document as you 
want, and then save it using xdmp:save.

Can I ask why you've taken this approach? I think you'll be much better served 
by querying, transforming, and updating documents that are stored in the 
database. There's a much larger API surface available to you, and you'll be 
able to leverage the universal index.

Thanks.

-jb

From: Paul Farrell <pauldfarr...@hotmail.com<mailto:pauldfarr...@hotmail.com>>
Reply-To: MarkLogic Developer Discussion 
<general@developer.marklogic.com<mailto:general@developer.marklogic.com>>
Date: Friday, August 1, 2014 at 7:55 PM
To: "general@developer.marklogic.com<mailto:general@developer.marklogic.com>" 
<general@developer.marklogic.com<mailto:general@developer.marklogic.com>>
Subject: [MarkLogic Dev General] Urgent request for assistance (please)

Hi,

I am desperately hoping someone out there may be able to help me out with an 
xquery app that I am building.

I have only just started with Marklogic and XQuery. It's going fairly well, 
however I am having a really tough time in modifying the content of one of my 
XML documents. I just cannot seem to get a change to an element to pick up. 
Here's my process (I have had to take things back as basic as I could just to 
try and get it working):

1. In Query console I have one tab open which queries for the contents of one 
XML doc

xquery version "1.0-ml";
declare namespace html = "http://www.w3.org/1999/xhtml";;
xdmp:document-get("C:/Users/Paul/Documents/MarkLogic/xml/ppl/ppl/jdbc_ppl_3790.xml")

2. This brings back the document as below

<?xml version="1.0" encoding="UTF-8"?>
<document>
<meta>
<rm_mimetype>
</rm_mimetype>
<rm_hasattachments>

false
</rm_hasattachments>
<rm_attachmentcount>
...
3790
</ppl_id>
<ppl_name>

Victoria Wilson
</ppl_name>


 3. I now want to update the <ppl_name> element using XQuery but it's just not 
happening. Here's the XQuery:
xquery version "1.0-ml";
declare namespace html = "http://www.w3.org/1999/xhtml";;


let $docxml :=
xdmp:document-get("C:/Users/Paul/Documents/MarkLogic/xml/ppl/ppl/jdbc_ppl_3065.xml")/document/meta/ppl_name
return
  for $node in $docxml/*
  let $target := 
xdmp:document-get("C:/Users/Paul/Documents/MarkLogic/xml/ppl/ppl/jdbc_ppl_3790.xml")/document/meta/*[fn:name()
 = fn:name($node)]
  return
  xdmp:node-replace($target, $node)

--- I am basically looking to replace the <ppl_name> element in the target 
(3790) with the <ppl_name> element from the source (3065).

4. I run the Xquery - it completes without error (making me thing it has 
worked) - return value reads "your query returned an empty sequence"

5. I then go back to the same tab as I used in step 1 and re-run the XQuery 
used in step 1. The doc (3790) comes back but it STILL has Victoria Wilson as 
the <ppl_name>


Can anyone please help? Perhaps the change needs committing? I just don't know.

Thanks for reading
Paul

_______________________________________________
General mailing list
General@developer.marklogic.com
http://developer.marklogic.com/mailman/listinfo/general

Reply via email to