Como validar um documento XML usando o DTD, XDR ou XSD no Visual Basic

IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine Translation ou MT), não tendo sido portanto traduzido ou revisto por pessoas. A Microsoft possui artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais, com o objetivo de oferecer em português a totalidade dos artigos existentes na base de dados de suporte. No entanto, a tradução automática não é sempre perfeita, podendo conter erros de vocabulário, sintaxe ou gramática. A Microsoft não é responsável por incoerências, erros ou prejuízos ocorridos em decorrência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza atualizações freqüentes ao software de tradução automática (MT). Obrigado.

Clique aqui para ver a versão em Inglês deste artigo: 315533
Para obter uma Microsoft Visual translation from VPE for Csharp .NET versão deste artigo, consulte 307379.
Para uma versão deste artigo do Microsoft Visual Basic 6.0, consulte 309616.


Este artigo se refere aos seguintes namespaces Microsoft .NET Framework Class Library:
  • System.XML
  • System.Xml.Schema
Sumário
Extensible Markup Language (XML) documentos contenham elementos e atributos e fornecem uma maneira flexível e eficiente de trocar dados entre aplicativos e organizações. Para especificar a estrutura permitida e o conteúdo de um documento XML, você pode escrever um DTD (Document Type Definition), um esquema de Microsoft XML-Data Reduced (XDR, dados) ou uma linguagem de definição de esquema XML (XSD) de esquemas.

Esquemas XSD são a maneira preferencial para especificar o XML também há suporte para gramáticas nos esquemas .NET Framework, mas DTDs e XDR.

Neste artigo, você aprenderá como aplicar um DTD, XDR um esquema ou um esquema XSD para um documento XML no Microsoft Visual Basic 2005 ou no Microsoft Visual Basic. NET. Em seguida, você aprenderá como usar a classe XmlValidatingReader para validar um documento XML em relação a gramática especificada. Você também aprenderá como usar a classe XmlSchemaCollection para esquemas de cache na memória como uma forma de otimizar XML validação.

Requisitos

A lista a seguir descreve o hardware recomendado, software, infra-estrutura de rede e service packs que você precisa:
  • O Microsoft Visual Basic 2005 ou Microsoft Visual Basic .NET
Este artigo pressupõe que você esteja familiarizado com os seguintes tópicos:
  • Sintaxe do Visual Basic 2005 ou Visual Basic .NET
  • Conceitos XML, incluindo problemas de validação

Criar um documento XML

  1. Inicie Microsoft Visual Studio .NET ou Microsoft Visual Studio 2005. Em seguida, crie um novo arquivo XML (no menu arquivo , aponte para novo e, em seguida, clique em arquivo ).
  2. Selecione o tipo de Arquivo XML e, em seguida, clique em Abrir .
  3. Adicione os seguintes dados para o documento XML para representar um produto em um catálogo:
    <Product ProductID="123">   <ProductName>Rugby jersey</ProductName></Product>					
  4. Salve o arquivo como Product.xml em uma pasta que será capaz de prontamente acesso posterior (os exemplos de código neste artigo assumem uma pasta chamada C:\MyFolder).

