【问题标题】:Validating XML with standard XSD schema in Visual Studio 2017在 Visual Studio 2017 中使用标准 XSD 架构验证 XML
【发布时间】:2019-04-06 20:31:51
【问题描述】:

如何使用 Visual Studio 2017 使用引用的公共 XSD 架构验证我的 XML?

在 Visual Studio 2017 中,首先我在 tools->Options->Text Editor->XML->Miscellaneous 下启用“自动下载 DTD 和模式”。然后,当我指定一个包含 xsi:schemaLocation 的 XML 文档时,Visual Studio 无法加载引用的架构,并且我无法利用 Visual Studio 的 XML 验证和智能感知编辑等功能。

这里是一个例子,取自VXML 2.1的符合标准的示例文档

<?xml version="1.0" encoding="UTF-8"?>
<vxml version="2.1" xmlns="http://www.w3.org/2001/vxml"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
  xsi:schemaLocation="http://www.w3.org/2001/vxml 
  http://www.w3.org/TR/2007/REC-voicexml21-20070619/vxml.xsd">

  <form>
    <block>hello</block>
  </form>

</vxml>

如果我在 Visual Studio 中将此作为 XML 文档输入,则会收到一堆警告:

The operation has timed out
The schema referenced from this location in your document contains errors

我认为@Petru Gardea 的这个答案与我的问题相似 - https://stackoverflow.com/a/21562249/90236 - W3C 显然会限制他们的服务器,并且 Visual Studio 等工具会超时。上面答案中的建议是将XSD文件带到本地并更新xsd路径。不幸的是,一个复杂的模式可能会通过 xsd:include 或 xsd:import 引入其他模式。我无法正确下载所有包含的架构以使其正常工作。

Visual Studio 不应该将引用的架构下载并缓存为 XML 架构集的一部分吗?我是否必须按照XML Validation with XSD in Visual Studio IDE 中的说明手动下载一些架构并将其添加到集合中?

其他工具,尤其是 XMLSpy,只要做正确的事,验证效果就很好。我可以让它在 Visual Studio 中工作吗?

-- 更新--

我发现这篇文章W3C’s Excessive DTD Traffic。但我不清楚接受的解决方案是什么。 Visual Studio 不应该为架构管理 XML 目录吗?我还被告知 w3.org 在没有有效用户代理标头的情况下不会响应 XSD 请求。这就是我的操作超时的原因吗?

【问题讨论】:

  • 您找到解决方案了吗?
  • 没有。不幸的是,我从来没有找到一个好的解决方案。我也没有用 Visual Studio 2019 重新测试过。也许它有更好的行为。我最终使用了 XMLspy 的评估副本。这在验证模式方面做得很好。那个 30 天的试用期(或任何试用期)是我为该项目所需要的全部。
  • VS2019 也好不到哪里去。不愿意花超过 500 美元购买一个带有基本 XML 模式验证的文本编辑器,我发现一个 Notepad++ 插件可以很好地完成这项工作。
  • 我已经测试过 Notepad++ 插件,但它们没有帮助。我刚刚升级到 XML Tools 3.0.4.2,它似乎做得很好。谢谢。

标签: xml visual-studio validation xsd vxml


【解决方案1】:

我在 VS2015 中遇到了类似的问题:当我尝试使用 dtd 或 xsd 文件进行验证/智能感知时,我收到了错误消息。 我试图删除 Schema selector 中的架构,但仍然保留了一些与共享点相关的 shema(未删除)。

最后,我重命名了这些 shemas 所在的文件夹,并且智能感知开始工作(重启 VS 后)。文件夹如下:

C:\Program Files\Common Files\Microsoft Shared\Web Server 扩展\15\TEMPLATE\XML

【讨论】:

    猜你喜欢
    • 2011-03-10
    • 2012-09-16
    • 1970-01-01
    • 2011-06-18
    • 2011-06-20
    • 2012-06-04
    • 1970-01-01
    • 1970-01-01
    • 2012-05-29
    相关资源
    最近更新 更多