Re: [bdbxml] Namespaces in metadata
Mike Trotman <mike.trotman-Lm8t4bfMRib2eFz/[email protected]>
| Newsgroups | gmane.comp.db.dbxml.general |
|---|---|
| Message-ID | <[email protected]> |
Thanks George.
I managed to fix my Perl problem - but I'm not sure I can remember how
I think it was an incorrect use of XmlValues when setting the metadata
values
so the namespaces were OK but the actual data was blank!
I'll use your example (which is beautifully compact and a good reminder
to use dbxml command for testing)
to make sure my documentation has an appropriate comment in case I do
this again.
Mike
George Feinberg wrote:
>
> Mike,
>
> I did not run the Perl script you sent, but the following is a small
> script that can be run in the dbxml shell that does what you
> are talking about, and works. It just verifies that you can
> query for user-defined metadata. You might check to be sure
> there is not another error in your Perl script or original
> XQuery expression.
>
> You can run this by saving it to a file, and running
> dbxml -s <filename>
> or run it directly from the shell using the "run" subcommand.
>
>
> createContainer ""
> putDocument foo <root/>
> setMetaData foo X A string a
> setMetaData foo Y B string b
> setNamespace x X
> setNamespace y Y
> query "for $doc in collection('')
> return dbxml:metadata('dbxml:name',$doc)"
> print
> query "for $doc in collection('')
> return dbxml:metadata('x:A',$doc)"
> print
> query "for $doc in collection('')
> return dbxml:metadata('y:B',$doc)"
> print
>
>
> George
>
> On Jun 15, 2005, at 8:37 PM, Mike Trotman wrote:
>
>> I am using the Perl interface to DbXML.
>>
>> I can retrieve document metadata in specific namespaces OK using
>> getMetaData('URI','attName',$value);
>>
>> BUT
>>
>> when I try this in XQuery - it only seems to work for the dbxml
>> namespace.
>>
>> Below is an example program that demonstrates this not working.
>> Apologies for the length - it was the shortest self-contained example I
>> could come up with that worked.
>> In the script I create a simple document,
>> then
>> setMetaData('X','A','a');
>> setMetaData('Y','B','b');
>>
>> but when I use the following context:
>>
>> $context = $mgr->createQueryContext();
>> $context->setNamespace('x' => 'X');
>> $context->setNamespace('y' => 'Y');
>>
>> and try to retrieve values in XQuery
>>
>> let $XA := dbxml:metadata("x:A",$doc/*[1])
>> let $n := dbxml:metadata("dbxml:name",$doc)
>> let $YB := dbxml:metadata("y:B",$doc)
>>
>> only the document name in $n has content;
>>
>> There may well be something stupid I am doing - so any help would be
>> greatly appreciated.
>>
>
> Message Scanned by ClamAV on datalucid.com
Message Scanned by ClamAV on datalucid.com
------------------------------------------
To remove yourself from this list, send an
email to [email protected]