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. この例の出力は、XML ファイルに2つのスキーマ違反があることを示しています。Output from the example shows that the XML file has two schema violations:

  • 最初<の book > 要素には<author > 要素が含まれてい<ますが、title > または price > 要素は含まれていません<。The first <book> element contains an <author> element but no <title> or <price> element.

  • < <最後<の<book >要素のauthor>要素には、firstname>およびlastname>要素が不足しています。代わりに、>要素として無効な名前<が指定されています。The <author> element in the last <book> element is missing a <first-name> and <last-name> element and instead has an invalid <name> element.

#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:\n   {0}", e->Message );
   Console::WriteLine();
}

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;
}
// The example displays output like the following:
//   Validation Error: 
//        The element 'book' in namespace 'urn:bookstore-schema' has invalid child element 'author' 
//        in namespace 'urn:bookstore-schema'. List of possible elements expected: 'title' in 
//        namespace 'urn:bookstore-schema'.
//
//    Validation Error: 
//       The element 'author' in namespace 'urn:bookstore-schema' has invalid child element 'name' 
//       in namespace 'urn:bookstore-schema'. List of possible elements expected: 'first-name' in 
//       namespace 'urn:bookstore-schema'.
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 += 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:\n   {e.Message}\n");
  }
}
// The example displays output like the following:
//   Validation Error: 
//        The element 'book' in namespace 'urn:bookstore-schema' has invalid child element 'author' 
//        in namespace 'urn:bookstore-schema'. List of possible elements expected: 'title' in 
//        namespace 'urn:bookstore-schema'.
//
//    Validation Error: 
//       The element 'author' in namespace 'urn:bookstore-schema' has invalid child element 'name' 
//       in namespace 'urn:bookstore-schema'. List of possible elements expected: 'first-name' in 
//       namespace 'urn:bookstore-schema'.
Imports System.Xml
Imports System.Xml.Schema
Imports System.IO

Public Module Sample 
  Public 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 Sub ValidationCallBack(sender as object, e as ValidationEventArgs) 
    Console.WriteLine($"Validation Error:{vbCrLf}   {e.Message}")
    Console.WriteLine()
  End Sub
End Module
' The example displays output like the following:
'   Validation Error: 
'        The element 'book' in namespace 'urn:bookstore-schema' has invalid child element 'author' 
'        in namespace 'urn:bookstore-schema'. List of possible elements expected: 'title' in 
'        namespace 'urn:bookstore-schema'.
'
'    Validation Error: 
'       The element 'author' in namespace 'urn:bookstore-schema' has invalid child element 'name' 
'       in namespace 'urn:bookstore-schema'. List of possible elements expected: 'first-name' in 
'       namespace 'urn:bookstore-schema'.

入力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>

注釈

重要

  • 不明または信頼できないソースまたは場所のスキーマは使用しないでください。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プロパティを使用して、XML XmlSchemaSetリーダーがデータの検証に使用するオブジェクトを割り当てます。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. スキーマの include、import、および redefine 要素で参照される外部の名前空間または場所は、スキーマを含むまたはインポートするスキーマのベース 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. スキーマの include、import、および redefine 要素の解決を無効にするにはXmlSchemaSet.XmlResolver 、プロパティnullをに設定します。To disable resolution of include, import, and redefine elements of a schema, set the XmlSchemaSet.XmlResolver property to null.

  • クラスは、 System.Text.RegularExpressions.Regexクラスを使用して、XML スキーマの正規表現を解析して照合します。 XmlSchemaSetThe 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.

適用対象