[oXygen-user] Checking whether a file exists in XSLT

Lou Burnard lou.burnard at retired.ox.ac.uk
Thu Jan 12 12:58:38 CST 2017


I need to write a stylesheet which checks the value of an attribute to 
see if it is the name of an existing file. You can't do it directly in 
XSLT of course, so I am following the advice of Mike Kay 
(https://www.oxygenxml.com/archives/xsl-list/200506/msg00400.html) and 
trying to do it with a java extension in an XSLT2 stylesheet. Here's the 
relevant template, which I run with saxon EE within oXygen 18.1

<xsl:template match="tei:pb">
         <xsl:variable name="filename" as="xs:string">
             <xsl:value-of select="@facs"/>
         </xsl:variable>
         <xsl:variable name="resolvedFile" as="xs:anyURI"
            select="resolve-uri(@facs, base-uri(.))"/>
         <xsl:message>
             <xsl:value-of select="concat($filename, ' resolves to ', 
$resolvedFile)"/>
         </xsl:message>

         <xsl:if test="not(fs:exists(fs:new($resolvedFile)))"
             xmlns:fs="java.io.File">
             <xsl:value-of select="concat($filename, '   Not Found')"/>
         </xsl:if>
         <xsl:text>
         </xsl:text>

     </xsl:template>

The messages produced tell me that the filenames are being resolved 
correctly (they are all relative URLs like this 
../../something/foo/foo.jpg) but the test always returns true, whether 
the file concerned exists or not. Am I missing something obvious? Or not 
obvious? This has been driving me nuts all day...





More information about the oXygen-user mailing list