我對XML的理解並不完全令人驚歎,但我對註解/ appinfo中的內容的理解是您可以使用任何格式良好的XML,並且這種方法的鬆散驗證。我對鬆散驗證的理解是,如果能夠獲得相關的模式信息,元素和屬性將被驗證。驗證XML模式註釋中的XML內容/ appinfo
我的情況是,我有一個XML模式,其中有一些內容需要驗證。我有相關的模式來驗證內容。
我已經採取了一個完全簡單的XML模式併爲其添加了一個appinfo元素,如下所示。 appinfo的內容是另一個元素聲明,純粹是爲了不引用另一個模式的簡單性。我試圖驗證的模式顯然引用了不同的東西。
<?xml version="1.0"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.demo.org"
xmlns="http://www.demo.org"
elementFormDefault="qualified">
<xsd:annotation>
<xsd:appinfo>
<xsd:element name="Demo">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="A" type="xsd:iteger"/>
<xsd:element name="B" type="xsd:integer"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:appinfo>
</xsd:annotation>
<xsd:element name="Demo">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="A" type="xsd:integer"/>
<xsd:element name="B" type="xsd:integer"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
注意在APPINFO部分,我已經故意拼寫錯誤的元素A.「整數」如果我這樣做,在該模式中的主體,然後XmlSchemaSet.Compile()
會告訴我這個模式無效。
但是,如果我使用上面寫的架構,它告訴我沒有問題。在更復雜的文件,我開始,我通過XmlSchemaSet.Add()
提供的外部架構的XmlSchemaSet我也試着從http://www.w3.org/2001/XMLSchema.xsd加載XML模式和裝載模式被驗證爲XmlDocument
和運行XmlDocument.Validate()
但沒有喜悅。
我覺得我完全錯過了花費幾個小時後完全基本的東西。任何指針讚賞!