I moved the suggestion to an extra GitHub issue:
https://github.com/BaseXdb/basex/issues/988
Edits are welcome, Christian
On Wed, Sep 3, 2014 at 8:53 PM, Christian Grün christian.gruen@gmail.com wrote:
Possibly add signatures to allow removing a previously set property:
db:set-property($db as xs:string, $path as xs:string, $key as xs:string) as empty-sequence() PROP SET [path] [key]
Thanks, I missed that! An empty string, or an empty sequence would be an alternative:
db:set-property($db , "file.xml", "version", () )
Allowing arbitrary strings as keys is definitely helpful.
I see advantages and drawbacks for both approaches. Maybe it is also sufficient to restrict the character set of keys to those of element names (i.e., NCNames)?
Thinking of possible use cases, one might use something like the below example to find all documents with a specific property value:
for $a in db:properties('testdb')[properties/property[@name = 'prop1'][string() = 'value1'] return if (db:is-xml('testdb', $a/@resource)) then db:open('testdb', $a/@resource) else ()
Right. Here's one (of many) more way(s) to put it:
let $db := 'testdb' let $path := db:properties($db)[prop1 = 'value1']/@resource[db:is-xml($db, .)] return db:open('testdb', $path)
C.