在本地托管 W3 XML 架构文件

Hosting W3 XML Schema files locally

提问人:shinytinsmile 提问时间:11/3/2016 更新时间:11/5/2016 访问量:2197

问:

我在一家公司工作,我们有自己的 XML 语言,有自己的一组架构,可以针对 W3 架构进行验证。出于业务原因,我需要在内部托管这些文件,而不是依赖 Web 托管版本。我对XML模式几乎没有经验,我想知道这到底意味着什么。它是否像将页面源代码复制并粘贴到我自己的文件中并将我们的其他模式指向那里一样简单?我还需要担心命名空间文档吗?这里的任何帮助都是值得赞赏的。谢谢。

XML XSD 架构 W3C -验证

评论

1赞 shinytinsmile 11/3/2016
@kjhughes 我想我以为我链接到的 XSD 我想在本地托管的 XSD - 它是我们架构中链接的内容:.<xs:import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="http://www.w3.org/2009/01/xml.xsd"/>
0赞 Michael Kay 11/4/2016
根据您的架构处理器,您甚至可能会发现,对于某些流行的架构(例如 XML 命名空间的架构),您甚至不需要提供 schemaLocation - 架构处理器已经知道在哪里可以找到它。
0赞 shinytinsmile 11/4/2016
@kjhughes 所以我不需要在本地托管命名空间文件?如果无法访问 W3 站点,这会导致问题吗?(用例是在DDOS攻击阻止我们访问W3的情况下)。
0赞 shinytinsmile 11/4/2016
@MichaelKay我可能是错的,但我认为这在我的用例中没有帮助。问题是有时由于DDOS攻击,我们无法访问W3。在这种情况下,即使处理器知道在哪里寻找,它也无法找到它,对吗?或者你是说在本地有某个地方我可以放置架构,处理器会在那里查看?
0赞 shinytinsmile 11/4/2016
@kjhughes 我想我对术语感到困惑。我现在知道我需要在本地出租。我想知道我是否需要主持。当您说不更改命名空间 URI 时,这就是您的意思 - 我不需要托管该文件吗?抱歉,我没有表达自己所需的领域语言。xml.xsdhttp://www.w3.org/XML/1998/namespace

答:

7赞 kjhughes 11/5/2016 #1

若要在本地托管外部 XSD(包括来自 W3C 的任何 XSD),请执行以下操作:

  1. 确定外部 XSD 依赖项。

    您可以通过所有 XSD 的传递闭包来标识 XSD 的外部依赖关系 by 和 属性。(否或暗示没有依赖项。xs:includexs:import@schemaLocationxs:includexs:import

  2. 在本地复制 XSD。

    请注意,要实际检索 xml.xsd,请使用浏览器以外的工具(例如 wget)或查看提供给 Web 浏览器的文件源。

  3. 调整对 XSD 的引用。

    更新属性以引用本地 而不是远程副本。请参阅如何正确引用本地 XML 架构文件?或者,使用 XML 目录重新映射到本地位置。@schemaLocation

请注意,您不需要更改任何命名空间 URI,这些 URI 是不需要可检索的词法构造

评论

1赞 shinytinsmile 11/10/2016
谢谢!我现在明白了。