XmlSchemaComplexContentRestriction クラス
アセンブリ: System.Xml (system.xml.dll 内)


制限により拡張される complexContent 要素を作成する例を次に示します。
Option Explicit On Option Strict On Imports System Imports System.Xml Imports System.Xml.Schema Class XMLSchemaExamples Public Shared Sub Main() Dim schema As New XmlSchema() ' <xs:complexType name="phoneNumber"> Dim phoneNumber As New XmlSchemaComplexType() phoneNumber.Name = "phoneNumber" ' <xs:sequence> Dim phoneNumberSequence As New XmlSchemaSequence() ' <xs:element name="areaCode"/> Dim areaCode1 As New XmlSchemaElement() areaCode1.MinOccurs = 0 areaCode1.MaxOccursString = "1" areaCode1.Name = "areaCode" phoneNumberSequence.Items.Add(areaCode1) ' <xs:element name="prefix"/> Dim prefix1 As New XmlSchemaElement() prefix1.MinOccurs = 1 prefix1.MaxOccursString = "1" prefix1.Name = "prefix" phoneNumberSequence.Items.Add(prefix1) ' <xs:element name="number"/> Dim number1 As New XmlSchemaElement() number1.MinOccurs = 1 number1.MaxOccursString = "1" number1.Name = "number" phoneNumberSequence.Items.Add(number1) phoneNumber.Particle = phoneNumberSequence schema.Items.Add(phoneNumber) ' <xs:complexType name="localPhoneNumber"> Dim localPhoneNumber As New XmlSchemaComplexType() localPhoneNumber.Name = "localPhoneNumber" ' <xs:complexContent> Dim complexContent As New XmlSchemaComplexContent() ' <xs:restriction base="phoneNumber"> Dim restriction As New XmlSchemaComplexContentRestriction() restriction.BaseTypeName = New XmlQualifiedName("phoneNumber", "") ' <xs:sequence> Dim sequence2 As New XmlSchemaSequence() ' <xs:element name="areaCode" minOccurs="0"/> Dim areaCode2 As New XmlSchemaElement() areaCode2.MinOccurs = 0 areaCode2.MaxOccursString = "1" areaCode2.Name = "areaCode" sequence2.Items.Add(areaCode2) ' <xs:element name="prefix"/> Dim prefix2 As New XmlSchemaElement() prefix2.MinOccurs = 1 prefix2.MaxOccursString = "1" prefix2.Name = "prefix" sequence2.Items.Add(prefix2) ' <xs:element name="number"/> Dim number2 As New XmlSchemaElement() number2.MinOccurs = 1 number2.MaxOccursString = "1" number2.Name = "number" sequence2.Items.Add(number2) restriction.Particle = sequence2 complexContent.Content = restriction localPhoneNumber.ContentModel = complexContent schema.Items.Add(localPhoneNumber) Dim schemaSet As New XmlSchemaSet() AddHandler schemaSet.ValidationEventHandler, AddressOf ValidationCallbackOne schemaSet.Add(schema) schemaSet.Compile() Dim compiledSchema As XmlSchema = Nothing For Each schema1 As XmlSchema In schemaSet.Schemas() compiledSchema = schema1 Next Dim nsmgr As New XmlNamespaceManager(New NameTable()) nsmgr.AddNamespace("xs", "http://www.w3.org/2001/XMLSchema") compiledSchema.Write(Console.Out, nsmgr) End Sub 'Main Public Shared Sub ValidationCallbackOne(ByVal sender As Object, ByVal args As ValidationEventArgs) Console.WriteLine(args.Message) End Sub 'ValidationCallbackOne End Class 'XMLSchemaExamples
using System; using System.Xml; using System.Xml.Schema; class XMLSchemaExamples { public static void Main() { XmlSchema schema = new XmlSchema(); // <xs:complexType name="phoneNumber"> XmlSchemaComplexType phoneNumber = new XmlSchemaComplexType(); phoneNumber.Name = "phoneNumber"; // <xs:sequence> XmlSchemaSequence phoneNumberSequence = new XmlSchemaSequence(); // <xs:element name="areaCode"/> XmlSchemaElement areaCode1 = new XmlSchemaElement(); areaCode1.MinOccurs = 0; areaCode1.MaxOccursString = "1"; areaCode1.Name = "areaCode"; phoneNumberSequence.Items.Add(areaCode1); // <xs:element name="prefix"/> XmlSchemaElement prefix1 = new XmlSchemaElement(); prefix1.MinOccurs = 1; prefix1.MaxOccursString = "1"; prefix1.Name = "prefix"; phoneNumberSequence.Items.Add(prefix1); // <xs:element name="number"/> XmlSchemaElement number1 = new XmlSchemaElement(); number1.MinOccurs = 1; number1.MaxOccursString = "1"; number1.Name = "number"; phoneNumberSequence.Items.Add(number1); phoneNumber.Particle = phoneNumberSequence; schema.Items.Add(phoneNumber); // <xs:complexType name="localPhoneNumber"> XmlSchemaComplexType localPhoneNumber = new XmlSchemaComplexType(); localPhoneNumber.Name = "localPhoneNumber"; // <xs:complexContent> XmlSchemaComplexContent complexContent = new XmlSchemaComplexContent(); // <xs:restriction base="phoneNumber"> XmlSchemaComplexContentRestriction restriction = new XmlSchemaComplexContentRestriction(); restriction.BaseTypeName = new XmlQualifiedName("phoneNumber", ""); // <xs:sequence> XmlSchemaSequence sequence2 = new XmlSchemaSequence(); // <xs:element name="areaCode" minOccurs="0"/> XmlSchemaElement areaCode2 = new XmlSchemaElement(); areaCode2.MinOccurs = 0; areaCode2.MaxOccursString = "1"; areaCode2.Name = "areaCode"; sequence2.Items.Add(areaCode2); // <xs:element name="prefix"/> XmlSchemaElement prefix2 = new XmlSchemaElement(); prefix2.MinOccurs = 1; prefix2.MaxOccursString = "1"; prefix2.Name = "prefix"; sequence2.Items.Add(prefix2); // <xs:element name="number"/> XmlSchemaElement number2 = new XmlSchemaElement(); number2.MinOccurs = 1; number2.MaxOccursString = "1"; number2.Name = "number"; sequence2.Items.Add(number2); restriction.Particle = sequence2; complexContent.Content = restriction; localPhoneNumber.ContentModel = complexContent; schema.Items.Add(localPhoneNumber); XmlSchemaSet schemaSet = new XmlSchemaSet(); schemaSet.ValidationEventHandler += new ValidationEventHandler(ValidationCallbackOne); schemaSet.Add(schema); schemaSet.Compile(); XmlSchema compiledSchema = null; foreach (XmlSchema schema1 in schemaSet.Schemas()) { compiledSchema = schema1; } XmlNamespaceManager nsmgr = new XmlNamespaceManager(new NameTable()); nsmgr.AddNamespace("xs", "http://www.w3.org/2001/XMLSchema"); compiledSchema.Write(Console.Out, nsmgr); } public static void ValidationCallbackOne(object sender, ValidationEventArgs args) { Console.WriteLine(args.Message); } }
前述のコード例に対して生成される XML ファイルを次に示します。
<?xml version="1.0" encoding="IBM437"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:complexType name="phoneNumber"> <xs:sequence> <xs:element name="areaCode" minOccurs="0" maxOccurs="1"/> <xs:element name="prefix" minOccurs="1" maxOccurs="1"/> <xs:element name="number" minOccurs="1" maxOccurs="1"/> </xs:sequence> </xs:complexType> <xs:complexType name="localPhoneNumber"> <xs:complexContent mixed="false"> <xs:restriction base="phoneNumber"> <xs:sequence> <xs:element name="areaCode" minOccurs="0" maxOccurs="1"/> <xs:element name="prefix" minOccurs="1" maxOccurs="1"/> <xs:element name="number" minOccurs="1" maxOccurs="1"/> </xs:sequence> </xs:restriction> </xs:complexContent> </xs:complexType> </xs:schema>

System.Xml.Schema.XmlSchemaObject
System.Xml.Schema.XmlSchemaAnnotated
System.Xml.Schema.XmlSchemaContent
System.Xml.Schema.XmlSchemaComplexContentRestriction


Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile for Pocket PC, Windows Mobile for Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


- XmlSchemaComplexContentRestriction クラスのページへのリンク