Crie um DTD e um link para o documento XML

  1. No Visual Studio 2005 ou no Visual Studio. NET, aponte para novo no menu arquivo e, em seguida, clique em arquivo .
  2. Selecione o tipo de Arquivo de texto e, em seguida, clique em Abrir .
  3. Adicione as seguintes declarações de DTD ao arquivo para descrever a gramática do documento XML:
    <!ELEMENT Product (ProductName)><!ATTLIST Product ProductID CDATA #REQUIRED><!ELEMENT ProductName (#PCDATA)>					
  4. Salve o arquivo como Product.dtd na mesma pasta do seu documento XML.
  5. Reabrir Product.xml no Visual Studio 2005 ou no Visual Studio. NET; para fazer isso, aponte para Abrir no menu arquivo e, em seguida, clique em arquivo . Adicione uma declaração DOCTYPE (abaixo de "? xml versão ="1.0"linha), da seguinte maneira. Isso links o documento XML para o arquivo DTD).
    <?xml version="1.0" encoding="utf-8" ?><!DOCTYPE Product SYSTEM "Product.dtd">					
  6. Salve o documento XML modificado como ProductWithDTD.xml .

Realizar validação usando um DTD

  1. No Visual Studio 2005 ou no Visual Studio. NET, criar um novo console do Visual Basic chamado ValidateXmlUsingVB de projeto de aplicativo.
  2. Visual Studio 2005 ou Visual Studio .NET exibe um novo arquivo chamado Module1.vb. No início deste arquivo, adicione duas instruções Imports , da seguinte maneira:
    Imports System.Xml          ' For XmlTextReader and XmlValidatingReaderImports System.Xml.Schema   ' For XmlSchemaCollection (used later)					
  3. No Módulo1 (antes do início da sub-rotina principal), declare uma variável boolean denominada isValid , da seguinte maneira:
    'If a validation error occurs,' you will set this flag to False ' in the validation event handler. Private isValid As Boolean = True					
  4. A sub-rotina principal, crie um objeto XmlTextReader para ler um documento XML a partir de um arquivo de texto. Em seguida, crie um objeto XmlValidatingReader para validar esses dados XML:
    Dim r As New XmlTextReader("C:\MyFolder\ProductWithDTD.xml")Dim v As New XmlValidatingReader(r)					
  5. O objeto XmlValidatingReader tem uma propriedade ValidationType , que indica o tipo de validação necessária (DTD, XDR ou esquema). Definir essa propriedade para DTD , da seguinte maneira:
    v.ValidationType = ValidationType.DTD					
  6. Se ocorrerem erros de validação, o leitor validar gera um evento validação. Adicione o seguinte código para registrar um manipulador de eventos de validação (você implementará a sub-rotina MyValidationEventHandler na etapa 8 desta seção):
    AddHandler v.ValidationEventHandler, AddressOf MyValidationEventHandler					
  7. Adicione o seguinte código para ler e validar o XML documento. Se ocorrerem erros de validação, MyValidationEventHandler será chamado para manipular o erro. Essa sub-rotina definirá isValid como False (consulte a etapa 8 desta seção). Você pode verificar o status de isValid após a validação para verificar se o documento é válida ou inválida.
    While v.Read()   ' Could add code here to process the content.End Whilev.Close()' Check whether the document is valid or invalid.If isValid Then   Console.WriteLine("Document is valid")Else   Console.WriteLine("Document is invalid")End If					
  8. Após a sub-rotina principal, gravar a sub-rotina MyValidationEventHandler, da seguinte maneira:
    Public Sub MyValidationEventHandler(ByVal sender As Object, _                                    ByVal args As ValidationEventArgs)   isValid = False   Console.WriteLine("Validation event" & vbCrLf & args.Message)End Sub					
  9. Criar e executar o aplicativo.

    O aplicativo deve reportar que o documento XML é válido.
  10. No Visual Studio 2005 ou no Visual Studio. NET, modificar ProductWithDTD.xml para torná-lo inválido (por exemplo, excluir Rugby ProductName jersey / ProductName elemento).
  11. Execute o aplicativo novamente.

    O aplicativo deve exibir a seguinte mensagem de erro:
    Evento de validação de elemento 'Produto' apresenta conteúdo incompleto. Esperado 'ProductName'. Ocorreu um erro no file:///C:/MyFolder/ProductWithDTD.xml(4, 3). Documento é inválido

Criar um link para o documento XML e um esquema XDR

  1. No Visual Studio 2005 ou no Visual Studio. NET, aponte para novo no menu arquivo e, em seguida, clique em arquivo .
  2. Selecione o tipo de Arquivo de texto e, em seguida, clique em Abrir .
  3. Adicionar as seguintes definições de esquema XDR para o arquivo para descrever a gramática do documento XML:
    <?xml version="1.0"?><Schema name="ProductSchema"         xmlns="urn:schemas-microsoft-com:xml-data"        xmlns:dt="urn:schemas-microsoft-com:datatypes">   <AttributeType name="ProductID" dt:type="int"/>   <ElementType name="ProductName" dt:type="string"/>   <ElementType name="Product" content="eltOnly">      <attribute type="ProductID" required="yes"/>      <element type="ProductName"/>   </ElementType></Schema>					
  4. Salve o arquivo como Product.xdr na mesma pasta do seu documento XML.
  5. Reabrir Product.xml original e, em seguida, vinculá-lo a esquema XDR, da seguinte maneira:
    <?xml version="1.0" encoding="utf-8" ?><Product ProductID="123" xmlns="x-schema:Product.xdr">    <ProductName>Rugby jersey</ProductName></Product>					
  6. Salve o documento XML modificado como ProductWithXDR.xml .

Realizar validação usando um esquema XDR

  1. Modificar seu aplicativo para que o XmlTextReader carrega ProductWithXDR.xml, da seguinte maneira:
    Dim r As New XmlTextReader("C:\MyFolder\ProductWithXDR.xml")					
  2. Defina ValidationType como XDR para que o leitor validar executa validação de XDR, da seguinte forma:
    v.ValidationType = ValidationType.XDR					
  3. Criar e executar o aplicativo.

    O aplicativo deve reportar que o documento XML é válido.
  4. Modificar ProductWithXDR.xml para torná-lo deliberadamente inválido.
  5. Execute o aplicativo novamente.

    O aplicativo deve reportar um erro de validação.

Criar um esquema XSD e um link para o documento XML

  1. No Visual Studio. NET, aponte para novo no menu arquivo e, em seguida, clique em arquivo .
  2. Selecione o tipo de Arquivo de texto e, em seguida, clique em Abrir .
  3. Adicione a seguinte definição de esquema XSD ao arquivo para descrever a gramática do documento XML:
    <?xml version="1.0"?><xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">   <xsd:element name="Product">      <xsd:complexType>         <xsd:sequence>            <xsd:element name="ProductName" type="xsd:string"/>         </xsd:sequence>         <xsd:attribute name="ProductID" use="required" type="xsd:int"/>      </xsd:complexType>   </xsd:element></xsd:schema>					
  4. Salve o arquivo como Product.xsd na mesma pasta do seu documento XML.
  5. Reabrir Product.xml original e, em seguida, vinculá-lo a esquema XSD, da seguinte maneira:
    <?xml version="1.0" encoding="utf-8" ?><Product ProductID="123"          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"         xsi:noNamespaceSchemaLocation="Product.xsd">   <ProductName>Rugby jersey</ProductName></Product> 					
  6. Salve o documento XML modificado como ProductWithXSD.xml .

Realizar validação usando um esquema XSD

  1. Modificar seu aplicativo para que o XmlTextReader carrega ProductWithXSD.xml, da seguinte maneira:
    Dim r As New XmlTextReader("C:\MyFolder\ProductWithXSD.xml")					
  2. Defina ValidationType para esquema para que o leitor validar executa validação de esquema XSD, da seguinte forma:
    v.ValidationType = ValidationType.Schema					
  3. Criar e executar o aplicativo para validar o documento XML usando o esquema XSD.

    O aplicativo deve relatar que o XML documento é válido.

Usar espaços para nome no esquema XSD

  1. No Visual Studio 2005 ou no Visual Studio. NET, abra ProductWithXSD.xml. Declare um namespace padrão, urn: MyNamespace , no documento. Modificar a ligação XSD para especificar o XSD esquema para validar o conteúdo neste namespace, da seguinte maneira:
    <?xml version="1.0" encoding="utf-8"?><Product ProductID="123"          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"         xmlns="urn:MyNamespace"         xsi:schemaLocation="urn:MyNamespace Product.xsd">   <ProductName>Rugby jersey</ProductName></Product>					
  2. Salve ProductWithXSD.xml.
  3. Abrir Product.xsd, clique na guia XML e, em seguida, modifique a marca de início de xsd:schema como a seguir, para que o esquema se aplica ao namespace urn: MyNamespace :
    <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"            targetNamespace="urn:MyNamespace"            elementFormDefault="qualified">					
  4. Salve Product.xsd.
  5. Execute o aplicativo para validar o documento XML usando o esquema XSD.

Namespaces de cache

  1. No Visual Studio 2005 ou no Visual Studio. NET, abra o Module1.vb. No início da sub-rotina principal, crie um objeto XmlSchemaCollection , da seguinte maneira:
    Dim cache As New XmlSchemaCollection()					
  2. O objeto XmlSchemaCollection permite esquemas de cache na memória para melhor desempenho. Cada esquema está associada com um espaço para nome diferente. Adicione o seguinte código ao cache Product.xsd:
    cache.Add("urn:MyNamespace", "C:\MyFolder\Product.xsd")					
  3. Após o código que cria o objeto XmlValidatingReader , adicione a seguinte instrução. Isso adiciona o cache do esquema ao XmlValidatingReader , para que o leitor possa usar os esquemas na memória.
    v.Schemas.Add(cache)					

Verificação

  1. Criar e executar o aplicativo.
  2. Verificar se o documento XML ainda está sendo validado contra o esquema XSD.
  3. Fazer algumas alterações ProductWithXSD.xml deliberadamente torná-lo a inválido.
  4. Verifique se o aplicativo detecta esses erros de validação.

Aviso: este artigo foi traduzido automaticamente

Propriedades

ID do Artigo: 315533 - Última Revisão: 12/06/2006 23:18:59 - Revisão: 5.3

Bibliotecas de Classes do Microsoft .NET Framework 1.1, Bibliotecas de Classes do Microsoft .NET Framework 1.0, Microsoft Visual Basic 2005, Microsoft Visual Basic .NET 2003 Standard Edition, Microsoft Visual Basic .NET 2002 Standard Edition

  • kbmt kbvs2005swept kbvs2005applies kbhowtomaster KB315533 KbMtpt
Comentários