Many thanks for taking the time to check! Your reassuring reply made me go and check how I was running the code, and yes, of course, I was running it in a context where that "base-uri(.)" was bound to cause confusion.

Thanks again!


On 13/01/17 07:49, Dr. Patrik Stellmann wrote:
I just tested you code (also with oXygen 18.1 but with minimal modifications on 
a dita map) and it worked fine:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform";
xmlns:xs="http://www.w3.org/2001/XMLSchema";
exclude-result-prefixes="xs"
version="3.0">

<xsl:mode name="#default" on-no-match="shallow-skip"/>

<xsl:template match="topicref">
<xsl:variable name="filename" as="xs:string">
<xsl:value-of select="@href"/>
</xsl:variable>
<xsl:variable name="resolvedFile" as="xs:anyURI"
select="resolve-uri(@href, 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>

</xsl:stylesheet>

I'd recommend you to create a similar minimal sample to make sure the problem 
lies really within this piece of code.

Patrik


------------------------------------------------------------------
Systemarchitektur & IT-Projekte
Tel: +49 40 33449-1142
Fax: +49 40 33449-1400
E-Mail: mailto:[email protected]

-----Ursprüngliche Nachricht-----
Von: oXygen-user [mailto:[email protected]] Im Auftrag von Lou 
Burnard
Gesendet: Donnerstag, 12. Januar 2017 19:59
An: [email protected]
Betreff: [oXygen-user] Checking whether a file exists in XSLT

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...



_______________________________________________
oXygen-user mailing list
[email protected]
https://www.oxygenxml.com/mailman/listinfo/oxygen-user

GDV Dienstleistungs-GmbH & Co. KG
Glockengießerwall 1
D-20095 Hamburg
www.gdv-dl.de

Sitz und Registergericht: Hamburg
HRA 93 894
USt.-IdNr : DE 205183123

Komplementärin:
GDV Beteiligungsgesellschaft mbH
Sitz und Registergericht: Hamburg
HRB 71 153

Geschäftsführer:
Dr. Jens Bartenwerfer
Michael Bathke

------------------------------------------------------------------
Diese E-Mail und alle Anhänge enthalten vertrauliche und/oder rechtlich 
geschützte Informationen. Wenn Sie nicht der richtige Adressat sind oder diese 
E-Mail irrtümlich erhalten haben, informieren Sie bitte sofort den Absender und 
vernichten Sie diese E-Mail. Das unerlaubte Kopieren sowie die unbefugte 
Weitergabe der E-Mail ist nicht gestattet.

This e-mail and any attached files may contain confidential and/or privileged 
information. If you are not the intended recipient (or have received this 
e-mail in error) please notify the sender immediately and destroy this e-mail. 
Any unauthorised copying, disclosure or distribution of the material in this 
e-mail is strictly forbidden.
_______________________________________________
oXygen-user mailing list
[email protected]
https://www.oxygenxml.com/mailman/listinfo/oxygen-user


_______________________________________________
oXygen-user mailing list
[email protected]
https://www.oxygenxml.com/mailman/listinfo/oxygen-user

Reply via email to