我已經接收到的XSD架構MainSchema.XSD並且還common.xsd模板包含的架構。創建類對象使用XSD.EXE
在MainSchema.xsd我有以下行:
<xs:include schemaLocation="Common.xsd"/>
而且Common.Xsd舉辦各種類型像數據的定義:
<xs:simpleType name="SSN">
<xs:annotation>
<xs:documentation>Social security number is 10 digits</xs:documentation>
<xs:appinfo>
<altova:exampleValues>
<altova:example value="5412983209"/>
<altova:example value=""/>
</altova:exampleValues>
</xs:appinfo>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:whiteSpace value="collapse"/>
<xs:pattern value="([0-9]{10})?"/>
</xs:restriction>
</xs:simpleType>
和MainSchema我所說的屬性SSNField類型SSN:
<xs:attribute name="CompanySSN" type="SSN">
<xs:annotation>
<xs:documentation>SSN number of Company</xs:documentation>
</xs:annotation>
</xs:attribute>
當我使用此命令創建ac#對象類:
XSD.EXE -c -l:C#MainSchema.xsd Common.Xsd
它然後創建了一個名爲對象:
MainSchema_Common.cs
在i驗證對象反對這個模式它出現了一個例外:
{「類型'http://schemas.domain.com:SSN'沒有聲明,或不是一個簡單的類型PE。「}
有誰知道什麼i'm做錯了什麼?
熊,我從外部接收到這個XSD架構和有人告訴我,有這個文件沒有錯誤MYND。
誠懇 AGH
感謝您的回答,你是什麼意思「ParentNodeType」 – aghaux
看起來您需要在序列化期間爲特定節點注入命名空間。爲了做到這一點,您需要告訴序列化程序要將名稱空間應用於的節點的父節點的類型。我不確定這是爲什麼,但這就是它的工作原理。 –
好的很好的答案謝謝,但我還沒有設法得到這個工作。所以我只是把代碼上Common.Xsd,所包含的XSD文件,並把它合併進mainSchema.xsd並重新生成的對象和它的工作。 使用包含的模式文件非常沮喪,並且沒有使這些東西與XML驗證一起工作。 – aghaux