2012-01-04 52 views
0

我有兩個模式,一個與所述對象的主要定義時不是一個簡單的類型,而另一個具有如definiton對於不是簡單類型(字符串,整數,小數例如)類型「http://schemas.domain.com:Ssn」未聲明,或者使用多個模式

被稱爲common.xsd

當我驗證類型,它增加了兩種模式,但它doesn't發現在包括在類型文件。

Main.Xsd成立:

<xs:include schemaLocation="Common.xsd"/> 

,這是驗證函數:

XmlReaderSettings settings = new XmlReaderSettings(); 

       FileStream fileStream = File.OpenRead(xsdFile); 
      XmlSchema schema = XmlSchema.Read(File.OpenRead(System.IO.Path.Combine(System.AppDomain.CurrentDomain.BaseDirectory, "Schemas\\Main.xsd")), OnXsdSyntaxError); 
      XmlSchema schema2 = XmlSchema.Read(File.OpenRead(System.IO.Path.Combine(System.AppDomain.CurrentDomain.BaseDirectory, "Schemas\\Common.xsd")), OnXsdSyntaxError); 


       settings.ValidationType = ValidationType.Schema; 
       settings.ValidationFlags |= XmlSchemaValidationFlags.ProcessInlineSchema; 
       settings.ValidationFlags |= XmlSchemaValidationFlags.ProcessSchemaLocation; 
       settings.ValidationFlags |= XmlSchemaValidationFlags.ReportValidationWarnings; 

       //þurfum að adda common.xsd líka ! 
       settings.Schemas.Add(schema); 
       settings.Schemas.Add(schema2); 
       settings.ValidationEventHandler += new ValidationEventHandler(OnXsdSyntaxError); 

       using (XmlReader validator = XmlReader.Create(xmlFile, settings)) 
       { 
        while (validator.Read()) 
         isValid = true; 
       } 

錯誤是:

類型「http://schemas.domain.com: Ssn'沒有被聲明,或者不是一個簡單的類型。

所以很明顯它沒有添加scheme2文件爲此廣告這個自定義類型沒有找到定義。

我真的很感激幫助這一點,因爲i'm被迫在此驗證使用多個XSD文件。

回答

0

你有隻會導入類型從共享相同的命名空間中的主要架構類型的其他架構。

如果你想從不同的命名空間導入類型使用的命名空間屬性:

<xs:include schemaLocation="Common.xsd" namespace="http://schemas.domain.com" /> 

而且schemaLocation屬性完全是可選的。

相關問題