Extensions クラス
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
このクラスには、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の注釈として追加されます。