Open
Description
Given a database named "foo^bar" and this document at /docs/doc01.xml:
<doc xml:base="foo/bar/">
<link href="doc2.xml"/>
</doc>
This query:
let $uri := 'foo^bar/docs/doc01.xml'
let $doc1 := collection('foo^bar/docs/doc01.xml')
let $doc2 := doc($uri)
let $doc3 := doc('foo^bar/docs/doc01.xml')
let $link := $doc3/*/link
let $baseURIdoc := base-uri($doc1)
let $baseURILink := base-uri($link)
let $resolvedURI := () (: resolve-uri($baseURI, string($link/@href)) :)
return<result>
<doc1>{
$doc1
}</doc1>
<doc2>{
$doc2
}</doc2>
<doc3>{
$doc3
}</doc3>
<link-elem base-uri-doc="{$baseURIdoc}"
base-uri-link="{$baseURILink}"
resolved-uri="{$resolvedURI}"
>
{$link}
</link-elem>
</result>
Fails with the message:
URI argument is invalid: Illegal character in path at index 3: foo^bar/docs/doc01.xml.
The failure is on the baseURILink value--if you change it to "()" (commenting out the call to base-uri()), the query succeeds, and in particular, the value of base-uri() for the document itself succeeds.
Thus there is an issue with getting the base-uri() of an element within the document.