2012-01-04 55 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属性完全是可选的。

相关问题