【问题标题】:Does XSLT doc-available(string) not work for absolute paths?XSLT doc-available(string) 是否不适用于绝对路径?
【发布时间】:2011-09-30 06:07:52
【问题描述】:

我在 Java 中使用 XSLT 2 (Saxon 9.x) 并遇到以下问题...

doc-available('file:///C:/Users/filename.xml') 

返回false

然而……

unparsed-text-available('file:///C:/Users/filename.xml') 

返回true

该文件是格式良好的 XML 并且存在。

如果我使用相对路径,那么这两个函数都会返回 true。 还尝试了file:/C:/Users/filename.xml,但遇到了同样的问题。 我也删除了 Windows 防火墙,但没有任何效果。

同样的代码在 Oxygen 中工作。

【问题讨论】:

  • 您是否从命令行运行 Saxon 9?然后使用-t 命令行选项查看是否显示有关加载/测试文件的更多详细信息。您使用的是哪个撒克逊版本,与 Oxygen 使用的版本有什么不同?
  • 有什么方法可以从样式表中找出 Saxon 的版本是什么?然后我可以在 Oxygen 和我的 java 应用程序中运行。
  • 当然,使用system-property('xsl:product-version')(例如在value-ofsequence 中)。

标签: xslt path relative-path absolute-path


【解决方案1】:

doc-available() 可以返回 false 有两个原因:文件不存在,或者它不能被解析为格式正确的 XML。您已经消除了使用未解析文本的第一种可能性;剩下的第二个。我看不出为什么相对 URI 应该起作用而不是绝对 URI 的任何原因。 (好吧,实际上我可以,就像相对 URI 实际上是从与绝对 URI 不同的位置获取文件一样。)

本质上,影响结果的变量太多了,很难告诉您具体案例中的原因是什么。

【讨论】:

  • 从样式表中转储整个环境会非常好。也许像Linux上的“env”。我想知道这是否可能。这样比较容易。
  • “整个环境”相当大——整个万维网!
  • 如果在文档中找不到链接的 DTD,doc-available() 也会失败。
猜你喜欢
  • 2011-07-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-28
  • 2012-09-07
  • 1970-01-01
相关资源
最近更新 更多