XmlSchemaSet.Add メソッド

定義

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

オーバーロード

Add(XmlSchema)

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

Add(XmlSchemaSet)

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

Add(String, String)

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

Add(String, XmlReader)

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

Add(XmlSchema)

Source:
XmlSchemaSet.cs
Source:
XmlSchemaSet.cs
Source:
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)

Source:
XmlSchemaSet.cs
Source:
XmlSchemaSet.cs
Source:
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追加し、 メソッドを使用して を新XmlSchemaSetしい に追加XmlSchemaSetする方法をAdd示しています。

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の一部になります。

追加する IsCompiledXmlSchemaSet プロパティが の場合、 true追加する 内 XmlSchemaSet のすべてのスキーマが に XmlSchemaSet追加されます。 追加する IsCompiledXmlSchemaSet プロパティが の場合、 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)

Source:
XmlSchemaSet.cs
Source:
XmlSchemaSet.cs
Source:
XmlSchemaSet.cs

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

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.xsd ターゲット名前空間 http://www.contoso.com/books を持つスキーマを 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 含まれている XmlSchemaSet スキーマと同じターゲット名前空間とスキーマの場所 URL を持つ にスキーマを追加すると、元のスキーマ オブジェクトが返されます。

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

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

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

    注意

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

  • XmlSchemaSet メソッドにはAdd、メソッドの呼び出し時にターゲット名前空間をパラメーターとして指定する必要はなく、スキーマで定義されているターゲット名前空間をAdd使用する機能があります。 メソッドの パラメーターで をnulltargetNamespace指定すると、次のAddコード例に示すように、スキーマで定義されているターゲット名前空間を使用するように が指示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);
}

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

  • 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)

Source:
XmlSchemaSet.cs
Source:
XmlSchemaSet.cs
Source:
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 は無視されます。

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

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

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

適用対象