假设我有一个 xml
架构,定义命名空间:http://foo.com/mySchema
。是否有一种标准方法来发布架构,以便架构的 xml 实例只需要定义命名空间而不是 xsi:schemaLocation
?
例如,如果您查看 imdb 的站点地图 xml:http://www.imdb.com/sitemap_US_index.xml.gz
xml 定义了一个命名空间:http://www.sitemaps.org/schemas/sitemap/0.9无需定义 schemaLocation。
如果您访问此 URI,它有 2 个 xsd:“siteindex.xsd”和“sitemap.xsd”
我的问题是:
- 这是 xml 标准的一部分吗?每个 xml 解析器都“知道”如何从 namespace URI 中查找架构吗?
- 是否有一个独立的“xsd repo”工具可以帮助我在我的域下发布 xsd,而无需自己设置 Web 服务器的麻烦。我正在想象某种带有某种 RESTful API 的东西,它允许我
PUT
新模式、DELETE
现有模式,当然还有GET
新模式,使用它们的命名空间URI
最佳答案
XML 标准没有为您作为 XSD 的发布者提供明确的方法来规定 XSD 的 targetNamespace
和 XSD 位置之间的绑定(bind)。
没有通用的“xsd repo”工具可以管理任何类型的众所周知的存储库,可以在这方面为您提供帮助。当然,现在有很多选择使用基于云的存储设施(Google Drive、DropBox、Amazon Cloud Drive 等)来轻松发布任何文件并通过 URL 使其公开可用。
您可以自行决定在何处发布您的 XSD。请记住namespace URLs do not have to be retrievable ;不要求存在 XSD。另请记住,命名空间和 XSD 物理位置之间的绑定(bind)是用户的责任,而不是 XSD 发布者的责任。您提到 xsi:schemaLocation
作为 XML 文档作者控制下的一种用于指定 XSD 位置的机制;另一个是 XML Catalog 。
关于xml - 发布 xml 模式的标准方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28008433/