---
title: "Conversão de XML para XSD: Criação de um esquema a partir de várias instâncias XML"
date: "2021-08-25"
categories: 
  - "development"
  - "tools"
  - "xml"
tags: 
  - "xml-editor"
  - "xml-schema"
  - "xmlspy"
  - "xsd"
description: Aprenda como gerar um ficheiro XSD a partir de várias instâncias XML, utilizando o XMLSpy, um editor XML poderoso que simplifica a criação de esquemas para ficheiros relacionados.
---
Status: #blog

Tags:  #xml-editor #xml-schema #xmlspy #xsd

Categories: [development](/blog/pt/category/development.md) | [xml](/blog/pt/category/xml.md)
# Conversão de XML para XSD: Criação de um esquema a partir de várias instâncias XML

Recentemente, estava a conversar com um dos nossos engenheiros de suporte sobre as perguntas mais frequentes que ele recebe dos clientes. Uma das questões que surge com frequência é a geração de esquemas, especificamente: "Como posso gerar um XSD a partir de um XML?". A resposta, naturalmente, é utilizar o seu editor XML preferido. O XMLSpy consegue gerar um XSD válido a partir de um DTD, uma estrutura de base de dados relacional, um esquema JSON e, claro, uma instância XML.

No entanto, o que muitos clientes descobrem com surpresa é que o editor XML também cria um esquema XML com base num.. _grupo_ de ficheiros XML relacionados – e esta é uma exigência comum. Vamos analisar como funciona.

![](/blog/images/PR112123_700x335.jpg)

<!--more-->

## Gerar um esquema XSD

Suponhamos que herdei um projeto de desenvolvimento web, tendo recebido um conjunto de ficheiros XML como ponto de partida, mas sem um esquema XML ([XML Schema](https://www.w3.org/XML/Schema)). Para gerar um ficheiro XSD para esses ficheiros, primeiro preciso adicioná-los a um projeto do XMLSpy. Isso será útil posteriormente, pois o projeto agrupa todos os ficheiros relacionados num conjunto de pastas, facilitando a gestão. Nele, posso pesquisar ficheiros específicos, aplicar transformações XSLT, realizar operações em lote, como a validação em todo o projeto e a pesquisa em ficheiros, e assim por diante.

Vale a pena dedicar um momento para falar sobre o próprio projeto XMLSpy. As pastas podem corresponder a diretórios reais no sistema de arquivos, ou posso definir extensões de tipo de ficheiro para cada pasta, de forma que os ficheiros comuns sejam agrupados num único local conveniente. As pastas do projeto são pastas virtuais e não precisam de corresponder a qualquer organização hierárquica dos ficheiros no servidor em si.

Também posso atribuir diferentes parâmetros de transformação XSL a cada pasta e ter o mesmo ficheiro físico presente em mais do que uma pasta de projeto. Isto é especialmente útil quando preciso de manter os dados num único ficheiro XML e utilizar diferentes folhas de estilo XSL para gerar resultados diferentes. E, naturalmente, a gestão de projetos do XMLSpy integra-se com a maioria dos sistemas de controlo de versões.

OK, vamos voltar à [criação do XSD](https://www.altova.com/pt/xmlspy-xml-editor/xsd-to-xml). O primeiro passo é selecionar "Novo Projeto" no menu "Projeto". O XMLSpy cria um projeto base com pastas de exemplo para diferentes tipos de ficheiros. É fácil adicionar pastas personalizadas, conforme necessário. Para adicionar os ficheiros que recebi a este novo projeto, clico com o botão direito na pasta "Ficheiros XML" e seleciono "Adicionar Ficheiros..."

![Criar um projeto XML](https://lh3.ggpht.com/-CU_6VD_ekWM/UP6ivUhf0nI/AAAAAAAAATE/NjKHHB7Ms7Q/clip_image001_thumb.png?imgmax=800 "Creating an XML Project")

...e navegue para selecionar os ficheiros XML que pretende utilizar no site. Este é um bom momento para guardar o projeto com um nome descritivo, e isso também permite guardar as associações de ficheiros que acabou de adicionar ao projeto.

![Projeto XML](https://lh5.ggpht.com/-V3GvW60FxRw/UP6iwRG9DuI/AAAAAAAAATU/nm9geL3zWhA/clip_image002_thumb.png?imgmax=800 "XML Project")

Agora, basta clicar com o botão direito na pasta "Arquivos XML" e selecionar "Gerar DTD / Schema...", e depois rever ou atualizar as opções configuráveis.

![Funcionalidade de conversão de XSD para XML no XMLSpy](https://lh3.ggpht.com/-tqOErpnsdVo/UP6ixFWQwAI/AAAAAAAAATk/1TCQL6s_ubM/clip_image003_thumb.png?imgmax=800 "Generate XSD Dialog")

Isto irá gerar um esquema XSD com base em todos os ficheiros XML incluídos na pasta. Depois de clicar em "OK", será solicitado a guardar o esquema XML gerado automaticamente, e este abrirá na [visualização gráfica do esquema XML](https://www.altova.com/pt/xml-schema-editor.html). Aqui estão os elementos globais gerados com base nos ficheiros de exemplo XML:

![XSD gerado a partir de múltiplas instâncias XML](https://lh6.ggpht.com/-5xXyRqVd_jo/UP6ixwkADUI/AAAAAAAAAT0/UQ5bJfBpFaY/clip_image004_thumb.png?imgmax=800 "Schema Globals")

Clicar no ícone de árvore ao lado de qualquer elemento exibe o modelo de conteúdo detalhado.

![Modelo de conteúdo XSD editável](https://lh4.ggpht.com/-V7dptViaW9w/UP6iypwrRqI/AAAAAAAAAUE/RI7IL9P1Ojg/clip_image005_thumb.png?imgmax=800 "XSD Content Model")

O paradigma de design gráfico do editor [XSD](https://www.altova.com/pt/xmlspy/xsd-editor.html) facilita a refinamento e edição deste esquema, conforme necessário.

É isso – em poucos passos, consigo gerar um esquema válido com base num conjunto de ficheiros de exemplo.

Quais funcionalidades do XMLSpy facilitam o seu trabalho diário? Ou, existe alguma funcionalidade que gostaria de ver adicionada para poupar tempo? Adoraríamos saber a sua opinião. Deixe um comentário abaixo!
