Extensions クラス

定義

このクラスには、XSD 検証用の LINQ to XML 拡張メソッドが含まれています。

public ref class Extensions abstract sealed
public static class Extensions
type Extensions = class
Public Module Extensions
継承
Extensions

サンプル XSD ファイルの XSD: Customers と orders には、サンプル XML ファイルの XML ドキュメントの検証に使用できるスキーマ (Customers と orders) が含まれています。 次の例では、スキーマとドキュメントを読み込み、ドキュメントを検証し、 xs:keyxs:keyref のリレーションシップが無効になるようにドキュメントを変更してから、もう一度検証を試みます。

                XmlSchemaSet schemas = new XmlSchemaSet();
schemas.Add("", "CustomersOrders.xsd");

XDocument custOrd = XDocument.Load("CustomersOrders.xml");

Console.WriteLine("Validating custOrd");
bool errors = false;
custOrd.Validate(schemas, (o, e) =>
                     {
                         Console.WriteLine("{0}", e.Message);
                         errors = true;
                     });
Console.WriteLine("custOrd {0}", errors ? "did not validate" : "validated");

// Modify the custOrd tree so that it is no longer valid.
custOrd.Root.Element("Orders").Element("Order").Element("CustomerID").Value = "AAAAA";

Console.WriteLine();
Console.WriteLine("Validating custOrd");
errors = false;
custOrd.Validate(schemas, (o, e) =>
                     {
                         Console.WriteLine("{0}", e.Message);
                         errors = true;
                     });
Console.WriteLine("custOrd {0}", errors ? "did not validate" : "validated");
                Dim errors As Boolean = False

Private Sub XSDErrors(ByVal o As Object, ByVal e As ValidationEventArgs)
    Console.WriteLine("{0}", e.Message)
    errors = True
End Sub

Sub Main()
    Dim schemas As XmlSchemaSet = New XmlSchemaSet()
    schemas.Add("", "CustomersOrders.xsd")

    Console.WriteLine("Validating custOrd")
    Dim custOrd As XDocument = XDocument.Load("CustomersOrders.xml")
    errors = False
    custOrd.Validate(schemas, AddressOf XSDErrors)
    Console.WriteLine("custOrd {0}", IIf(errors, "did not validate", "validated"))

    Console.WriteLine()
    Console.WriteLine("Validating custOrd")
    ' Modify the source document so that it will not validate.
    custOrd.Root.Element("Orders").Element("Order").Element("CustomerID").Value = "AAAAA"
    errors = False
    custOrd.Validate(schemas, AddressOf XSDErrors)
    Console.WriteLine("custOrd {0}", IIf(errors, "did not validate", "validated"))
End Sub

この例を実行すると、次の出力が生成されます。

Validating custOrd
custOrd validated

Validating custOrd
The key sequence 'AAAAA' in Keyref fails to refer to some key.
custOrd did not validate

注釈

このクラスには、検証済みの XML ノードのスキーマ検証後情報セット (PSVI) を取得するメソッドも含まれています。

XDocumentXElement、またはXAttributeを検証するときに、必要に応じて XML ツリーにスキーマ検証後の情報セットを設定することもできます。 PSVI 情報は、 System.Xml.Schema.XmlSchemaInfo型の注釈として追加されます。

メソッド

名前 説明
GetSchemaInfo(XAttribute)

検証済み属性のスキーマ検証後情報セット (PSVI) を取得します。

GetSchemaInfo(XElement)

検証済み要素のスキーマ検証後情報セット (PSVI) を取得します。

Validate(XAttribute, XmlSchemaObject, XmlSchemaSet, ValidationEventHandler, Boolean)

XAttributeが指定したXmlSchemaObjectXmlSchemaSetに準拠していることを検証します。必要に応じて、XML ツリーにスキーマ検証後情報セット (PSVI) を設定します。

Validate(XAttribute, XmlSchemaObject, XmlSchemaSet, ValidationEventHandler)

このメソッドは、 XAttribute が指定した XmlSchemaObjectXmlSchemaSetに準拠していることを検証します。

Validate(XDocument, XmlSchemaSet, ValidationEventHandler, Boolean)

XDocumentXmlSchemaSetの XSD に準拠していることを検証します。必要に応じて、XML ツリーにスキーマ検証後情報セット (PSVI) を設定します。

Validate(XDocument, XmlSchemaSet, ValidationEventHandler)

このメソッドは、 XDocumentXmlSchemaSetの XSD に準拠していることを検証します。

Validate(XElement, XmlSchemaObject, XmlSchemaSet, ValidationEventHandler, Boolean)

XElementサブツリーが指定したXmlSchemaObjectXmlSchemaSetに準拠していることを検証します。必要に応じて、XML ツリーにスキーマ検証後情報セット (PSVI) を設定します。

Validate(XElement, XmlSchemaObject, XmlSchemaSet, ValidationEventHandler)

このメソッドは、 XElement サブツリーが指定した XmlSchemaObjectXmlSchemaSetに準拠していることを検証します。

適用対象