首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >XSD文件有密码

XSD文件有密码
EN

Stack Overflow用户
提问于 2013-03-07 00:46:07
回答 2查看 312关注 0票数 0

我到处寻找这个问题的答案,但似乎找不到一个。

我正在尝试根据XSD文件验证XML文件。到目前为止,我已经写了这篇文章。

代码语言:javascript
复制
$x_validate = new DOMDocument();
$x_validate->load($xml_path);

$x_validate->schemaValidate($xsd_path);

首先,将路径设置为远程位置。然后我意识到这些远程文件需要身份验证才能看到。因此,为了避免这种情况,我将文件下载到我的目录中,路径如下所示。

代码语言:javascript
复制
$xml_path = "./test-v1.xml";
$xsd_path = "./test-v1.xsd";

唯一的问题是它不工作,我得到了一些错误。其中之一就是这个。出于安全考虑,我把URL去掉了。

代码语言:javascript
复制
Warning: DOMDocument::schemaValidate() [domdocument.schemavalidate]: Element '{http://www.w3.org/2001/XMLSchema}include': Failed to load the document 'https://****' for inclusion. in C:\Xampp\htdocs\cdes\xml-validation\run-validation.php on line 15

因此,由于这个错误,我回到了最初的URL远程引用。

有人能告诉我在验证模式之前将身份验证用户名和密码发送到XSD和XML文件的正确方向吗?

谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-03-07 03:32:25

您应该将文件下载到本地硬盘,包括通过includes引用的文件,然后使用所谓的Catalog自动使用本地文件而不是URI。

这也将极大地提高验证速度。我在一个不同的问答材料中概述了这个范例:

对于您使用所提供的错误信息编写的身份验证问题,并不完全清楚究竟是什么导致了这个问题,以及如何解决它(除了使用编目之外)。当您能够使用浏览器下载这些文件时,请转到本地副本。大多数情况下,您也可以在zip包或类似文件中下载一组XSD文件。

如果您无法设法下载,那么您将需要排除HTTP连接的故障,这需要您使用网络嗅探器跟踪请求,或者您使用PHP5.4提供的外部加载器回调(参见libxml_set_external_entity_loader())注入您自己的处理,还可以通过libxml_set_streams_context()stream_notification_callback()上的通知将回调注入到流中。

TLDR:查找目录。

票数 2
EN

Stack Overflow用户

发布于 2013-03-07 00:53:22

不确定DOMDocument类是否支持这种方式,但通常可以使用以下格式将身份验证数据添加到URL:

http://username:password@cooldomain.com/bla.xsd

您是否尝试过将其添加到XSD路径中?

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

https://stackoverflow.com/questions/15253176

复制
相关文章

相似问题

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