# XML Schema include

> XML Schema include é o recurso da linguagem XML Schema (XSD) que permite a um arquivo de esquema incorporar as definições de outro arquivo do mesmo namespace, como se fossem um só. Nos documentos fiscais eletrônicos, ele divide os leiautes oficiais em partes reutilizáveis, como tipos básicos e estruturas comuns, usadas para validar o XML.

**Também conhecido como:** xs:include, xsd:include, Inclusão de esquema XML, Include de XSD, XML Schema include

**Glossário:** [Glossário de A a Z](https://conota.dev/glossario/) · **Letra:** X

## O que é o XML Schema include?

Um esquema XML, ou XSD, é um arquivo que descreve as regras de um documento XML: quais campos existem, em que ordem aparecem, que tipo de valor aceitam e quais são obrigatórios. Quando esse conjunto de regras é grande, faz sentido dividi-lo em vários arquivos menores.

O include é a instrução que junta esses pedaços. No código, ela aparece como o elemento xs:include, com um atributo schemaLocation que indica o caminho do arquivo a ser incorporado. Na prática, o validador lê o arquivo principal, encontra o include e carrega as definições do outro arquivo como se estivessem escritas ali.

## Para que serve o include nos esquemas fiscais?

Os pacotes de esquemas publicados para documentos como NF-e, NFC-e, CT-e e MDF-e costumam ser compostos por vários arquivos XSD. Há um arquivo para o leiaute do documento, outro com tipos básicos reaproveitados (como formatos de CNPJ, datas e valores monetários) e outros para eventos, como cancelamento ou carta de correção.

O include evita repetir as mesmas definições em cada arquivo. Se um tipo básico for ajustado, a mudança é feita em um único lugar e vale para todos os esquemas que o incluem. Isso facilita a manutenção dos leiautes e a publicação de novas versões.

## Qual a diferença entre include e import no XML Schema?

O include serve para juntar arquivos que pertencem ao mesmo namespace, ou seja, ao mesmo espaço de nomes que identifica o vocabulário do documento. Também é aceito incluir um arquivo sem namespace definido, que passa a adotar o namespace de quem o incluiu.

O import, por outro lado, traz definições de um namespace diferente. Um exemplo comum nos esquemas fiscais é a assinatura digital do XML, cujas estruturas seguem o padrão XML Signature, que tem namespace próprio. Por isso, ela costuma entrar por import, e não por include.

## Que erros o include pode causar na validação?

O problema mais frequente é o validador não encontrar o arquivo indicado no schemaLocation. Isso acontece quando alguém copia só o XSD principal para o projeto, esquece os arquivos auxiliares ou muda a estrutura de pastas, quebrando os caminhos relativos.

Outro erro comum é misturar arquivos de versões diferentes do mesmo leiaute, por exemplo, um arquivo principal novo incluindo um arquivo de tipos de versão anterior. O resultado pode ser uma mensagem de tipo não declarado ou uma validação que aceita ou recusa campos de forma inesperada. A recomendação é manter o pacote de esquemas completo e na mesma versão.

## Quem integra por API precisa lidar com o include?

Depende de como a integração é feita. Quem monta e valida o XML fiscal dentro do próprio sistema precisa carregar o pacote completo de XSDs e garantir que todos os includes sejam resolvidos corretamente.

Quando a emissão passa por uma API fiscal que recebe os dados em JSON e gera o XML, a validação contra os esquemas oficiais fica a cargo dessa infraestrutura. Mesmo assim, entender o include ajuda a interpretar mensagens de erro de validação e a investigar divergências ao comparar XMLs autorizados.

## Exemplos de XML Schema include

- Um arquivo de leiaute da NF-e usa xs:include para trazer um arquivo de tipos básicos, onde estão definidos formatos como o de CNPJ, CPF e valores decimais.
- Um desenvolvedor copia apenas o XSD principal do CT-e para o projeto e, ao validar, recebe um erro informando que um tipo não foi declarado, porque o arquivo incluído ficou de fora.
- Uma equipe de ERP organiza os esquemas de eventos fiscais em uma pasta separada e precisa ajustar os caminhos do schemaLocation para que os includes continuem funcionando.
- Ao migrar para uma nova versão do leiaute, o time substitui todo o pacote de XSDs de uma vez, evitando que arquivos antigos sejam incluídos por engano.

## Perguntas frequentes

### O include altera o conteúdo do XML da nota fiscal?

Não. O include atua apenas nos arquivos de esquema, que definem as regras de validação. O XML da nota não muda; o que muda é o conjunto de regras usado para verificar se ele está correto.

### Posso usar include para trazer o esquema da assinatura digital?

Normalmente não. A assinatura digital segue o padrão XML Signature, que tem namespace próprio. Para trazer definições de outro namespace, o recurso adequado é o xs:import.

### Por que meu validador diz que não encontrou um arquivo XSD?

Geralmente o arquivo citado no schemaLocation do include não está na pasta esperada. Verifique se o pacote de esquemas foi copiado inteiro, na mesma versão, e se a estrutura de pastas original foi mantida.

## Termos relacionados

- [Esquema XML](https://conota.dev/glossario/esquema-xml.md)
- [Arquivo XML fiscal](https://conota.dev/glossario/arquivo-xml-fiscal.md)
- [Erro de validação fiscal](https://conota.dev/glossario/erro-de-validacao-fiscal.md)
- [Assinatura digital do XML](https://conota.dev/glossario/assinatura-digital-do-xml.md)
- [JSON Schema](https://conota.dev/glossario/json-schema.md)
- [API fiscal](https://conota.dev/glossario/api-fiscal.md)

---

Fonte: [XML Schema include](https://conota.dev/glossario/xml-schema-include/) · Atualizado em 2026-10-22
