XmlSchemaSet XmlSchemaSet XmlSchemaSet XmlSchemaSet Class

定義

XML スキーマ定義言語 (XSD: XML Schema Definition Language) スキーマのキャッシュを格納します。Contains a cache of XML Schema definition language (XSD) schemas.

public ref class XmlSchemaSet
public class XmlSchemaSet
type XmlSchemaSet = class
Public Class XmlSchemaSet
継承
XmlSchemaSetXmlSchemaSetXmlSchemaSetXmlSchemaSet

XmlSchemaSet に格納されているスキーマを使用して XML ファイルを検証する例を次に示します。The following example validates an XML file using schemas stored in the XmlSchemaSet. XML ファイル内の名前空間 urn:bookstore-schema は、検証に使用する XmlSchemaSet 内のスキーマを特定します。The namespace in the XML file, urn:bookstore-schema, identifies which schema in the XmlSchemaSet to use for validation.

#using <System.Xml.dll>

using namespace System;
using namespace System::Xml;
using namespace System::Xml::Schema;
using namespace System::IO;

// Display any validation errors.
static void ValidationCallBack( Object^ /*sender*/, ValidationEventArgs^ e )
{
   Console::WriteLine( L"Validation Error: {0}", e->Message );
}

int main()
{
   // Create the XmlSchemaSet class.
   XmlSchemaSet^ sc = gcnew XmlSchemaSet;

   // Add the schema to the collection.
   sc->Add( L"urn:bookstore-schema", L"books.xsd" );

   // Set the validation settings.
   XmlReaderSettings^ settings = gcnew XmlReaderSettings;
   settings->ValidationType = ValidationType::Schema;
   settings->Schemas = sc;
   settings->ValidationEventHandler += gcnew ValidationEventHandler( ValidationCallBack );

   // Create the XmlReader object.
   XmlReader^ reader = XmlReader::Create( L"booksSchemaFail.xml", settings );

   // Parse the file. 
   while ( reader->Read() )
      ;

   return 1;
}
using System;
using System.Xml;
using System.Xml.Schema;
using System.IO;

public class Sample {

  public static void Main() {

    // Create the XmlSchemaSet class.
    XmlSchemaSet sc = new XmlSchemaSet();

    // Add the schema to the collection.
    sc.Add("urn:bookstore-schema", "books.xsd");

    // Set the validation settings.
    XmlReaderSettings settings = new XmlReaderSettings();
    settings.ValidationType = ValidationType.Schema;
    settings.Schemas = sc;
    settings.ValidationEventHandler += new ValidationEventHandler (ValidationCallBack);
 
    // Create the XmlReader object.
    XmlReader reader = XmlReader.Create("booksSchemaFail.xml", settings);

    // Parse the file. 
    while (reader.Read());
    
  }

  // Display any validation errors.
  private static void ValidationCallBack(object sender, ValidationEventArgs e) {
    Console.WriteLine("Validation Error: {0}", e.Message);
  }
}
Imports System
Imports System.Xml
Imports System.Xml.Schema
Imports System.IO

public class Sample 

  public shared sub Main() 

    ' Create the XmlSchemaSet class.
    Dim sc as XmlSchemaSet = new XmlSchemaSet()

    ' Add the schema to the collection.
    sc.Add("urn:bookstore-schema", "books.xsd")

    ' Set the validation settings.
    Dim settings as XmlReaderSettings = new XmlReaderSettings()
    settings.ValidationType = ValidationType.Schema
    settings.Schemas = sc
    AddHandler settings.ValidationEventHandler, AddressOf ValidationCallBack
 
    ' Create the XmlReader object.
    Dim reader as XmlReader = XmlReader.Create("booksSchemaFail.xml", settings)

    ' Parse the file. 
    while reader.Read()
    end while
    
  end sub

  ' Display any validation errors.
  private shared sub ValidationCallBack(sender as object, e as ValidationEventArgs) 
    Console.WriteLine("Validation Error: {0}", e.Message)
  end sub
