Partilhar via


XmlSchemaComplexContentRestriction Classe

Definição

Representa o elemento restriction do esquema XML, conforme especificado pelo W3C (World Wide Web Consortium). Essa classe é para tipos complexos com um modelo de conteúdo complexo derivado por restrição. Ela restringe o conteúdo do tipo complexo a um subconjunto do tipo complexo herdado.

public ref class XmlSchemaComplexContentRestriction : System::Xml::Schema::XmlSchemaContent
public class XmlSchemaComplexContentRestriction : System.Xml.Schema.XmlSchemaContent
type XmlSchemaComplexContentRestriction = class
    inherit XmlSchemaContent
Public Class XmlSchemaComplexContentRestriction
Inherits XmlSchemaContent
Herança
XmlSchemaComplexContentRestriction

Exemplos

O exemplo a seguir cria um complexContent elemento estendido por restrição.

#using <mscorlib.dll>
#using <System.Xml.dll>

using namespace System;
using namespace System::Xml;
using namespace System::Xml::Schema;

class XmlSchemaExamples
{
public:

    static void Main()
    {
        XmlSchema^ schema = gcnew XmlSchema();

        // <xs:complexType name="phoneNumber">
        XmlSchemaComplexType^ phoneNumber = gcnew XmlSchemaComplexType();
        phoneNumber->Name = "phoneNumber";

        // <xs:sequence>
        XmlSchemaSequence^ phoneNumberSequence = gcnew XmlSchemaSequence();

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

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

        // <xs:element name="number"/>
        XmlSchemaElement^ number1 = gcnew 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 = gcnew XmlSchemaComplexType();
        localPhoneNumber->Name = "localPhoneNumber";

        // <xs:complexContent>
        XmlSchemaComplexContent^ complexContent = gcnew XmlSchemaComplexContent();

        // <xs:restriction base="phoneNumber">
        XmlSchemaComplexContentRestriction^ restriction = gcnew XmlSchemaComplexContentRestriction();
        restriction->BaseTypeName = gcnew XmlQualifiedName("phoneNumber", "");

        // <xs:sequence>
        XmlSchemaSequence^ sequence2 = gcnew XmlSchemaSequence();

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

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

        // <xs:element name="number"/>
        XmlSchemaElement^ number2 = gcnew 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 = gcnew XmlSchemaSet();
        schemaSet->ValidationEventHandler += gcnew ValidationEventHandler(ValidationCallbackOne);
        schemaSet->Add(schema);
        schemaSet->Compile();

        XmlSchema^ compiledSchema;

        for each (XmlSchema^ schema1 in schemaSet->Schemas())
        {
            compiledSchema = schema1;
        }

        XmlNamespaceManager^ nsmgr = gcnew XmlNamespaceManager(gcnew NameTable());
        nsmgr->AddNamespace("xs", "http://www.w3.org/2001/XMLSchema");
        compiledSchema->Write(Console::Out, nsmgr);
    }

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

int main()
{
    XmlSchemaExamples::Main();    
    return 0;
};
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);
    }
}
Option Explicit On
Option Strict On

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

    Public Shared Sub ValidationCallbackOne(ByVal sender As Object, ByVal args As ValidationEventArgs)

        Console.WriteLine(args.Message)
    End Sub
End Class

O arquivo XML a seguir é gerado para o exemplo de código anterior.

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

Construtores

XmlSchemaComplexContentRestriction()

Inicializa uma nova instância da classe XmlSchemaComplexContentRestriction.

Propriedades

Annotation

Obtém ou define a propriedade annotation.

(Herdado de XmlSchemaAnnotated)
AnyAttribute

Obtém ou define o componente XmlSchemaAnyAttribute do modelo de conteúdo complexo.

Attributes

Obtém a coleção de atributos para o tipo complexo. Contém os elementos XmlSchemaAttribute e XmlSchemaAttributeGroupRef.

BaseTypeName

Obtém ou define o nome de um tipo complexo do qual esse tipo é derivado por restrição.

Id

Obtém ou define a ID de cadeia de caracteres.

(Herdado de XmlSchemaAnnotated)
LineNumber

Obtém ou define o número de linha no arquivo ao qual o elemento schema se refere.

(Herdado de XmlSchemaObject)
LinePosition

Obtém ou define a posição da linha no arquivo ao qual o elemento schema se refere.

(Herdado de XmlSchemaObject)
Namespaces

Obtém ou define o XmlSerializerNamespaces a ser usado com esse objeto de esquema.

(Herdado de XmlSchemaObject)
Parent

Obtém ou define o pai deste XmlSchemaObject.

(Herdado de XmlSchemaObject)
Particle

Obtém ou define uma das classes XmlSchemaGroupRef, XmlSchemaChoice, XmlSchemaAll ou XmlSchemaSequence.

SourceUri

Obtém ou define o local de origem para o arquivo que carregou o esquema.

(Herdado de XmlSchemaObject)
UnhandledAttributes

Obtém ou define os atributos qualificados que não pertencem ao namespace de destino do esquema atual.

(Herdado de XmlSchemaAnnotated)

Métodos

Equals(Object)

Determina se o objeto especificado é igual ao objeto atual.

(Herdado de Object)
GetHashCode()

Serve como a função de hash padrão.

(Herdado de Object)
GetType()

Obtém o Type da instância atual.

(Herdado de Object)
MemberwiseClone()

Cria uma cópia superficial do Object atual.

(Herdado de Object)
ToString()

Retorna uma cadeia de caracteres que representa o objeto atual.

(Herdado de Object)

Aplica-se a