xsl-list
[Top] [All Lists]

Re: [xsl] How could I detect/prevent a file not found exception in document()?

2019-02-09 03:31:14
Thanks Martin

cheers
T

-----Original Message-----
From: Martin Honnen martin(_dot_)honnen(_at_)gmx(_dot_)de
<xsl-list-service(_at_)lists(_dot_)mulberrytech(_dot_)com> 
Sent: Wednesday, 6 February 2019 2:36
To: xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
Subject: Re: [xsl] How could I detect/prevent a file not found exception in
document()?

On 05.02.2019 14:21, Trevor Nicholls trevor(_at_)castingthevoid(_dot_)com wrote:

A set of templates which are used to fill in the clickable text of a 
cross-reference are occasionally failing for me with a "file not found"
exception. The processor we are using for this is Saxon but I'm hoping 
that there may be a way to code round the problem that is not 
processor-specific, so I am posting the relevant part of it here 
rather than on the Saxon list.

The stylesheet containing these templates is currently XSL 1.0 because 
an extensive array of stylesheets include it, and some of them have to 
be XSL 1.0. But I could easily do a separate XSL 2.0 version if that 
helped avoid this issue.

In general Saxon 9 supports the function doc-available, like any other
processor supporting XSLT/XPath 2 and later so using e.g.


       <!-- can't find the file/id, so need a bit of magic: use the 
cache document from the previous build -->

       <xsl:otherwise>

         <xsl:variable name="cachefile">

           <xsl:call-template name="cache-filename">

             <xsl:with-param name="pathname" select="$linkfile" />

           </xsl:call-template>

         </xsl:variable>

         <xsl:variable name="cachedlink">

           <!-- doc TWO -->

    <xsl:if test="doc-available($cachefile)">

           <xsl:for-each select="document($cachefile,/)">

might help.

With Saxon 9.8 or 9.9 and XSLT 3 you would also be able to use 
`xsl:try/catch"
--~----------------------------------------------------------------
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
EasyUnsubscribe: http://lists.mulberrytech.com/unsub/xsl-list/1167547
or by email: xsl-list-unsub(_at_)lists(_dot_)mulberrytech(_dot_)com
--~--

<Prev in Thread] Current Thread [Next in Thread>