end class

入力Input

このサンプルは、次の 2 つの入力ファイルを使用します。The sample uses the following two input files.

booksSchemaFail.xml:booksSchemaFail.xml:

<?xml version='1.0'?>
<bookstore xmlns="urn:bookstore-schema">
  <book>
    <author>
      <first-name>Benjamin</first-name>
      <last-name>Franklin</last-name>
    </author>
  </book>
  <book genre="novel">
    <title>The Confidence Man</title>
    <author>
      <first-name>Herman</first-name>
      <last-name>Melville</last-name>
    </author>
    <price>11.99</price>
  </book>
  <book genre="philosophy">
    <title>The Gorgias</title>
    <author>
      <name>Plato</name>
    </author>
    <price>9.99</price>
  </book>
</bookstore>

books.xsd:books.xsd:

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
    xmlns="urn:bookstore-schema"
    elementFormDefault="qualified"
    targetNamespace="urn:bookstore-schema">

 <xsd:element name="bookstore" type="bookstoreType"/>

 <xsd:complexType name="bookstoreType">
  <xsd:sequence maxOccurs="unbounded">
   <xsd:element name="book"  type="bookType"/>
  </xsd:sequence>
 </xsd:complexType>

 <xsd:complexType name="bookType">
  <xsd:sequence>
   <xsd:element name="title" type="xsd:string"/>
   <xsd:element name="author" type="authorName"/>
   <xsd:element name="price"  type="xsd:decimal"/>
  </xsd:sequence>
  <xsd:attribute name="genre" type="xsd:string"/>
 </xsd:complexType>

 <xsd:complexType name="authorName">
  <xsd:sequence>
   <xsd:element name="first-name"  type="xsd:string"/>
   <xsd:element name="last-name" type="xsd:string"/>
  </xsd:sequence>
 </xsd:complexType>

</xsd:schema>

OutputOutput

検証エラー :要素 'book' 名前空間 'urn: bookstore-スキーマ' 名前空間で無効な子要素 'author' があります ' urn: bookstore-スキーマ '。Validation Error: The element 'book' in namespace 'urn:bookstore-schema' has invalid child element 'author' in namespace 'urn:bookstore-schema'. 名前空間 'urn:bookstore-schema' の 'title' が期待されています。Expected 'title' in namespace 'urn:bookstore-schema'.

検証エラー :要素 'author' 名前空間 'urn: bookstore-スキーマ' 名前空間で無効な子要素 'name' があります ' urn: bookstore-スキーマ '。Validation Error: The element 'author' in namespace 'urn:bookstore-schema' has invalid child element 'name' in namespace 'urn:bookstore-schema'. 名前空間 'urn:bookstore-schema' の 'first-name' が期待されています。Expected 'first-name' in namespace 'urn:bookstore-schema'.

注釈

重要

  • 不明または信頼できないソースまたは場所からのスキーマを使用しないでください。Do not use schemas from unknown or untrusted sources or locations. これは、コードのセキュリティが低下します。Doing so will compromise the security of your code.
  • (インライン スキーマを含む) XML スキーマが本質的に、サービス拒否攻撃; に対する脆弱性信頼されていないシナリオでに受け付けられません。XML schemas (including inline schemas) are inherently vulnerable to denial of service attacks; do not accept them in untrusted scenarios.
  • スキーマ検証エラー メッセージと例外は、コンテンツ モデルまたはスキーマ ファイルの URI のパスに関する機密情報を公開できます。Schema validation error messages and exceptions may expose sensitive information about the content model or URI paths to the schema file. 信頼されていない呼び出し元にこの情報を公開しないように注意します。Be careful not to expose this information to untrusted callers.
  • 追加のセキュリティに関する考慮事項については、「セキュリティの考慮事項」セクションで説明します。Additional security considerations are covered in the "Security Considerations" section.

