次の方法で共有


XmlSchemaSet.Add メソッド

定義

指定された XML スキーマ定義言語 (XSD) スキーマを XmlSchemaSetに追加します。

オーバーロード

名前 説明
Add(XmlSchema)

指定した XmlSchemaXmlSchemaSetに追加します。

Add(XmlSchemaSet)

指定した XmlSchemaSet 内のすべての XML スキーマ定義言語 (XSD) スキーマを XmlSchemaSetに追加します。

Add(String, String)

に指定された URL に XML スキーマ定義言語 (XSD) スキーマを追加します。

Add(String, XmlReader)

XmlReaderに含まれる XML スキーマ定義言語 (XSD) スキーマをXmlSchemaSetに追加します。

Add(XmlSchema)

ソース:
XmlSchemaSet.cs
ソース:
XmlSchemaSet.cs
ソース:
XmlSchemaSet.cs
ソース:
XmlSchemaSet.cs
ソース:
XmlSchemaSet.cs

指定した XmlSchemaXmlSchemaSetに追加します。

public:
 System::Xml::Schema::XmlSchema ^ Add(System::Xml::Schema::XmlSchema ^ schema);
public System.Xml.Schema.XmlSchema? Add(System.Xml.Schema.XmlSchema schema);
public System.Xml.Schema.XmlSchema Add(System.Xml.Schema.XmlSchema schema);
member this.Add : System.Xml.Schema.XmlSchema -> System.Xml.Schema.XmlSchema
Public Function Add (schema As XmlSchema) As XmlSchema

パラメーター

schema
XmlSchema

XmlSchemaSetに追加するXmlSchema オブジェクト。

返品

スキーマが有効な場合は、 XmlSchema オブジェクト。 スキーマが無効で、 ValidationEventHandler が指定されている場合は、 null が返され、適切な検証イベントが発生します。 それ以外の場合は、XmlSchemaException が投げられます。

例外

スキーマが無効です。

パラメーターとして渡される XmlSchema オブジェクトは null

注釈

XmlSchema オブジェクトが既にXmlSchemaSetに存在する場合、Add メソッドは何も行いません。

このメソッドの機能は、 Add メソッドの機能と同じです。

適用対象

Add(XmlSchemaSet)

ソース:
XmlSchemaSet.cs
ソース:
XmlSchemaSet.cs
ソース:
XmlSchemaSet.cs
ソース:
XmlSchemaSet.cs
ソース:
XmlSchemaSet.cs

指定した XmlSchemaSet 内のすべての XML スキーマ定義言語 (XSD) スキーマを XmlSchemaSetに追加します。

public:
 void Add(System::Xml::Schema::XmlSchemaSet ^ schemas);
public void Add(System.Xml.Schema.XmlSchemaSet schemas);
member this.Add : System.Xml.Schema.XmlSchemaSet -> unit
Public Sub Add (schemas As XmlSchemaSet)

パラメーター

schemas
XmlSchemaSet

XmlSchemaSet オブジェクトです。

例外

XmlSchemaSet内のスキーマが無効です。

パラメーターとして渡される XmlSchemaSet オブジェクトは null

次のコード例は、XmlSchemaSetにスキーマを追加し、Add メソッドを使用して新しいXmlSchemaSetXmlSchemaSetを追加する方法を示しています。

Dim schemaSet1 As XmlSchemaSet = New XmlSchemaSet
schemaSet1.Add("http://www.contoso.com/retail", "http://www.contoso.com/retail.xsd")
schemaSet1.Add("http://www.contoso.com/books", "http://www.contoso.com/books.xsd")
schemaSet1.Add("http://www.contoso.com/music", "http://www.contoso.com/music.xsd")

Dim schemaSet2 As XmlSchemaSet = New XmlSchemaSet
schemaSet2.Add(schemaSet1)
XmlSchemaSet schemaSet1 = new XmlSchemaSet();
schemaSet1.Add("http://www.contoso.com/retail", "http://www.contoso.com/retail.xsd");
schemaSet1.Add("http://www.contoso.com/books", "http://www.contoso.com/books.xsd");
schemaSet1.Add("http://www.contoso.com/music", "http://www.contoso.com/music.xsd");

XmlSchemaSet schemaSet2 = new XmlSchemaSet();
schemaSet2.Add(schemaSet1);

注釈

