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:booleanfn:unparsed-text-available( $href as xs:string?,$encoding as xs:stringxs:booleanThe 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.