XmlSchemaSet キャッシュまたはライブラリの XML スキーマ定義言語 (XSD) スキーマを格納することができます。XmlSchemaSet is a cache or library where you can store XML Schema definition language (XSD) schemas. XmlSchemaSet は、ファイルまたは URL のスキーマにアクセスするのではなく、スキーマをメモリにキャッシュして、パフォーマンスを向上させます。XmlSchemaSet improves performance by caching schemas in memory instead of accessing them from a file or a URL. 各スキーマは名前空間 URI で識別され、された位置指定のスキーマをセットに追加したときにします。Each schema is identified by the namespace URI and location that was specified when the schema was added to the set. 使用する、XmlReaderSettings.Schemas割り当てるプロパティをXmlSchemaSetオブジェクトの XML リーダーがデータ検証に使用する必要があります。You use the XmlReaderSettings.Schemas property to assign the XmlSchemaSet object an XML reader should use for data validation.

セキュリティの考慮事項Security Considerations

  • 不明または信頼できないソースからスキーマを使用しないでください。Do not use schemas from unknown or untrusted sources. これは、コードのセキュリティが低下します。Doing so will compromise the security of your code. 外部の名前空間または場所で参照されているインクルード、インポート、およびスキーマの再定義要素は解決に関しては、インクルードまたはインポートするスキーマのベース URI。External namespaces or locations referenced in include, import, and redefine elements of a schema are resolved with respect to the base URI of the schema that includes or imports them. たとえば、またはスキーマのインポートのベース URI が空の場合またはnull、外部の場所は、現在のディレクトリに対して解決されます。For example, if the base URI of the including or importing schema is empty or null, the external locations are resolved with respect to the current directory. XmlUrlResolverクラスは、外部スキーマを解決するのには既定で使用されます。The XmlUrlResolver class is used to resolve external schemas by default. インクルード、インポートの解像度を無効にして、スキーマの要素を再定義、設定、XmlSchemaSet.XmlResolverプロパティをnullします。To disable resolution of include, import, and redefine elements of a schema, set the XmlSchemaSet.XmlResolver property to null.

  • XmlSchemaSetクラスで使用、System.Text.RegularExpressions.Regexクラスを解析し、XML スキーマの正規表現と一致します。The XmlSchemaSet class uses the System.Text.RegularExpressions.Regex class to parse and match regular expressions in an XML schema. XML スキーマの正規表現によるパターン ファセットの検証は、CPU 使用率の向上があり、高可用性のシナリオでは避ける必要があります。Validation of pattern facets with regular expressions in an XML schema may involve increased CPU usage and should be avoided in high availability scenarios.

  • 使用した結果発生した例外、XmlSchemaSetクラスなど、XmlSchemaExceptionクラスは、信頼されていないシナリオで公開してはなりません機密情報を含めることができます。Exceptions raised as a result of using the XmlSchemaSet class, such as the XmlSchemaException class may contain sensitive information that should not be exposed in untrusted scenarios. たとえば、SourceUriのプロパティ、XmlSchemaException例外の原因となったスキーマ ファイルへの URI のパスを返します。For example, the SourceUri property of an XmlSchemaException returns the URI path to the schema file that caused the exception. SourceUri信頼されていないシナリオで、プロパティを公開しない必要があります。The SourceUri property should not be exposed in untrusted scenarios. この機密情報が信頼されていないシナリオで公開されないように、例外を正しく処理する必要があります。Exceptions should be properly handled so that this sensitive information is not exposed in untrusted scenarios.

コンストラクター

XmlSchemaSet() XmlSchemaSet() XmlSchemaSet() XmlSchemaSet()

XmlSchemaSet クラスの新しいインスタンスを初期化します。Initializes a new instance of the XmlSchemaSet class.

XmlSchemaSet(XmlNameTable) XmlSchemaSet(XmlNameTable) XmlSchemaSet(XmlNameTable) XmlSchemaSet(XmlNameTable)

XmlSchemaSet を指定して、XmlNameTable クラスの新しいインスタンスを初期化します。Initializes a new instance of the XmlSchemaSet class with the specified XmlNameTable.

