当前位置: 首页 > 知识库问答 >
问题:

Saxon解析的XSL样式表无法访问远程资源

苏宜人
2023-03-14

试图用Saxon HE解析XSLT 2.0样式表,得到以下错误:

Error on line 44 column 168 
  XTSE0165: I/O error reported by XML parser processing
  http://www.loc.gov/standards/mods/inc/mimeType.xsl: Server returned HTTP response code:
  403 for URL: http://www.loc.gov/standards/mods/inc/mimeType.xsl

此样式表包含一些它试图检索的远程资源:

<xsl:include href="http://www.loc.gov/standards/mods/inc/dcmiType.xsl"/>
<xsl:include href="http://www.loc.gov/standards/mods/inc/mimeType.xsl"/>
<xsl:include href="http://www.loc.gov/standards/mods/inc/csdgm.xsl"/>
<xsl:include href="http://www.loc.gov/standards/mods/inc/forms.xsl"/>
<xsl:include href="http://www.loc.gov/standards/mods/inc/iso3166-1.xsl"/>
<xsl:include href="http://www.loc.gov/standards/mods/inc/iso639-2.xsl"/>

然而,我已经确认所有的链接都是有效的,并且可以通过浏览器或curl检索。此外,当我在localhost上提供这些文件时,并更改

我的问题是,是否有某种Saxon或Java设置阻止Saxon HE访问非本地主机上的资源?

非常感谢您的建议。

更新:我使用pyjxslt作为服务器来执行Saxon转换,运行在localhost:6767


共有1个答案

步浩壤
2023-03-14

我使用XQuery命令行中的doc()函数尝试了这一点,使用“Charles”来监视HTTP流量。

详细的HTTP回复称,该网站正在使用Cloudflare限制访问,并“根据浏览器的签名”拒绝访问。

因此,除非你能在请求中插入某种代理来更改浏览器签名,或者说服网站所有者他们的安全策略毫无意义,否则你可能会走运。

我注意到的一件事是,Safari在超文本传输协议请求头中包括“接受应用程序/xml”,而Java没有。除非请求头说它将接受XML,否则网站可能被配置为不提供XML。我以前没有见过这种情况,但这是需要调查的。

顺便说一句,默认情况下,Saxon不会直接调用Java API来获取文档;如果使用标准(默认)URIResolver,则会创建一个封装请求URL的InputSource对象,并将InputSource传递给XML解析器,然后该解析器调用Java来获取资源。我不知道XML解析器实际使用的是哪些Java API。但如果你能找到一种可行的方法,你可以通过编写一个配置HTTP请求并直接获取InputStream的URIResolver来绕过这个问题。

 类似资料:
  • 我正试图通过MoneySend API在万事达卡的沙箱上提出付款请求。下面是C#的示例代码,也可以在这里找到 问题陈述: 完全异常: mastercard.core.exceptions.apiExceptions:无法解析远程名称:“sandbox.api.mastercard.com”-->system.net.webException:无法解析远程名称:“sandbox.api.master

  • 这样的问题已经问过好几次了,我明白为什么会发生,大概除了重试,我们对此无能为力。 我有一个关于名称解析的问题。 我使用的是3.5.NET的AWS.NET SDK。我正在上传一个大文件(>500MB到1.5GB,医学图像)。我调用方法。 错误发生在大约250MB上载完成后。 这是实际的例外

  • 主要内容:本节引言:,1.工程项目结构解析:,2.深入了解三个文件:,本节小结:本节引言: 前面讲了一堆看似和我们Android开发无关的东西是吧,当然是现在看似而已,以后你回头看就知道了! 好吧,本节我们就来以前面创建的Hello World项目为入口,来了解工程结构, 以及Android中的资源访问的两种方式!后续教程使用的IDE是Android Studio,因为在前几天谷歌正式宣布,在年底前终止对其他IDE开发环境的支持! 1.工程项目结构解析: 我们开发大部分时间都

  • 我有一个EJB服务器在一台Liberty服务器上运行,而客户端在另一台服务器上运行。 如果我使用下面的代码手动查找远程EJB,我可以访问EJB。 上述工作按预期方式工作,它能够调用在另一个服务器实例上运行的远程 EJB 并按预期工作。 我尝试在我的< code>@Controller类中使用Spring,并通过注释< code>@EJB或< code > @自动连线引用EJB mvc-dispat

  • 我需要远程调试我的应用程序,但由于以下错误,我无法这样做: 我有: null 下面是iptables的输出: 如何用8000端口修复此问题?或者也许我的主要问题还有其他原因?

  • 问题内容: 我的maven spring项目目录结构如下所示。我正在使用基于Spring-4注释的配置。我按如下方式配置资源。我尝试了许多Stackoverflow问题和其他网站中建议的许多方法 但是jsp文件无法加载资源,所有静态内容请求均返回404错误。我在jsp中尝试了这些东西, 编辑:我正在使用Servlet 2.5,因为到目前为止,我无法将项目从JBoss 5升级到更高版本。JBoss5