【问题标题】:How to check if XSD schema is well formed?如何检查 XSD 模式是否格式正确?
【发布时间】:2018-01-17 14:57:55
【问题描述】:

是否有用于以编程方式检查 XSD 架构是否格式正确的类或常用方法(在用户选择 XSD 文件的情况下)?

或者我应该像对待任何其他 XML 一样对待它,并以某种方式根据 W3 2001 模式对其进行验证吗?

我要检查的 XSD 架构的开头如下:

<?xml version="1.0" encoding="utf-8"?>
<xs:schema id="Configuration" xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">

如果XmlReader 在验证 XML 时卡在无效的 XSD 上,也许它实际上可能会这样做? 更新:不,它没有。它只是愉快地继续。

注意:这个问题涉及检查 schema 格式是否正确,而不是检查某些 XML 是否根据模式有效。

【问题讨论】:

  • 这实际上与 C# 没有任何关系...您可以根据 w3.org 的 DTD 或 XSD 验证您的 XSD。 w3.org/2001/XMLSchema
  • 这不是引用的问题的重复。这个问题是关于验证模式文档的;另一个是关于使用模式验证实例文档。
  • @MatthewWhited 我知道,理想情况下,XSD 应该针对 W3 模式进行验证。不过,正如我在第一行中所述,我想知道在 .Net 中通常如何实现这一点。是否有特定的方法,或者是否像对待任何其他 XML 一样对待它?使用 W3 架构的本地副本或需要 Internet 连接并链接到实时 W3 副本是否正常?等等等等

标签: c# xml xsd


【解决方案1】:

关于架构文档,您可以提出三个有趣的问题:

1 它是格式良好的 XML 吗?

2 从符合模式文档的模式的意义上说,它是有效的 XML 吗?

3 它是否描述了一个有效的模式,考虑到 XSD 规范中的散文规则以及模式文档的模式中体现的规则?

为了使架构文档可用,它必须满足 (3),因此我认为单独检查 (1) 和 (2) 没什么意义。当然,您可以像检查任何其他 XML 文档一样检查格式正确性和有效性。

要检查 (3),您应该简单地将模式提交给模式处理器,例如 .NET 附带的本机 XSD 1.0 处理器(使用 XmlSchemaSet.Compile()),或 Saxon 中可用的 XSD 1.1 处理器(使用 @ 987654322@).

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-06-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多