Re: [bdbxml] Document modifications are not applied

Stephan Korthoff <[email protected]>
Newsgroups gmane.comp.db.dbxml.general
Message-ID <[email protected]>
I tested that query:

<dbxml>query 'collection('xmachberk.dbxml')/kenndaten[<at>doc_id="d378"]/
felder_als_attribute/ <at>double_feld_r'

wich returned the following result:

()double_feld_r="1,0"

I will try your other suggestions as soon as possible, which means 
monday morning.

Many thanks to all so far.

Stephan


George Feinberg wrote:

>
> On Jun 24, 2005, at 9:54 AM, Stephan Korthoff wrote:
>
>> I tried to run that query on the console and it returned the  desired 
>> result.
>
>
> Which query?  The one using "collection()" or the one that does not?
> You need to do the latter to be sure it's correct.
> What series of commands did you use on the console?
> Here is an example of how to do a context-based query (where it
> queries based on previous results):
>
> dbxml> query "doc('contName/docName')"
> 1 objects returned for eager expression 'doc('mem/foo')'
>
> dbxml> contextQuery "/root/a"
> 1 objects returned for expression '/root/a'
>
> (in the above, the content of the document was "<root><a/></root>")
>
> If you want to try again, you have to execute the initial "doc" query
> again to reset the context.
>
>
> There are at least 2 reasons why you will not see modifications, and
> ways to check them:
>
> 1.  The query expression passed to execute() returns no results,
> so nothing is modified.  Remember that the expression needs
> to be written as if it starts with the document root.  Leading "/" or  
> maybe
> "./" and no collection() or doc().
>     o test this by printing the result returned by the  
> XmlModify.execute(),
>     which is the number of modifications made.  This will be the same
>     as the number of results returned by the query.  If it's 0, your  
> query
>      is incorrect, or your document is not what you think.
>
> 2.  The modifications are not being written back.  You said
> that the XmlUpdateContext is set to do this.
>     o verify this using XmlUpdateContext.getApplyChangesToContainer(),
>     and make sure the value is true.
>
>
>
>>
>> Stephan
>>
>>
>>
>>
>>> --- Ursprüngliche Nachricht ---
>>> Von: George Feinberg <[email protected]>
>>> An: Stephan Korthoff <[email protected]>
>>> Betreff: Re: [bdbxml] Document modifications are not applied
>>> Datum: Fri, 24 Jun 2005 09:35:05 -0400
>>>
>>>
>>> All I can think of is that your query is not actually returning
>>> results, which means there will be no modifications.
>>> Try tuning your query so you know it's selecting
>>> the desired attribute using a combination of:
>>>      XmlManager.prepare()
>>> and this execute method:
>>>      XmlQueryContext.execute(XmlValue&, XmlQueryContext &, u_int32_t
>>> flags)
>>>
>>> Use the XmlValue object based on your document as the first argument.
>>>
>>> George
>>>
>>>
>>>> I tried your suggestion but the result is still the same.
>>>>
>>>> Stephan
>>>>
>>>>
>>>> George wrote:
>>>>
>>>> I see it now.  The context item for your modification is the
>>>> document itself, so you query for the modification must
>>>> take that into consideration.
>>>> So, instead of:
>>>>      BerkManager.prepare("collection('xmachberk.dbxml')/kenndaten
>>>> [ <at> doc_id=d" +                    String.valueOf(intDocId) +"]/
>>>> felder_als_attribute/ <at> double_feld_r", context);
>>>> You should use:
>>>>      BerkManager.prepare("./kenndaten[ <at> doc_id=d" +  
>>>> String.valueOf
>>>> (intDocId) +"]/felder_als_attribute/ <at> double_feld_r", context);
>>>>
>>>> Or something that is relative to the root of the document.
>>>>
>>>> George
>>>>
>>>>
>>>>
>>>>> Does nobody have an idea what the problem could be?
>>>>>
>>>>> Stephan
>>>>>
>>>>>
>>>>> Stephan Korthoff wrote:
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>> Hello,
>>>>>>
>>>>>> I've got a problem with the modification of documents. I took the
>>>>>> modification example from sleepycat.com and
>>>>>> implemented an attribute value change as follows:
>>>>>>
>>>>>>
>>>>>>   ....             try
>>>>>> {
>>>>>>   XmlModify BerkModifier = BerkManager.createModify();
>>>>>>   XmlQueryContext context = BerkManager.createQueryContext();
>>>>>>
>>>>>>   XmlQueryExpression BerkQExp =
>>>>>> BerkManager.prepare("collection('xmachberk.dbxml')/kenndaten
>>>>>> [ <at> doc_id=d" +                    String.valueOf(intDocId) +
>>>>>> "]/felder_als_attribute/ <at> double_feld_r", context);
>>>>>>
>>>>>>   System.out.println("DEBUG Anfrage:
>>>>>> collection('xmachberk.dbxml')/kenndaten[ <at> doc_id=d"
>>>>>> +                    String.valueOf(intDocId) +
>>>>>> "]/felder_als_attribute/ <at> double_feld_r");
>>>>>>
>>>>>>   BerkModifier.addUpdateStep(BerkQExp, newAttributeValue );
>>>>>>    System.out.println("DEBUG retdoc: " + retDoc.getContentAsString
>>>>>> ());
>>>>>>
>>>>>>   XmlDocument retDoc = BerkContainer.getDocument(docId);
>>>>>>
>>>>>>   XmlValue docValue = new XmlValue(retDoc);
>>>>>>              System.out.println("DEBUG docValue asString: " +
>>>>>> docValue.asString());
>>>>>>                          BerkModifier.execute( docValue, context,
>>>>>> BerkUpdContext);
>>>>>>              XmlDocument retDoc2 = BerkContainer.getDocument
>>>>>> (docId); // +
>>>>>> String.valueOf(intDocId));
>>>>>>              System.out.println("DEBUG docValue ret2: " +
>>>>>> retDoc2.getContentAsString());
>>>>>>   }
>>>>>>
>
>
>
> ------------------------------------------
> To remove yourself from this list, send an
> email to [email protected]
>
>



------------------------------------------
To remove yourself from this list, send an
email to [email protected]
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.