xml - 组织 XML 模式文件的最佳实践

标签 xml xsd schema

假设我的公司有很多架构,一些用于网络服务,一些用于其他目的。通过导入在许多这些模式中使用了通用类型定义,也有特定于应用程序的模式。

时不时地更改、版本化和导出架构。

目前公司使用SVN来存储schema文件。它们的结构不高效,存在冗余和其他问题。文件和文件夹没有明确的层次结构。

问题 1:使用 SVN 来存储和版本化 XSD 文件是否是一种好的做法。什么是其他好的方法?

问题 2:如何有效地构建文件?我想将它们组织在与文件 namespace 相关的文件夹中。

问题3:导出时,是平铺(一个文件夹所有文件)还是根据命名空间保持文件夹层次结构更常见?

最佳答案

这里有一条建议。

例如,参见 OGC 架构存储库:

这是最大的公共(public)架构存储库之一,广泛用于 GIS 行业。这些模式远非完美,但他们已经吸取了很多教训。

回答您的问题:

您应该将架构的“规范版本”与“编辑版本”或“修订版”分开。一旦发布,您可能需要并行支持一个模式的多个版本。例如:

两者广泛并行使用。

因此您应该将“规范版本”纳入存储库文件夹结构。

“修订”应该由版本控制系统处理。您可能(并且将)需要对已发布的版本进行修复。

如果您的模式是公开的,那么将它们放入 GitHub 等公共(public)代码存储库中可能很有意义。这将允许您的技术用户通过拉取请求向您发送修复。 (这是我希望 OGC 模式具有的功能。)社区输入可能非常重要。 XML Schema 不是最容易处理的事情,即使是有经验的开发人员也会出错。社区将有助于使事情顺利进行。

请使用 semantic versioning为您的架构。当前策略中的 OGC 在 namespace URI 中使用 MAJOR 和 MINOR,但不使用 PATCH。因此,对于 GML 3.2.1 模式, namespace URI 是:

模式 URI 不必与命名空间 URI 相同(比较 http://schemas.opengis.net/gml/3.2.1/http://www。 opengis.net/gml/3.2)。如果您在文件夹中使用 MAJOR.MINOR.PATCH 而在命名空间中仅使用 MAJOR.MINOR - 那么这些 URI 在技术上什至不能相同。但应该有一个直接的转变。有了像 http://www.opengis.net/gml/3.2 这样的 URI,我就会知道在哪里寻找模式。

每个规范都有一个“入口文件”是很好的,就像这样:

与结构和命名保持一致。

如果您在一个存储库中有许多相关模式,相互导入/包含,最好使用相对链接。这将使其他人更容易下载和验证本地副本。

不要做变色龙模式。甚至不要谷歌它。每个规范都应该有自己的命名空间。没有变色龙进口。

不,不要做任何拼合的副本。为什么?只需授予对您的模式存储库的访问权限,再加上可能包含所有模式的 ZIP。

包括许可证,以便清楚许可证是什么。

使用多种已知工具检查和编译您的架构。 Xerces、Oxygen、Xmlmind、XML Spy。 Java 上的 JAXB/XJC,C# 上的 xsd.exe,Python 上的 PyXB。确保它在 OOTB 时有效。

为您的模式提供 XML 示例。

关于xml - 组织 XML 模式文件的最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29695959/

相关文章:

java - 用于从 xsd 生成 C++ 类的 JAXB 等价物?

c++ - 是否有任何 C++ XSLT 库?

mysql - 使用MYSQL复制加速Schema变更和表优化

html - 如何转义字符串中的特定 HTML 标记

java - Android 抽屉式导航失败

c# - Mono:Webservice 在 XML 中添加 UTF-8 BOM

xml - 表示字符串到字符串字典的 XML 模式是什么?

schema - 标准化并分解为 BCNF

database - BCNF分解和 key

java - 单击按钮后更新按钮文本