プロパティ

CompilationSettings CompilationSettings CompilationSettings CompilationSettings

XmlSchemaCompilationSettingsXmlSchemaSet を取得または設定します。Gets or sets the XmlSchemaCompilationSettings for the XmlSchemaSet.

Count Count Count Count

XmlSchemaSet 内の論理的な XML スキーマ定義言語 (XSD) スキーマの数を取得します。Gets the number of logical XML Schema definition language (XSD) schemas in the XmlSchemaSet.

GlobalAttributes GlobalAttributes GlobalAttributes GlobalAttributes

XmlSchemaSet 内のすべての XML スキーマ定義言語 (XSD) スキーマ内にあるすべてのグローバル属性を取得します。Gets all the global attributes in all the XML Schema definition language (XSD) schemas in the XmlSchemaSet.

GlobalElements GlobalElements GlobalElements GlobalElements

XmlSchemaSet 内のすべての XML スキーマ定義言語 (XSD) スキーマ内にあるすべてのグローバル要素を取得します。Gets all the global elements in all the XML Schema definition language (XSD) schemas in the XmlSchemaSet.

GlobalTypes GlobalTypes GlobalTypes GlobalTypes

XmlSchemaSet 内のすべての XML スキーマ定義言語 (XSD) スキーマ内にあるすべてのグローバル単純型とグローバル複合型を取得します。Gets all of the global simple and complex types in all the XML Schema definition language (XSD) schemas in the XmlSchemaSet.

IsCompiled IsCompiled IsCompiled IsCompiled

XmlSchemaSet 内の XML スキーマ定義言語 (XSD) スキーマがコンパイル済みかどうかを示す値を取得します。Gets a value that indicates whether the XML Schema definition language (XSD) schemas in the XmlSchemaSet have been compiled.

NameTable NameTable NameTable NameTable

新しい XML スキーマ定義言語 (XSD) スキーマを読み込むときに XmlNameTable で使用する既定の XmlSchemaSet を取得します。Gets the default XmlNameTable used by the XmlSchemaSet when loading new XML Schema definition language (XSD) schemas.

XmlResolver XmlResolver XmlResolver XmlResolver

スキーマのインクルード要素およびインポート要素で参照される名前空間または場所を解決するために使用する XmlResolver を設定します。Sets the XmlResolver used to resolve namespaces or locations referenced in include and import elements of a schema.

メソッド

Add(String, String) Add(String, String) Add(String, String) Add(String, String)

指定された URL の XML スキーマ定義言語 (XSD) スキーマを XmlSchemaSet に追加します。Adds the XML Schema definition language (XSD) schema at the URL specified to the XmlSchemaSet.

Add(String, XmlReader) Add(String, XmlReader) Add(String, XmlReader) Add(String, XmlReader)

XmlReader に格納されている XML スキーマ定義言語 (XSD) スキーマを XmlSchemaSet に追加します。Adds the XML Schema definition language (XSD) schema contained in the XmlReader to the XmlSchemaSet.

Add(XmlSchema) Add(XmlSchema) Add(XmlSchema) Add(XmlSchema)

指定された XmlSchemaXmlSchemaSet に追加します。Adds the given XmlSchema to the XmlSchemaSet.

Add(XmlSchemaSet) Add(XmlSchemaSet) Add(XmlSchemaSet) Add(XmlSchemaSet)

指定された XmlSchemaSet 内のすべての XML スキーマ定義言語 (XSD) スキーマを XmlSchemaSet に追加します。Adds all the XML Schema definition language (XSD) schemas in the given XmlSchemaSet to the XmlSchemaSet.

Compile() Compile() Compile() Compile()

XmlSchemaSet に追加された XML スキーマ定義言語 (XSD) スキーマを 1 つの論理スキーマにコンパイルします。Compiles the XML Schema definition language (XSD) schemas added to the XmlSchemaSet into one logical schema.