スキーマを XmlSchemaSetに追加する前に、スキーマを正常に前処理する必要があります。 前処理では、次の基本的なタスクが実行されます。

  1. スキーマは W3C XML スキーマの規則に従って構造上の有効性をチェックされますが、スキーマは完全には検証されません。

  2. 内部および外部のスキーマ コンポーネントへの参照が解決されます。 正常に取得されたインポートまたは含まれているスキーマも、 XmlSchemaSetに追加されます。 インポートされたスキーマは個別の XmlSchema オブジェクトとして追加され、含まれるスキーマはインクルード XmlSchemaの一部になります。

追加するXmlSchemaSetIsCompiled プロパティがtrue場合、追加するXmlSchemaSet内のすべてのスキーマがXmlSchemaSetに追加されます。 追加するXmlSchemaSetIsCompiled プロパティがfalse場合、追加される各スキーマは、追加される前に前処理されます。 新しく追加された XmlSchemaSet のスキーマのいずれかが前処理に失敗した場合、スキーマは追加されません。代わりに、 XmlSchemaException がスローされます。 その結果、次の 2 つのコード例は同等ではありません。

' First example
schemaSet.Add(schemaSet1)

' Second example
Dim schema As XmlSchema

For Each schema in schemaSet.Schemas()

    schemaSet.Add(schema)

Next
// First example
schemaSet.Add(schemaSet1);

// Second example
foreach(XmlSchema schema in schemaSet.Schemas())
{
    schemaSet.Add(schema);
}

前の 2 つのコード例は同等ではありません。 最初の例では、 schemaSet1 に無効なスキーマが存在し、その IsCompiled プロパティが falseに設定されている場合、スキーマは schemaSetに追加されません。 2 番目の例では、無効なスキーマが検出され、例外がスローされる前に、多数のスキーマを schemaSet に追加できます。

適用対象

Add(String, String)

ソース:
XmlSchemaSet.cs
ソース:
XmlSchemaSet.cs
ソース:
XmlSchemaSet.cs
ソース:
XmlSchemaSet.cs
ソース:
XmlSchemaSet.cs

に指定された URL に XML スキーマ定義言語 (XSD) スキーマを追加します。

public:
 System::Xml::Schema::XmlSchema ^ Add(System::String ^ targetNamespace, System::String ^ schemaUri);
public System.Xml.Schema.XmlSchema? Add(string? targetNamespace, string schemaUri);
public System.Xml.Schema.XmlSchema Add(string targetNamespace, string schemaUri);
member this.Add : string * string -> System.Xml.Schema.XmlSchema
Public Function Add (targetNamespace As String, schemaUri As String) As XmlSchema

パラメーター

targetNamespace
String

スキーマ targetNamespace プロパティ、またはスキーマで指定されたtargetNamespaceを使用するnull

schemaUri
String

読み込むスキーマを指定する URL。

返品

スキーマが有効な場合は、 XmlSchema オブジェクト。 スキーマが無効で、 ValidationEventHandler が指定されている場合は、 null が返され、適切な検証イベントが発生します。 それ以外の場合は、XmlSchemaException が投げられます。

例外

スキーマが無効です。

パラメーターとして渡される URL は、 null または Empty

次のコード例では、http://www.contoso.com/booksのターゲット名前空間を持つhttp://www.contoso.com/books.xsd スキーマをXmlSchemaSetに追加します。

Dim schemaSet As XmlSchemaSet = New XmlSchemaSet()
schemaSet.Add("http://www.contoso.com/books", "http://www.contoso.com/books.xsd")
XmlSchemaSet schemaSet = new XmlSchemaSet();
schemaSet.Add("http://www.contoso.com/books", "http://www.contoso.com/books.xsd");

この例では、 books.xsd ファイルを入力として使用します。

<?xml version="1.0" encoding="utf-8"?>
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" targetNamespace="http://www.contoso.com/books" xmlns:xs="http://www.w3.org/2001/XMLSchema">
    <xs:element name="bookstore">
        <xs:complexType>
            <xs:sequence>
                <xs:element maxOccurs="unbounded" name="book">
                    <xs:complexType>
                        <xs:sequence>
                            <xs:element name="title" type="xs:string" />
                            <xs:element name="author">
                                <xs:complexType>
                                    <xs:sequence>
                                        <xs:element minOccurs="0" name="name" type="xs:string" />
                                        <xs:element minOccurs="0" name="first-name" type="xs:string" />
                                        <xs:element minOccurs="0" name="last-name" type="xs:string" />
                                    </xs:sequence>
                                </xs:complexType>
                            </xs:element>
                            <xs:element name="price" type="xs:decimal" />
                        </xs:sequence>
                        <xs:attribute name="genre" type="xs:string" use="required" />
                        <xs:attribute name="publicationdate" type="xs:unsignedShort" use="required" />
                        <xs:attribute name="ISBN" type="xs:string" use="required" />
                    </xs:complexType>
                </xs:element>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
