Because errors in evaluating the fn:unparsed-text
function are
non-recoverable, these two functions are provided to allow an application to determine
whether a call with particular arguments would succeed.
fn:unparsed-text-available
( $href
as xs:string?
xs:boolean
fn:unparsed-text-available
( $href
as xs:string?
,$encoding
as xs:string
xs:boolean
The fn:unparsed-text-available
function determines whether a call
on the fn:unparsed-text
function with identical arguments would
return a string.
If the first argument is an empty sequence, the function returns false.
In other cases, the function returns true if a call on
fn:unparsed-text
with the same arguments would succeed, and
false if a call on fn:unparsed-text
with the same arguments would
fail with a non-recoverable dynamic error.
The functions fn:unparsed-text
and
fn:unparsed-text-available
have the same requirement for
determinism as the functions
fn:doc
and fn:doc-available
. This means that unless the
user has explicitly stated a requirement for a reduced level of determinism, either of
these functions if called twice with the same arguments during the course of a
transformation must return the same results each time; moreover, the
results of a call on fn:unparsed-text-available
must be consistent with the results of a subsequent call on
unparsed-text
with the same arguments.
This requires that the fn:unparsed-text-available
function should
actually attempt to read the resource identified by the URI, and check that it is
correctly encoded and contains no characters that are invalid in XML. Implementations
may avoid the cost of repeating these checks for example by caching the validated
contents of the resource, to anticipate a subsequent call on the
fn:unparsed-text
or fn:unparsed-text-lines
function. Alternatively, implementations may be able to rewrite an expression such as
if (unparsed-text-available(A)) then unparsed-text(A) else ...
to
generate a single call internally.
Since the function fn:unparsed-text-lines
succeeds or fails under
exactly the same circumstances as fn:unparsed-text
, the
fn:unparsed-text-available
function may equally be used to test
whether a call on fn:unparsed-text-lines
would succeed.