Contains(String) Contains(String) Contains(String) Contains(String)

指定されたターゲット名前空間 URI を持つ XML スキーマ定義言語 (XSD) スキーマが XmlSchemaSet 内に存在するかどうかを示します。Indicates whether an XML Schema definition language (XSD) schema with the specified target namespace URI is in the XmlSchemaSet.

Contains(XmlSchema) Contains(XmlSchema) Contains(XmlSchema) Contains(XmlSchema)

指定された XML スキーマ定義言語 (XSD) XmlSchema オブジェクトが XmlSchemaSet 内に存在するかどうかを示します。Indicates whether the specified XML Schema definition language (XSD) XmlSchema object is in the XmlSchemaSet.

CopyTo(XmlSchema[], Int32) CopyTo(XmlSchema[], Int32) CopyTo(XmlSchema[], Int32) CopyTo(XmlSchema[], Int32)

XmlSchema 内のすべての XmlSchemaSet オブジェクトを、指定したインデックスから始まる指定した配列にコピーします。Copies all the XmlSchema objects from the XmlSchemaSet to the given array, starting at the given index.

Equals(Object) Equals(Object) Equals(Object) Equals(Object)

指定したオブジェクトが、現在のオブジェクトと等しいかどうかを判断します。Determines whether the specified object is equal to the current object.

(Inherited from Object)
GetHashCode() GetHashCode() GetHashCode() GetHashCode()

既定のハッシュ関数として機能します。Serves as the default hash function.

(Inherited from Object)
GetType() GetType() GetType() GetType()

現在のインスタンスの Type を取得します。Gets the Type of the current instance.

(Inherited from Object)
MemberwiseClone() MemberwiseClone() MemberwiseClone() MemberwiseClone()

現在の Object の簡易コピーを作成します。Creates a shallow copy of the current Object.

(Inherited from Object)
Remove(XmlSchema) Remove(XmlSchema) Remove(XmlSchema) Remove(XmlSchema)

指定された XML スキーマ定義言語 (XSD) スキーマを XmlSchemaSet から削除します。Removes the specified XML Schema definition language (XSD) schema from the XmlSchemaSet.

RemoveRecursive(XmlSchema) RemoveRecursive(XmlSchema) RemoveRecursive(XmlSchema) RemoveRecursive(XmlSchema)

指定された XML スキーマ定義言語 (XSD) スキーマとそれがインポートしたすべてのスキーマを XmlSchemaSet から削除します。Removes the specified XML Schema definition language (XSD) schema and all the schemas it imports from the XmlSchemaSet.

Reprocess(XmlSchema) Reprocess(XmlSchema) Reprocess(XmlSchema) Reprocess(XmlSchema)

XmlSchemaSet 内に既に存在している XML スキーマ定義言語 (XSD) スキーマを再処理します。Reprocesses an XML Schema definition language (XSD) schema that already exists in the XmlSchemaSet.

Schemas() Schemas() Schemas() Schemas()

XmlSchemaSet 内のすべての XML スキーマ定義言語 (XSD) スキーマのコレクションを返します。Returns a collection of all the XML Schema definition language (XSD) schemas in the XmlSchemaSet.

Schemas(String) Schemas(String) Schemas(String) Schemas(String)

指定された名前空間に属している XmlSchemaSet 内のすべての XML スキーマ定義言語 (XSD) スキーマのコレクションを返します。Returns a collection of all the XML Schema definition language (XSD) schemas in the XmlSchemaSet that belong to the given namespace.

ToString() ToString() ToString() ToString()

現在のオブジェクトを表す文字列を返します。Returns a string that represents the current object.

(Inherited from Object)

イベント

ValidationEventHandler ValidationEventHandler ValidationEventHandler ValidationEventHandler

XML スキーマ定義言語 (XSD) スキーマ検証エラーに関する情報を受信するためのイベント ハンドラーを指定します。Specifies an event handler for receiving information about XML Schema definition language (XSD) schema validation errors.

適用対象