</xs:schema>

注釈

スキーマを XmlSchemaSetに追加する前に、スキーマを正常に前処理する必要があります。 前処理では、次の基本的なタスクが実行されます。

  1. スキーマは W3C XML スキーマの規則に従って構造上の有効性をチェックされますが、スキーマは完全には検証されません。

  2. 内部および外部のスキーマ コンポーネントへの参照が解決されます。 正常に取得されたインポートまたは含まれているスキーマも、 XmlSchemaSetに追加されます。 インポートされたスキーマは個別の XmlSchema オブジェクトとして追加され、含まれるスキーマはインクルード XmlSchemaの一部になります。

Addメソッドを使用する際に考慮すべき重要な注意事項を次に示します。

  • XmlSchemaSetに既に含まれているスキーマと同じターゲット名前空間とスキーマの場所 URL を持つスキーマをXmlSchemaSetに追加すると、元のスキーマ オブジェクトが返されます。

  • 新しいスキーマがXmlSchemaSetに正常に追加されると、XmlSchemaSetIsCompiled プロパティがfalseに設定されます。

  • xml スキーマで検出されたインクルード要素またはインポート要素は、 Add メソッドが呼び出されると解決されます。 インクルード要素とインポート要素を解決しないと、スキーマ検証の警告が発生し、XmlSchemaSet オブジェクトにValidationEventHandlerが指定されていない場合、これらの警告は報告されません。

  • XmlSchemaSetに既に存在するスキーマと同じターゲット名前空間を持つスキーマをXmlSchemaSetに追加すると、両方のスキーマが追加されます。

    この動作は、古い XmlSchemaCollection オブジェクトとは異なります。

  • XmlSchemaSetAdd メソッドには、Add メソッドを呼び出すときにパラメーターとしてターゲット名前空間を指定する必要はなく、スキーマで定義されているターゲット名前空間を使用する機能があります。 次のコード例に示すように、Add メソッドの targetNamespace パラメーターにnullを指定すると、スキーマで定義されているターゲット名前空間を使用するようにXmlSchemaSetに指示されます。

Dim schemaSet As XmlSchemaSet = New XmlSchemaSet()
schemaSet.Add(Nothing, "books.xsd")

Dim schema As XmlSchema
For Each schema In schemaSet.Schemas("http://www.contoso.com/books")
    schema.Write(Console.Out)
Next
XmlSchemaSet schemaSet = new XmlSchemaSet();
schemaSet.Add(null, "books.xsd");

foreach(XmlSchema schema in schemaSet.Schemas("http://www.contoso.com/books"))
{
    schema.Write(Console.Out);
}

上記のコード例では、nullAdd メソッドのtargetNamespace パラメーターとして指定されています。 その結果、books.xml ファイルで定義されている targetNamespace が使用されます。 この場合、 Add メソッドを呼び出した結果は、 http://www.contoso.com/bookstargetNamespace パラメーターとして指定されている場合と同じになります。

  • W3C XML スキーマを使用すると、ターゲット名前空間を持たないスキーマを、ターゲット名前空間が定義されたスキーマに含められます。 この場合、ターゲット名前空間が定義されていないスキーマは、インクルード スキーマのターゲット名前空間に強制変換されます。 含まれるスキーマは、そのターゲット名前空間が定義されているかのように扱われます。 同様に、次の例に示すように、ターゲット名前空間のないスキーマを XmlSchemaSet に追加し、 Add メソッドで指定されたターゲット名前空間に強制変換できます。
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
    <xs:element name="A" type="xs:string" />
</xs:schema>

上記のスキーマがターゲット名前空間http://www.contoso.com/new/targetnamespaceを持つXmlSchemaSetに追加された場合 (次のコードに示すように)、スキーマで宣言されたターゲット名前空間がhttp://www.contoso.com/new/targetnamespaceされたかのように扱われます。

Dim schemaSet As XmlSchemaSet = New XmlSchemaSet()
schemaSet.Add("http://www.contoso.com/new/targetnamespace", "http://www.contoso.com/targetnamespace.xsd")

Dim schema As XmlSchema

For Each schema in schemaSet.Schemas()

    Console.WriteLine(schema.TargetNamespace)

