次の方法で共有


Extensions クラス

定義

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

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

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

                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) を取得するメソッドも含まれています。

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

メソッド

GetSchemaInfo(XAttribute)

検証済み属性のスキーマ検証後の infoset (PSVI) を取得します。

GetSchemaInfo(XElement)

検証済み要素のスキーマ検証後の infoset (PSVI) を取得します。

Validate(XAttribute, XmlSchemaObject, XmlSchemaSet, ValidationEventHandler)

このメソッドは、XAttribute が指定した XmlSchemaObject および XmlSchemaSet に準拠しているかどうかを検証します。

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

XAttribute が、指定した XmlSchemaObject および XmlSchemaSet に準拠しているかどうかを検証します。必要に応じて、スキーマ検証後の infoset (PSVI) を XML ツリーに設定できます。

Validate(XDocument, XmlSchemaSet, ValidationEventHandler)

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

Validate(XDocument, XmlSchemaSet, ValidationEventHandler, Boolean)

XDocumentXmlSchemaSet の XSD に準拠しているかどうかを検証します。オプションで、スキーマ検証後の infoset (PSVI) を XML ツリーに設定できます。

Validate(XElement, XmlSchemaObject, XmlSchemaSet, ValidationEventHandler)

このメソッドは、XElement サブツリーが指定した XmlSchemaObject および XmlSchemaSet に準拠しているかどうかを検証します。

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

XElement サブツリーが、指定した XmlSchemaObject および XmlSchemaSet に準拠しているかどうかを検証します。必要に応じて、スキーマ検証後の infoset (PSVI) を XML ツリーに設定できます。

適用対象