> 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.