我想检查XSLT是否存在HTML文件。 我怎样才能做到这一点? 我已经从https://gist.github.com/emth/4531924尝试了文件-exsent.xsl,但它对我不起作用。我一直试图让它运行超过2个小时,但我被卡住了。 这是我的蚂蚁片段:
<target name="transform">
<xslt in="/tmp/sample.xml" out="/tmp/out.html" style="/tmp/sample.xsl" />
</target>
这是我的xslt文件:
<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0" xmlns:java="http://www.java.com/">
<xsl:import href="file-exists.xsl"/>
...
<xsl:if test="java:file-exists('myfile.html', base-uri())">
<!-- do something here... -->
</xsl:if>
....
使用ant运行此命令会出现以下错误:
[xslt] Processing /tmp/sample.xml to /tmp/out.html
[xslt] Loading stylesheet /tmp/sample.xsl
[xslt] : Error! The first argument to the non-static Java function 'fileExists' is not a valid object reference.
[xslt] : Error! Cannot convert data-type 'void' to 'boolean'.
[xslt] : Fatal Error! Could not compile stylesheet
[xslt] Failed to process /tmp/sample.xml
任何人都可以为我提供一个运行示例,还是有其他选择?谢谢!
答案 0 :(得分:5)
我找到了解决方案:
<xsl:when test="fs:exists(fs:new('myfile.html'))" xmlns:fs="java.io.File">
<!-- do something here... -->
</xsl:when>
,它独立于XSLT 1.0或2.0
答案 1 :(得分:3)
如果文件是文本文件,则可以使用XSLT 2.0函数:
fn:func-unparsed-text-available()
fn:unparsed-text-available函数确定对具有相同参数的fn:unparsed-text函数的调用是否会返回一个字符串。该函数将尝试读取URI标识的资源,并检查它是否已正确编码且不包含无效字符。
这类似于fn:doc-available()
,它适用于XML文档。