XmlSchema Classe

Definição

Uma representação em memória de um Esquema XML, conforme especificado no Esquema XML do World Wide Web Consortium (W3C ) Parte 1: Estruturas e Esquema XML Parte 2: Tipos de Dados].

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

Exemplos

O exemplo seguinte cria uma definição de esquema.

using System;
using System.Xml;
using System.Xml.Schema;

class XMLSchemaExamples
{
    public static void Main()
    {

        XmlSchema schema = new XmlSchema();

        // <xs:element name="cat" type="xs:string"/>
        XmlSchemaElement elementCat = new XmlSchemaElement();
        schema.Items.Add(elementCat);
        elementCat.Name = "cat";
        elementCat.SchemaTypeName = new XmlQualifiedName("string", "http://www.w3.org/2001/XMLSchema");

        // <xs:element name="dog" type="xs:string"/>
        XmlSchemaElement elementDog = new XmlSchemaElement();
        schema.Items.Add(elementDog);
        elementDog.Name = "dog";
        elementDog.SchemaTypeName = new XmlQualifiedName("string", "http://www.w3.org/2001/XMLSchema");

        // <xs:element name="redDog" substitutionGroup="dog" />
        XmlSchemaElement elementRedDog = new XmlSchemaElement();
        schema.Items.Add(elementRedDog);
        elementRedDog.Name = "redDog";
        elementRedDog.SubstitutionGroup = new XmlQualifiedName("dog");

        // <xs:element name="brownDog" substitutionGroup ="dog" />
        XmlSchemaElement elementBrownDog = new XmlSchemaElement();
        schema.Items.Add(elementBrownDog);
        elementBrownDog.Name = "brownDog";
        elementBrownDog.SubstitutionGroup = new XmlQualifiedName("dog");

        // <xs:element name="pets">
        XmlSchemaElement elementPets = new XmlSchemaElement();
        schema.Items.Add(elementPets);
        elementPets.Name = "pets";

        // <xs:complexType>
        XmlSchemaComplexType complexType = new XmlSchemaComplexType();
        elementPets.SchemaType = complexType;

        // <xs:choice minOccurs="0" maxOccurs="unbounded">
        XmlSchemaChoice choice = new XmlSchemaChoice();
        complexType.Particle = choice;
        choice.MinOccurs = 0;
        choice.MaxOccursString = "unbounded";

        // <xs:element ref="cat"/>
        XmlSchemaElement catRef = new XmlSchemaElement();
        choice.Items.Add(catRef);
        catRef.RefName = new XmlQualifiedName("cat");

        // <xs:element ref="dog"/>
        XmlSchemaElement dogRef = new XmlSchemaElement();
        choice.Items.Add(dogRef);
        dogRef.RefName = new XmlQualifiedName("dog");

        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:element name="cat" type="xs:string"/>
        Dim elementCat As New XmlSchemaElement()
        schema.Items.Add(elementCat)
        elementCat.Name = "cat"
        elementCat.SchemaTypeName = New XmlQualifiedName("string", "http://www.w3.org/2001/XMLSchema")

        ' <xs:element name="dog" type="xs:string"/>
        Dim elementDog As New XmlSchemaElement()
        schema.Items.Add(elementDog)
        elementDog.Name = "dog"
        elementDog.SchemaTypeName = New XmlQualifiedName("string", "http://www.w3.org/2001/XMLSchema")

        ' <xs:element name="redDog" substitutionGroup="dog" />
        Dim elementRedDog As New XmlSchemaElement()
        schema.Items.Add(elementRedDog)
        elementRedDog.Name = "redDog"
        elementRedDog.SubstitutionGroup = New XmlQualifiedName("dog")

        ' <xs:element name="brownDog" substitutionGroup ="dog" />
        Dim elementBrownDog As New XmlSchemaElement()
        schema.Items.Add(elementBrownDog)
        elementBrownDog.Name = "brownDog"
        elementBrownDog.SubstitutionGroup = New XmlQualifiedName("dog")

        ' <xs:element name="pets">
        Dim elementPets As New XmlSchemaElement()
        schema.Items.Add(elementPets)
        elementPets.Name = "pets"

        ' <xs:complexType>
        Dim complexType As New XmlSchemaComplexType()
        elementPets.SchemaType = complexType

        ' <xs:choice minOccurs="0" maxOccurs="unbounded">
        Dim choice As New XmlSchemaChoice()
        complexType.Particle = choice
        choice.MinOccurs = 0
        choice.MaxOccursString = "unbounded"

        ' <xs:element ref="cat"/>
        Dim catRef As New XmlSchemaElement()
        choice.Items.Add(catRef)
        catRef.RefName = New XmlQualifiedName("cat")

        ' <xs:element ref="dog"/>
        Dim dogRef As New XmlSchemaElement()
        choice.Items.Add(dogRef)
        dogRef.RefName = New XmlQualifiedName("dog")

        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 seguinte ficheiro XML é 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:element name="cat" type="xs:string"/>
    <xs:element name="dog" type="xs:string"/>
    <xs:element name="redDog" type="xs:string" substitutionGroup="dog"/>
    <xs:element name="brownDog" type="xs:string" substitutionGroup ="dog" />

    <xs:element name="pets">
      <xs:complexType>
        <xs:choice minOccurs="0" maxOccurs="unbounded">
          <xs:element ref="cat"/>
          <xs:element ref="dog"/>
        </xs:choice>
      </xs:complexType>
    </xs:element>
</xs:schema>

Observações

Importante

  • Não use esquemas de fontes ou locais desconhecidos ou não confiáveis. Isso comprometerá a segurança do seu código.
  • Os esquemas XML (incluindo esquemas embutidos) são inerentemente vulneráveis a ataques de negação de serviço; Não os aceite em cenários não confiáveis.
  • Exceções levantadas como resultado do uso da XmlSchema classe, como a XmlSchemaException classe, podem conter informações sensíveis que não devem ser expostas em cenários não confiáveis. Por exemplo, a propriedade SourceUri de XmlSchemaException retorna o caminho URI para o arquivo de esquema que causou a exceção. A propriedade SourceUri não deve ser exposta em cenários não confiáveis. As exceções devem ser devidamente tratadas para que esta informação sensível não seja exposta em cenários não confiáveis.

Construtores

Name Description
XmlSchema()

Inicializa uma nova instância da XmlSchema classe.

Campos

Name Description
InstanceNamespace

O espaço de nomes das instâncias do esquema XML. Este campo é constante.

Namespace

O espaço de nomes do esquema XML. Este campo é constante.

Propriedades

Name Description
AttributeFormDefault

Obtém ou define a forma para atributos declarados no namespace de destino do esquema.

AttributeGroups

Obtém o valor pós-compilação do esquema de todos os grupos globais de atributos no esquema.

Attributes

Obtém o valor pós-compilação do esquema para todos os atributos do esquema.

BlockDefault

Obtém ou define o blockDefault atributo, que define o valor padrão do block atributo nos elementos e tipos complexos no targetNamespace esquema.

ElementFormDefault

Obtém ou define a forma para elementos declarados no namespace de destino do esquema.

Elements

Obtém o valor pós-compilação do esquema para todos os elementos do esquema.

FinalDefault

Obtém ou define o finalDefault atributo, que define o valor padrão do final atributo nos elementos e tipos complexos no namespace de destino do esquema.

Groups

Obtém o valor pós-compilação do esquema de todos os grupos no esquema.

Id

Obtém ou define o ID da cadeia.

Includes

Recebe a coleção de esquemas incluídos e importados.

IsCompiled

Indica se o esquema foi compilado.

Items

Obtém a coleção de elementos do esquema no esquema e é usada para adicionar novos tipos de elementos ao schema nível do elemento.

LineNumber

Obtém ou define o número da linha no ficheiro a que o schema elemento se refere.

(Herdado de XmlSchemaObject)
LinePosition

Obtém ou define a posição da linha no ficheiro a que o schema elemento se refere.

(Herdado de XmlSchemaObject)
Namespaces

Obtém ou define o XmlSerializerNamespaces para usar com este objeto de esquema.

(Herdado de XmlSchemaObject)
Notations

Obtém o valor pós-compilação do esquema para todas as notações no esquema.

Parent

Obtém ou define o pai deste XmlSchemaObject.

(Herdado de XmlSchemaObject)
SchemaTypes

Obtém o valor pós-compilação do esquema de todos os tipos de esquema no esquema.

SourceUri

Obtém ou define a localização de origem do ficheiro que carregou o esquema.

(Herdado de XmlSchemaObject)
TargetNamespace

Obtém ou define o Identificador Uniforme de Recursos (URI) do espaço de nomes alvo do esquema.

UnhandledAttributes

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

Version

Obtém ou define a versão do esquema.

Métodos

Name Description
Compile(ValidationEventHandler, XmlResolver)
Obsoleto.
Obsoleto.

Compila o XML Schema Object Model (SOM) em informação do esquema para validação. Usado para verificar a estrutura sintática e semântica do SOM construído programaticamente. A verificação de validação semântica é realizada durante a compilação.

Compile(ValidationEventHandler)
Obsoleto.
Obsoleto.

Compila o XML Schema Object Model (SOM) em informação do esquema para validação. Usado para verificar a estrutura sintática e semântica do SOM construído programaticamente. A verificação de validação semântica é realizada durante a compilação.

Equals(Object)

Determina se o objeto especificado é igual ao objeto atual.

(Herdado de Object)
GetHashCode()

Serve como função de hash predefinida.

(Herdado de Object)
GetType()

Obtém o Type da instância atual.

(Herdado de Object)
MemberwiseClone()

Cria uma cópia superficial do atual Object.

(Herdado de Object)
Read(Stream, ValidationEventHandler)

Lê um esquema XML do fluxo fornecido.

Read(TextReader, ValidationEventHandler)

Lê um esquema XML a partir do .TextReader

Read(XmlReader, ValidationEventHandler)

Lê um esquema XML a partir do .XmlReader

ToString()

Devolve uma cadeia que representa o objeto atual.

(Herdado de Object)
Write(Stream, XmlNamespaceManager)

Escreve o Esquema XML no fornecido Stream usando o XmlNamespaceManager especificado.

Write(Stream)

Escreve o Esquema XML no fluxo de dados fornecido.

Write(TextWriter, XmlNamespaceManager)

Escreve o Esquema XML no arquivo fornecido TextWriter.

Write(TextWriter)

Escreve o Esquema XML no arquivo fornecido TextWriter.

Write(XmlWriter, XmlNamespaceManager)

Escreve o Esquema XML no arquivo fornecido XmlWriter.

Write(XmlWriter)

Escreve o Esquema XML no arquivo fornecido XmlWriter.

Aplica-se a

Ver também