代码之家  ›  专栏  ›  技术社区  ›  Michael Levy

在Visual Studio 2017中使用标准XSD架构验证XML

  •  0
  • Michael Levy  · 技术社区  · 6 年前

    如何使用visualstudio2017对引用的公共XSD架构验证XML?

    在VisualStudio2017中,首先在“工具”->“选项”->“文本编辑器”->“XML”->“杂项”下启用“DTD和架构的自动下载”。然后,当我指定一个包含和的XML文档时xsi:模式定位,Visual Studio无法加载引用的架构,我无法利用Visual Studio的功能(如XML验证和intellisense编辑)。

    下面是一个例子,从 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>
    

    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显然限制了他们的服务器和工具,比如visualstudio将超时。上述答案中的建议是将XSD文件置于本地并更新XSD路径。不幸的是,另一个模式可能会带来复杂的模式xsd:include或xsd:导入。我还没有能够正确地下载所有包含的模式以使其正常工作。

    XML Validation with XSD in Visual Studio IDE ?

    其他工具,尤其是XMLSpy,只需做正确的事情,验证就可以很好地工作。我能让它在visualstudio中工作吗?

    我找到了这个帖子 W3C’s Excessive DTD Traffic . 但我不清楚接受的解决方案是什么。visualstudio不应该管理模式的XML目录吗?我还被告知,如果没有有效的用户代理头,w3.org将不会响应XSD请求。这就是我手术超时的原因吗?

    1 回复  |  直到 6 年前
        1
  •  2
  •   Norbert Csibra    6 年前

    我试图删除 Schema selector ,但仍保留了一些与sharepoint相关的shema(未删除)。

    最后,我重命名了这些shema所在的文件夹,intellisense开始工作(在重新启动VS之后)。文件夹如下:

    C: \Program Files\Common Files\Microsoft共享\Web服务器