首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在XSLT中检查文件的存在?

如何在XSLT中检查文件的存在?
EN

Stack Overflow用户
提问于 2013-11-27 13:09:25
回答 2查看 6.3K关注 0票数 5

我想在XSLT中检查一个HTML文件是否存在。我该怎么做?我已经从这里开始尝试了文件存在. but,但是它对我不起作用。我已经试着让它跑了两个多小时了,但我被卡住了。这是我的蚂蚁片段:

代码语言:javascript
复制
<target name="transform">
    <xslt in="/tmp/sample.xml" out="/tmp/out.html" style="/tmp/sample.xsl" />
</target>

这是我的xslt文件:

代码语言:javascript
复制
<?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运行此操作,我将得到以下错误:

代码语言:javascript
复制
[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

有人能给我举个活生生的例子吗?还有其他的选择吗?谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-11-27 15:09:56

我找到了一个解决办法:

代码语言:javascript
复制
<xsl:when test="fs:exists(fs:new('myfile.html'))" xmlns:fs="java.io.File">
    <!-- do something here... -->
</xsl:when>

它独立于XSLT1.0或2.0工作。

票数 6
EN

Stack Overflow用户

发布于 2013-11-27 13:52:55

如果该文件是文本文件,则可以使用XSLT2.0函数:

fn:函数-未解析-文本-可用()

fn:unparsed可用函数确定对具有相同参数的fn:unparsed函数的调用是否返回一个字符串。该函数将尝试读取URI标识的资源,并检查它是否已正确编码,并且不包含任何无效字符。

这与fn:doc-available()类似,后者使用的是XML文档。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20243412

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档