2017-08-09 123 views
1

是否有类或通常使用的方法来编程检查XSD模式是否格式正确(在用户选择了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? 更新:不,它不。它只是轻松地进行。

注意:这个问题的担忧检查模式很好地形成的,它是不是检查一些XML根据一个模式是有效的。

+0

这实际上与C#没有任何关系......并且您可以仅从w3.org对照DTD或XSD验证XSD。 http://www.w3.org/2001/XMLSchema –

+0

这不是所引用问题的重复。这个问题是关于验证模式文档的;另一个是关于使用模式验证实例文档。 –

+0

@MatthewWhited我知道,理想情况下,XSD应该根据W3模式进行验证。正如我的第一行所述,我想知道在.Net中通常如何实现这一点。有没有特定的方法,或者像其他XML一样对待它?使用W3模式的本地副本或需要互联网连接并链接到实况W3副本是否正常?等等 – Toby

回答

2

有三个有趣的问题人们可能要问关于模式文档:

1是它良好的XML?

2它是否符合架构文档模式的有效XML?

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

为了使模式文件可用,它必须满足(3),因此我在分别检查(1)和(2)时看到的意义不大。但是,当然,您可以像检查任何其他XML文档一样检查格式和有效性。要检查(3),您应该简单地将模式提交给模式处理器,例如.NET附带的本机XSD 1.0处理器(使用XmlSchemaSet.Compile())或Saxon中可用的XSD 1.1处理器(使用SchemaManager.Compile()) 。