次の方法で共有


XmlSchemaCollection クラス

XML スキーマ定義言語 (XSD: XML Schema Definition Language) スキーマおよび XDR (XML-Data Reduced) スキーマのキャッシュを格納します。このクラスは継承できません。

この型のすべてのメンバの一覧については、XmlSchemaCollection メンバ を参照してください。

System.Object
   System.Xml.Schema.XmlSchemaCollection

NotInheritable Public Class XmlSchemaCollection
   Implements ICollection, IEnumerable
[C#]
public sealed class XmlSchemaCollection : ICollection, IEnumerable
[C++]
public __gc __sealed class XmlSchemaCollection : public
   ICollection, IEnumerable
[JScript]
public class XmlSchemaCollection implements ICollection,
   IEnumerable

スレッドセーフ

この型の public static (Visual Basicでは Shared) のすべてのメンバは、マルチスレッド操作で安全に使用できます。インスタンスのメンバの場合は、スレッドセーフであるとは限りません。

解説

スキーマは、 Add メソッドを使用して読み込まれ、そのときにスキーマは名前空間 URI に関連付けられます。XML スキーマの場合、通常これはスキーマの targetNamespace プロパティです。

このクラスは、XML スキーマと XDR スキーマの両方を格納しますが、 XmlSchema を受け取ったり、返す任意のメソッドおよびプロパティは、XML スキーマだけに適用されます。

この製品のバージョンは、http://www.w3.org/TR/xmlschema-1 および http://www.w3.org/TR/xmlschema-2 にある W3C 勧告『XML Schema』をサポートします。XML スキーマは、スキーマ要素の W3C スキーマ名前空間、 http://www.w3.org/2001/XMLSchema を参照する必要があります。例については、 Add メソッドのトピックを参照してください。

XmlSchemaCollection は、効率的にデータ検証を行うために XmlValidatingReader で使用できます。

使用例

[Visual Basic, C#, C++] XmlSchemaCollection を使用して、XML ドキュメントを検証する例を次に示します。

 
Imports System
Imports System.Xml
Imports System.Xml.Schema
Imports System.IO

public class ValidXSD 

  public shared sub Main() 
    Dim sc as XmlSchemaCollection = new XmlSchemaCollection()
    AddHandler sc.ValidationEventHandler, AddressOf ValidationCallBack
    sc.Add(nothing, "books.xsd")

    if(sc.Count > 0)
      Dim tr as XmlTextReader = new XmlTextReader("notValidXSD.xml")
      Dim rdr as XmlValidatingReader = new XmlValidatingReader(tr)

      rdr.ValidationType = ValidationType.Schema
      rdr.Schemas.Add(sc)
      AddHandler rdr.ValidationEventHandler, AddressOf ValidationCallBack
      while (rdr.Read())
      end while
    end if

  end sub

  private shared sub ValidationCallBack(sender as object, e as ValidationEventArgs) 
    Console.WriteLine("XSD Error: {0}", e.Message)
  end sub

end class

[C#] 
using System;
using System.Xml;
using System.Xml.Schema;
using System.IO;

public class ValidXSD {

  public static void Main() {
    XmlSchemaCollection sc = new XmlSchemaCollection();
    sc.ValidationEventHandler += new ValidationEventHandler(ValidationCallBack);
    sc.Add(null, "books.xsd");

    if(sc.Count > 0)
    {
      XmlTextReader tr = new XmlTextReader("notValidXSD.xml");
      XmlValidatingReader rdr = new XmlValidatingReader(tr);

      rdr.ValidationType = ValidationType.Schema;
      rdr.Schemas.Add(sc);
      rdr.ValidationEventHandler += new ValidationEventHandler(ValidationCallBack);
      while (rdr.Read());
    }
    
  }

  private static void ValidationCallBack(object sender, ValidationEventArgs e) {
    Console.WriteLine("Validation Error: {0}", e.Message);
  }
}

[C++] 
#using <mscorlib.dll>
#using <System.Xml.dll>
using namespace System;
using namespace System::Xml;
using namespace System::Xml::Schema;
using namespace System::IO;

public __gc class ValidXSD {
public:
  static void main() {
    XmlSchemaCollection* sc = new XmlSchemaCollection();
    sc->ValidationEventHandler += new ValidationEventHandler(0, ValidationCallBack);
    sc->Add(0, S"books.xsd");

    if(sc->Count > 0)
    {
      XmlTextReader* tr = new XmlTextReader(S"notValidXSD.xml");
      XmlValidatingReader* rdr = new XmlValidatingReader(tr);

      rdr->ValidationType = ValidationType::Schema;
      rdr->Schemas->Add(sc);
      rdr->ValidationEventHandler += new ValidationEventHandler(0, ValidationCallBack);
      while (rdr->Read());
    }
    
  }

private:
  static void ValidationCallBack(Object* /*sender*/, ValidationEventArgs* e) {
    Console::WriteLine(S"Validation Error: {0}", e->Message);
  }
};

int main()
{
    ValidXSD::main();
}

[JScript] JScript のサンプルはありません。Visual Basic、C#、および C++ のサンプルを表示するには、このページの左上隅にある言語のフィルタ ボタン 言語のフィルタ をクリックします。

必要条件

名前空間: System.Xml.Schema

プラットフォーム: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ

アセンブリ: System.Xml (System.Xml.dll 内)

参照

XmlSchemaCollection メンバ | System.Xml.Schema 名前空間