2017-08-09 59 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()) 。