【问题标题】:Validate an XSD Schema?验证 XSD 架构?
【发布时间】:2010-11-15 01:22:33
【问题描述】:

我正在编写一个 XML 模式(一个 XSD)来描述我们的合作伙伴应该向我们发送数据的格式。

而且我很难找到可以验证我编写的 XSD 架构文件的工具。

到目前为止,我发现的最佳方法是首先编写一个示例输入 XML 文件,然后尝试使用 XSD 验证 that。但这感觉不像是最佳实践策略。

那么,我应该如何验证 XML 架构?

【问题讨论】:

  • 好问题。也许“验证”不是这里最好的动词,因为您针对 xsd“验证”xml,这不是您要问的。但是我经历了相同的过程,使用示例输入来检查 xsd,后来发现自己不得不更改 xsd,因为没有测试过极端情况。
  • @Daniel,不完全是。存在相当多的工具来验证模式本身,包括商业工具;您还可以基于 Apache Xerces 库构建一个。
  • 因为已经提到了一些商业编辑器,同时也有其他工具可用,价格更合理。比如XML ValidatorBuddy也支持XML批量校验。
  • 批量验证可以帮助您测试您的模式并进行更好的回归测试。所以拥有支持某种批处理任务的工具绝对是一个好处。
  • 在Java中我已经成功地将XSOM用作suggested here

标签: xml validation xsd


【解决方案1】:

W3C 在http://www.w3.org/2001/03/webdata/xsv 上有一个用于 XML 模式的在线验证器。由于 W3C 是 XML Schema 规范的来源,因此它们的验证器应该是值得信赖的。

【讨论】:

  • (18 个月后...)检查您的链接,它似乎已损坏。关于新网站在哪里的任何想法?
  • 至少在 Chrome 上,无论如何。在 Safari 和 Firefox 上完美运行。
  • @todda.speot.is 他们一定在第 16 版中修复了它
  • 该链接有时似乎无法访问,但如果您再试一次,它会再次找到。
  • “XML Schema Validator 服务已停止。”
【解决方案2】:

如果这是短期的事情,您可以使用像 Stylus Studio 这样的工具的评估副本。

如果是长期维护,您可能需要考虑购买 XML 模式编辑器,例如 Stylus、OxygenAltova

您没有指定源语言,但用 Java 或 .Net 编写模式验证器只需几行代码。

【讨论】:

  • 如果您刚开始项目会产生相互引用的模式,或者 WSDL 到 WSDL 到 Schema,那么还要看看 Altova SchemaAgent,它不仅可以可视化和验证此类引用,但也可以为您的组织或 Internet 提供一组架构。
  • 我发现的一个开源工具是 xmllint,我这样使用它:xmllint --noout --schema w3.org/2001/XMLSchema.xsdmySchema.xsd
  • @AlexanderKjäll 你应该把它作为一个(的)答案。
  • Stylus Studio 工具工作正常,您只需给他们您的邮件地址,他们就会向您发送 14 天激活试用版。在他们的工具中,当您将 xsd 放入工具中时,它可以验证并创建图表。最好的,
【解决方案3】:

Java SDK 附带一个名为 xjc 的标准工具。此工具生成解析您的模式的类。您可以使用此代码来验证您的合作伙伴的输入。

另请参阅:http://www.java2s.com/Tutorial/Java/0440__XML/ThexjcTool.htm

【讨论】:

  • 这比寻找下载或使用在线表格的工具要容易得多。
  • xjc 的官方 Java 8 文档
【解决方案4】:
cd /the/dir/with/your/schema
curl -O https://www.w3.org/2012/04/XMLSchema.xsd
xmllint.exe --noout --schema XMLSchema.xsd <your schema>

在 *nix(包括 Windows 上的 git-bash 或类似)中,如果架构有效,则 $? == 0 否则 $? == 1。我确定有一些等效的 powershell ...

这来自@AlexanderKjäll 对@lavinio 其他地方的回答的评论。我添加了我自己的评论说@AlexanderKjäll 应该添加这个作为答案。但是(至少对我而言),它并不完全正确,因为它无法使用远程文件 URI。因此我的回答。如果您对此表示赞同,请您支持他们的评论。

【讨论】:

    【解决方案5】:

    那么,我应该如何验证 XML 架构 (XSD)?

    你问的问题很好。只是“挥舞它”可能会给你带来麻烦。来自维基百科文章XML Schema Editor(强调我的)

    [W3C XML Schema] 标准是通用的,允许编程 继承和类型创建等概念,但它很复杂标准本身技术含量很高,并分 3 个不同的部分发布,因此如果没有就很难理解 投入大量时间

    那么,鉴于 W3C XML Schema 标准的复杂性,您如何确保您创建的模式符合该标准?来自同一篇维基百科文章:

    用户在使用 XSD 标准时面临的问题可能是 使用图形编辑工具缓解。虽然任何 基于文本的编辑器可用于编辑 XML Schema、图形 编辑器提供优势;允许文件的结构是 以图形方式查看和编辑,带有验证支持、入口助手 和其他有用的功能。

    在该 Wikipedia 文章的底部,您会找到 XML 模式编辑器的列表,其中一些被许可为“免费软件”。

    【讨论】:

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