2012-01-04 6 views
0

私は2つのスキーマ、オブジェクトの主な定義を有するものを持っているを使用する場合、単純な型ではありません、そしてもう一方はdefinitonようになっていますcommon.xsdタイプ「http://schemas.domain.com:Ssn」が宣言されていない、または複数のスキーマ

私が検証した場合、それは両方のスキーマを追加しますが、それはdoesn't含ま内の型を見つけると呼ばれる単純型(文字列、整数、例えば10進数)

ていないタイプのためファイル。

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ファイル広告を追加していません。

- 私はこの検証では、複数のXSDファイルを使用するように強制するので、私は、これで助けを本当に感謝します。

答えて

0

あなたは、あなたのメインのスキーマ内の型と同じ名前空間を共有する他のスキーマからする唯一のインポートタイプが含まれています。

名前空間属性を使用して別の名前空間から型をインポートする場合:

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

またschemaLocation属性は完全にオプションです。

関連する問題