[xquery-talk] Changing the content of an XML document

Christian Schlaefcke cschlaefcke at wms-network.de
Tue Sep 2 12:03:26 PDT 2008


Hi Georg,

take a look at this thread:
http://www.stylusstudio.com/xquerytalk/200808/002828.html

I had a similar problem exept I wanted to delete certain nodes instead of
replacing them.

Espacially the "identity transform"
(http://en.wikipedia.org/wiki/Identity_transform) hint was very helpful
and it sounds as it could help you with your problem too.

Best regards,

Christian


>> Wolfgang [mailto:wolfgang at exist-db.org] wrote:
>>
>> > This means, in the script I load the XML file into a
>> > local variable using the doc() function and return the result to the
>> > client.
>>  >
>>  > But now, occationally some of the content of the file has
>> to be altered.
>>
>> I'm not sure I completely understand the question. Is the document
>> stored in the db or do you load it from the filesystem? And
>> do you only
>> need to temporarily change some content of that file (in which case I
>> would probably call an XSLT) or permanently (use XQuery
>> update extensions)?
>
> Actually I can reduce my question to the following: Assuming I have a
> variable which stores a node-tree like that
>
> let $tree :=
>   <node>
>     <subnode>
>       some text
>     </subnode>
>   </node>
>
> In reality $tree is the entire XML file which I want to send back to the
> client. Now, depending on some conditions I want to change the content
> of <subnode> "some text" to "some other text", before sending it. I
> don't actually want to alter the file in the database, just the message
> that I'm sending.
>
> If I placed the XML-file inside the script, I would write something like
>
> <node>
>   <subnode>
>   {
>     if ($condition)
>     then "some text"
>     else "some other text"
>   }
>   </subnode>
> </node>
>
> But since I have a couple of not too small XML files I fear that this
> will get a bit overcrwoded.
> Do you understand what I mean?
>
> Best,
> Georg





More information about the talk mailing list