Export (0) Print
Expand All
This topic has not yet been rated - Rate this topic

XmlSchemaComplexContentRestriction Class

Class for complex types with a complex content model that are derived by restriction. Restricts the contents of the complex type to a subset of the inherited complex type. Represents the World Wide Web Consortium (W3C) restriction element for complex content.

For a list of all members of this type, see XmlSchemaComplexContentRestriction Members.

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

[Visual Basic]
Public Class XmlSchemaComplexContentRestriction
   Inherits XmlSchemaContent
[C#]
public class XmlSchemaComplexContentRestriction : XmlSchemaContent
[C++]
public __gc class XmlSchemaComplexContentRestriction : public
   XmlSchemaContent
[JScript]
public class XmlSchemaComplexContentRestriction extends
   XmlSchemaContent

Thread Safety

Any public static (Shared in Visual Basic) members of this type are thread safe. Any instance members are not guaranteed to be thread safe.

Example

[Visual Basic, C#, C++] The following example creates a complexContent element extended by restriction.

[Visual Basic] 
Option Explicit
Option Strict

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)
        
        schema.Compile(AddressOf ValidationCallbackOne)
        Dim nsmgr As New XmlNamespaceManager(New NameTable())
        nsmgr.AddNamespace("xs", "http://www.w3.org/2001/XMLSchema")
        schema.Write(Console.Out, nsmgr)
    End Sub 'Main
    
    Public Shared Sub ValidationCallbackOne(sender As Object, args As ValidationEventArgs)

        Console.WriteLine(args.Message)
    End Sub 'ValidationCallbackOne
End Class 'XMLSchemaExamples

[C#] 
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);


        schema.Compile(new ValidationEventHandler(ValidationCallbackOne));
     XmlNamespaceManager nsmgr = new XmlNamespaceManager(new NameTable());
        nsmgr.AddNamespace("xs", "http://www.w3.org/2001/XMLSchema");
        schema.Write(Console.Out, nsmgr);
    }

    public static void ValidationCallbackOne(object sender, ValidationEventArgs args) {
        Console.WriteLine(args.Message);
    }
}

[C++] 
#using <mscorlib.dll>
#using <System.Xml.dll>
using namespace System;
using namespace System::Xml;  
using namespace System::Xml::Schema;

__gc class XMLSchemaExamples {
public:
    static void main() {
 
        XmlSchema* schema = new XmlSchema();

        // <xs:complexType name="phoneNumber">
        XmlSchemaComplexType* phoneNumber = new XmlSchemaComplexType();
        phoneNumber->Name = S"phoneNumber";
                
        // <xs:sequence>
        XmlSchemaSequence* phoneNumberSequence = new XmlSchemaSequence();

        // <xs:element name="areaCode"/>
        XmlSchemaElement* areaCode1 = new XmlSchemaElement();
        areaCode1->MinOccurs = 0;
        areaCode1->MaxOccursString = S"1";
        areaCode1->Name = S"areaCode";
        phoneNumberSequence->Items->Add(areaCode1);

        // <xs:element name="prefix"/>
        XmlSchemaElement* prefix1 = new XmlSchemaElement();
        prefix1->MinOccurs = 1;
        prefix1->MaxOccursString = S"1";
        prefix1->Name = S"prefix";
        phoneNumberSequence->Items->Add(prefix1);

        // <xs:element name="number"/>
        XmlSchemaElement* number1 = new XmlSchemaElement();
        number1->MinOccurs = 1;
        number1->MaxOccursString = S"1";
        number1->Name = S"number";
        phoneNumberSequence->Items->Add(number1);

        phoneNumber->Particle = phoneNumberSequence;
                
        schema->Items->Add(phoneNumber);

        // <xs:complexType name="localPhoneNumber">
        XmlSchemaComplexType* localPhoneNumber = new XmlSchemaComplexType();
        localPhoneNumber->Name = S"localPhoneNumber";

        // <xs:complexContent>
        XmlSchemaComplexContent* complexContent = new XmlSchemaComplexContent();
                
        // <xs:restriction base="phoneNumber">
        XmlSchemaComplexContentRestriction* restriction = new XmlSchemaComplexContentRestriction();
        restriction->BaseTypeName = new XmlQualifiedName(S"phoneNumber", S"");
                        
        // <xs:sequence>
        XmlSchemaSequence* sequence2 = new XmlSchemaSequence();

        // <xs:element name="areaCode" minOccurs="0"/>
        XmlSchemaElement* areaCode2 = new XmlSchemaElement();
        areaCode2->MinOccurs = 0;
        areaCode2->MaxOccursString = S"1";
        areaCode2->Name = S"areaCode";
        sequence2->Items->Add(areaCode2);

        // <xs:element name="prefix"/>
        XmlSchemaElement* prefix2 = new XmlSchemaElement();
        prefix2->MinOccurs = 1;
        prefix2->MaxOccursString = S"1";
        prefix2->Name = S"prefix";
        sequence2->Items->Add(prefix2);

        // <xs:element name="number"/>
        XmlSchemaElement* number2 = new XmlSchemaElement();
        number2->MinOccurs = 1;
        number2->MaxOccursString = S"1";
        number2->Name = S"number";
        sequence2->Items->Add(number2);

        restriction->Particle = sequence2;
        complexContent->Content = restriction;
        localPhoneNumber->ContentModel = complexContent;
                
        schema->Items->Add(localPhoneNumber);


        schema->Compile(new ValidationEventHandler(0, ValidationCallbackOne));
     XmlNamespaceManager* nsmgr = new XmlNamespaceManager(new NameTable());
        nsmgr->AddNamespace(S"xs", S"http://www.w3.org/2001/XMLSchema");
        schema->Write(Console::Out,nsmgr);
    }

    static void ValidationCallbackOne(Object* /*sender*/, ValidationEventArgs* args) {
        Console::WriteLine(args->Message);
    }
};

int main()
{
    XMLSchemaExamples::main();
}

[Visual Basic, C#, C++] The following XML file is generated for the preceding code example.

<?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>

[JScript] No example is available for JScript. To view a Visual Basic, C#, or C++ example, click the Language Filter button Language Filter in the upper-left corner of the page.

Requirements

Namespace: System.Xml.Schema

Platforms: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 family

Assembly: System.Xml (in System.Xml.dll)

See Also

XmlSchemaComplexContentRestriction Members | System.Xml.Schema Namespace

Did you find this helpful?
(1500 characters remaining)
Thank you for your feedback
Show:
© 2014 Microsoft. All rights reserved.