Next
XmlSchemaSet schemaSet = new XmlSchemaSet();
schemaSet.Add("http://www.contoso.com/new/targetnamespace", "http://www.contoso.com/targetnamespace.xsd");
foreach(XmlSchema schema in schemaSet.Schemas())
{
    Console.WriteLine(schema.TargetNamespace);
}

適用対象

Add(String, XmlReader)

ソース:
XmlSchemaSet.cs
ソース:
XmlSchemaSet.cs
ソース:
XmlSchemaSet.cs
ソース:
XmlSchemaSet.cs
ソース:
XmlSchemaSet.cs

XmlReaderに含まれる XML スキーマ定義言語 (XSD) スキーマをXmlSchemaSetに追加します。

public:
 System::Xml::Schema::XmlSchema ^ Add(System::String ^ targetNamespace, System::Xml::XmlReader ^ schemaDocument);
public System.Xml.Schema.XmlSchema? Add(string? targetNamespace, System.Xml.XmlReader schemaDocument);
public System.Xml.Schema.XmlSchema Add(string targetNamespace, System.Xml.XmlReader schemaDocument);
member this.Add : string * System.Xml.XmlReader -> System.Xml.Schema.XmlSchema
Public Function Add (targetNamespace As String, schemaDocument As XmlReader) As XmlSchema

パラメーター

targetNamespace
String

スキーマ targetNamespace プロパティ、またはスキーマで指定されたtargetNamespaceを使用するnull

schemaDocument
XmlReader

XmlReader オブジェクトです。

返品

スキーマが有効な場合は、 XmlSchema オブジェクト。 スキーマが無効で、 ValidationEventHandler が指定されている場合は、 null が返され、適切な検証イベントが発生します。 それ以外の場合は、XmlSchemaException が投げられます。

例外

スキーマが無効です。

パラメーターとして渡される XmlReader オブジェクトは null

次のコード例では、http://www.contoso.com/booksのターゲット名前空間を持つXmlTextReaderに含まれる books.xsd スキーマをXmlSchemaSetに追加します。

Dim schemaSet As XmlSchemaSet = New XmlSchemaSet()
schemaSet.Add("http://www.contoso.com/books", New XmlTextReader("books.xsd")
XmlSchemaSet schemaSet = new XmlSchemaSet();
schemaSet.Add("http://www.contoso.com/books", new XmlTextReader("books.xsd");

注釈

スキーマを XmlSchemaSetに追加する前に、スキーマを正常に前処理する必要があります。 前処理では、次の基本的なタスクが実行されます。

  1. スキーマは W3C XML スキーマの規則に従って構造上の有効性をチェックされますが、スキーマは完全には検証されません。

  2. 内部および外部のスキーマ コンポーネントへの参照が解決されます。 正常に取得されたインポートまたは含まれているスキーマも、 XmlSchemaSetに追加されます。 インポートされたスキーマは個別の XmlSchema オブジェクトとして追加され、含まれるスキーマはインクルード XmlSchemaの一部になります。

Addメソッドを使用する際に考慮すべき重要な注意事項を次に示します。

  • XmlReaderに含まれるスキーマによってインポートまたはインクルードされた正常に取得されたスキーマも、XmlSchemaSetに追加されます。

  • XmlReaderがルート要素に配置されていない場合、現在の項目が要素でない限り、XmlSchemaExceptionがスローされます。 現在の項目が xs:schema 要素の場合、スキーマ ドキュメントは XmlSchemaSetに読み込まれます。それ以外の場合は、スキーマが無効であるため、 XmlSchemaException がスローされます。

  • XmlReaderが一連の XML ノード上に配置されている場合は、シーケンスの最初のノードのみが追加されます。

  • スキーマが XmlReader.Create メソッド呼び出しから作成された場合、インライン スキーマ処理は W3C XML スキーマ ドキュメントに適用されないため、 ProcessInlineSchema プロパティの値は無視されます。

  • XmlReaderXmlResolver プロパティは、include 要素と import 要素内の名前空間またはスキーマの場所への参照を解決するために使用されません。 代わりに、XmlSchemaSetXmlResolver プロパティが使用されます。

  • XmlSchemaSetAdd メソッドには、Add メソッドを呼び出すときにパラメーターとしてターゲット名前空間を指定する必要はなく、スキーマで定義されているターゲット名前空間を使用する機能があります。 Add メソッドにnullまたはString.Emptyを指定すると、スキーマで定義されているターゲット名前空間を使用するようにXmlSchemaSetに指示されます。 この動作の例については、 Add メソッドを参照してください。

このメソッドの残りの機能は、 Add メソッドの機能と同じです。

適用対象