Pular para o conteúdo
Aback Tools Logo

Como Validar XML Contra um Esquema XSD: Erros, Ferramentas e CI/CD

Como validar documentos XML contra esquemas XSD: boa formação vs validade, anatomia de um XSD, validação local no navegador e por CLI com xmllint, erros XSD comuns explicados e validação automatizada de esquemas no GitHub Actions.

DH
Tutorials & How-Tos12 min de leitura2,700 palavras

Um documento XML que é analisado sem erros tem boa formação, mas boa formação não é o mesmo que correto. A validação XSD vai um nível mais fundo, verificando cada elemento contra um contrato: os campos obrigatórios estão presentes, os tipos de dados coincidem, os valores caem dentro das faixas permitidas e os elementos aparecem na ordem correta. Este guia explica exatamente o que a validação XSD verifica, como executá-la online e em código, o que significam os erros mais comuns e como integrar a validação XSD no seu pipeline de CI para que documentos quebrados nunca cheguem à produção.

2Níveis de validaçãoboa formação + validade de esquema
100%Verificações locais no navegadornenhum XML sai do seu dispositivo
<1sVelocidade de validaçãofeedback instantâneo sobre erros

O que é a validação XSD?

XSD significa XML Schema Definition. É um padrão do W3C que permite descrever a estrutura exata que um documento XML deve seguir: quais elementos são permitidos, em que ordem aparecem, a quais tipos de dados o conteúdo deve corresponder e quais atributos são obrigatórios ou opcionais. Quando você valida um documento XML contra um XSD, um parser lê ambos os arquivos e relata cada ponto em que o documento desvia do contrato do esquema.

O XSD substituiu o antigo formato DTD (Document Type Definition) como a principal linguagem de esquemas XML porque ele próprio é escrito em XML, suporta um rico conjunto de tipos de dados integrados (`xs:integer`, `xs:date`, `xs:boolean`, etc.) e pode expressar restrições complexas como padrões de string, faixas numéricas e requisitos condicionais de elementos. DTDs ainda são encontrados em sistemas legados, mas o XSD é o padrão para qualquer intercâmbio de dados baseado em XML construído nos últimos quinze anos.

Onde a validação XSD é usada

A validação XSD aparece onde quer que dados XML estruturados cruzem uma fronteira de sistema. Exemplos comuns incluem requisições e respostas de serviços web SOAP (descritas por WSDL, que embute esquemas XSD), formatos de faturamento eletrônico e compras como UBL 2.1 e EDIFACT, intercâmbio de dados de saúde com perfis XML HL7 CDA e FHIR, declarações XML governamentais (impostos, alfândega) e arquivos de configuração de software corporativo como o `pom.xml` do Maven ou o XML de contexto de aplicação do Spring.

  • Serviços SOAP / WSDL: cada elemento de requisição e resposta é definido em um XSD embutido.
  • Faturamento eletrônico (UBL, CII): formatos de compras e faturas carregam esquemas XSD públicos contra os quais os parceiros comerciais validam.
  • Saúde (HL7, FHIR XML): o intercâmbio de documentos clínicos exige conformidade XSD estrita antes da aceitação.
  • Declarações governamentais: autoridades fiscais e alfandegárias publicam esquemas XSD que os documentos enviados devem satisfazer.
  • Ferramentas de build: o pom.xml do Maven, o build.xml do Ant e muitos outros formatos de configuração usam XSD para auto-completar e validação no IDE.

Note

A validação XSD é distinta da correção de namespaces XML. Um documento pode referenciar o URI de namespace correto e ainda assim falhar na validação XSD se seu conteúdo violar as restrições do esquema. Valide sempre contra o esquema, não apenas contra a declaração de namespace.

Boa formação vs validade

Todo documento XML deve primeiro ter boa formação antes de poder ser validado. A boa formação é verificada pelo próprio parser XML, sem necessidade de esquema. A validade é uma camada adicional verificada contra um esquema específico. Entender a distinção economiza tempo significativo de depuração: um validador XSD que recebe um documento mal formado frequentemente relata erros de esquema confusos em vez do verdadeiro problema de análise.

Um objeto textual é um documento XML bem formado se corresponde à produção rotulada document e satisfaz todas as restrições de boa formação dadas na especificação.

- Especificação XML do W3C

O que a boa formação verifica

  • Pareamento de tags: toda tag de abertura tem uma tag de fechamento correspondente (`&lt;item&gt;` → `&lt;/item&gt;`).
  • Aninhamento correto: as tags devem fechar em ordem reversa - `&lt;a&gt;&lt;b&gt;&lt;/b&gt;&lt;/a&gt;` é válido; `&lt;a&gt;&lt;b&gt;&lt;/a&gt;&lt;/b&gt;` não é.
  • Elemento raiz único: o documento tem exatamente um elemento de nível superior.
  • Atributos entre aspas: todos os valores de atributo estão envoltos em aspas simples ou duplas.
  • Caracteres especiais escapados: `&lt;`, `&gt;`, `&`, `"` e `'` dentro do conteúdo de texto devem usar referências de entidade ou seções CDATA.
  • Nomes de elementos e atributos válidos: os nomes começam com letra ou sublinhado, não com dígito ou hífen.

O que a validade XSD acrescenta por cima

Uma vez que a boa formação passa, a validação XSD sobrepõe o contrato do esquema. Isso inclui verificar que todo elemento declarado como obrigatório por `minOccurs="1"` está realmente presente, que o conteúdo de texto em elementos tipados corresponde ao `xs:type` declarado (nada de strings em campos inteiros), que os valores numéricos caem dentro dos limites `xs:minInclusive` e `xs:maxInclusive`, que o conteúdo de string satisfaz as restrições regex `xs:pattern`, e que os elementos filhos aparecem na sequência, escolha ou grupo all definidos no esquema.

VerificaçãoBoa formaçãoValidade XSD
Pareamento e aninhamento de tags✓ Sim✓ Pré-requisito
Elemento raiz único✓ Sim✓ Pré-requisito
Elementos obrigatórios presentes✗ Não✓ Sim - minOccurs
Correção de tipos de dados✗ Não✓ Sim - xs:integer, xs:date, etc.
Restrições de faixa numérica✗ Não✓ Sim - minInclusive/maxInclusive
Correspondência de padrões de string✗ Não✓ Sim - xs:pattern
Ordenação de elementos✗ Não✓ Sim - xs:sequence / xs:choice
Valores de atributo permitidos✗ Não✓ Sim - xs:enumeration

Verificador de Boa Formação XML

Verifique seu documento XML em busca de tags mal formadas, aninhamento inválido, elemento raiz ausente e erros de entidade - local no navegador com diagnósticos por linha.

Open tool

Anatomia de um esquema XSD

Antes de poder validar XML contra um XSD, você precisa entender o que um arquivo XSD contém. Um arquivo de esquema é ele próprio um documento XML válido, com um elemento raiz `xs:schema` no namespace `http://www.w3.org/2001/XMLSchema`. Tudo dentro do esquema descreve como os documentos XML de destino devem ser.

invoice.xsd
xml
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">

  <!-- Root element declaration --&gt;
  <xs:element name="Invoice">
    <xs:complexType>
      <xs:sequence>
        <!-- Required string - must be present exactly once --&gt;
        <xs:element name="InvoiceNumber" type="xs:string" minOccurs="1" maxOccurs="1"/>
        <!-- Required date --&gt;
        <xs:element name="IssueDate"     type="xs:date"   minOccurs="1" maxOccurs="1"/>
        <!-- Required positive integer --&gt;
        <xs:element name="TotalAmount"   type="xs:decimal" minOccurs="1" maxOccurs="1"/>
        <!-- Optional - 0 to many line items --&gt;
        <xs:element name="LineItem"      type="LineItemType" minOccurs="0" maxOccurs="unbounded"/>
      </xs:sequence>
      <!-- Required attribute --&gt;
      <xs:attribute name="currency" type="xs:string" use="required"/>
    </xs:complexType>
  </xs:element>

  <!-- Reusable complex type definition --&gt;
  <xs:complexType name="LineItemType">
    <xs:sequence>
      <xs:element name="Description" type="xs:string"/>
      <xs:element name="Quantity"    type="xs:positiveInteger"/>
      <xs:element name="UnitPrice"   type="xs:decimal"/>
    </xs:sequence>
  </xs:complexType>

</xs:schema>

Conceitos-chave do XSD

  • xs:element: declara um elemento por nome e tipo. `minOccurs` e `maxOccurs` controlam a cardinalidade.
  • xs:complexType: define um elemento que contém elementos filhos ou atributos (não apenas texto).
  • xs:simpleType: define um tipo derivado de um tipo integrado - usado para adicionar restrições como padrões ou enumerações.
  • xs:sequence: os elementos filhos devem aparecer na ordem exata listada.
  • xs:choice: exatamente um dos elementos filhos listados deve aparecer.
  • xs:all: todos os elementos filhos listados devem aparecer, em qualquer ordem, cada um exatamente uma vez.
  • xs:attribute: declara um atributo em um elemento complexo. `use="required"` o torna obrigatório.
  • xs:restriction: adiciona restrições a um tipo base - `xs:pattern`, `xs:minInclusive`, `xs:enumeration`, etc.

Tip

Você pode gerar um rascunho de XSD a partir de um documento XML existente usando ferramentas que inferem o esquema a partir de dados de amostra. Sempre revise e restrinja a saída gerada - esquemas inferidos tendem a tornar todos os elementos opcionais e deixar os tipos como `xs:string` até que você adicione manualmente as declarações de tipo e as restrições de cardinalidade adequadas.

Como validar XML contra XSD

Há três formas práticas de validar um documento XML contra um esquema XSD: uma ferramenta baseada em navegador para verificações rápidas, uma ferramenta de linha de comando para desenvolvimento local e scripting, e uma abordagem programática para integração no código da aplicação ou pipelines de CI. Todas as três abordagens relatam as mesmas categorias de erros - a diferença está em onde e como você executa a validação.

1

Verifique primeiro a boa formação

Antes de executar a validação XSD, confirme que o documento XML tem boa formação. Use o Verificador de Boa Formação XML para capturar erros estruturais - um documento mal formado produzirá erros XSD enganosos e desperdiçará tempo de depuração. Corrija primeiro todos os problemas no nível do parser e depois passe para a validação de esquema.

2

Valide online com o Validador XML da Aback Tools

Abra o Validador XML, cole seu documento XML no painel esquerdo e seu esquema XSD no painel direito, e execute a validação. A ferramenta processa ambos os arquivos inteiramente no seu navegador - nenhum dado é enviado. Cada erro de validação é relatado com o caminho do elemento, a restrição violada e o número da linha no documento de origem.

3

Valide na linha de comando com xmllint

Para desenvolvimento local e scripting, o `xmllint` do pacote libxml2 é a escolha padrão de CLI. Execute `xmllint --schema schema.xsd document.xml --noout` - a opção `--noout` suprime o eco do documento para que apenas erros sejam impressos. Uma saída limpa sem saída significa que o documento é válido. No macOS, instale via `brew install libxml2`; no Ubuntu/Debian, `apt-get install libxml2-utils`.

4

Valide programaticamente em Java, Python ou .NET

Para validação em nível de aplicação, use a biblioteca XML integrada da sua linguagem. O pacote `javax.xml.validation` do Java (Xerces), o `lxml.etree.XMLSchema` do Python e o `XmlSchemaSet` com `XmlReader` do .NET suportam todos a validação XSD com poucas linhas de código. Integre a chamada de validação na fronteira da sua API ou no ponto de ingestão de arquivos para rejeitar documentos inválidos antes que cheguem à lógica de negócio.

terminal
bash
# Validate document.xml against schema.xsd using xmllint
xmllint --schema schema.xsd document.xml --noout

# Output on success:
document.xml validates

# Output on failure:
document.xml:12: element TotalAmount: Schemas validity error:
Element 'TotalAmount': 'abc' is not a valid value of the
atomic type 'xs:decimal'.

Validador XML

Valide documentos XML quanto à boa formação e conformidade com o esquema - local no navegador, sem upload necessário, com relatório de erros por linha.

Open tool

Erros comuns de validação XSD

Os erros de validação XSD caem em categorias previsíveis. Entender o que cada tipo de erro significa permite localizar e corrigir o problema no documento de origem rapidamente, em vez de decodificar saída desconhecida do validador linha por linha.

Erros de incompatibilidade de tipos

Erros de tipo ocorrem quando o conteúdo de um elemento ou atributo não corresponde ao `xs:type` declarado. Os mais comuns: uma string como `"N/A"` em um campo declarado como `xs:integer`, uma data no formato errado (por exemplo, `15/06/2026` em vez de `2026-06-15`) em um campo `xs:date`, ou um decimal em um campo declarado como `xs:positiveInteger`. Corrija ajustando o valor no documento de origem ou modificando a declaração de tipo no esquema se o tipo atual for restritivo demais.

Elementos obrigatórios ausentes

Quando `minOccurs="1"` (o padrão de `xs:element`) e o elemento está ausente do documento de instância, o validador relata: `Element 'X': This element is not expected. Expected is one of ( Y )` ou `Element 'X' is missing`. Isso normalmente significa que o produtor do XML omitiu um campo obrigatório. Consulte o `xs:sequence` do esquema para confirmar quais elementos são obrigatórios e em qual posição.

Elementos inesperados ou não declarados

Se seu esquema não usa `xs:any` e não define `processContents="lax"`, qualquer elemento não declarado no esquema produzirá: `Element 'X': This element is not expected`. Este é o erro mais comum quando um produtor de XML adiciona um novo campo sem atualizar o esquema, ou quando o documento contém um prefixo de namespace não declarado. Verifique o nome do elemento, o contexto do elemento pai e as declarações de namespace no topo do documento.

Violações de padrão e enumeração

O XSD suporta `xs:pattern` (uma regex) e `xs:enumeration` (uma lista de valores permitidos) como facetas em tipos simples. Uma violação se parece com: `Element 'Status': [facet 'enumeration'] The value 'ACTIVE' is not an element of the set active', 'inactive', 'pending`. Verifique se o esquema usa valores de enumeração sensíveis a maiúsculas e se o documento de instância corresponde exatamente às maiúsculas esperadas.

Tipo de erroFragmento típico da mensagemComo corrigir
Incompatibilidade de tipos'abc' is not a valid xs:integerCorrija o valor ou afrouxe o tipo
Elemento ausente'InvoiceNumber' is missingAdicione o elemento obrigatório ao documento
Elemento inesperado'Notes': This element is not expectedRemova o elemento ou adicione-o ao XSD
Falha de enumeraçãoValue 'ACTIVE' not in setAjuste as maiúsculas dos valores do enum do esquema
Violação de padrãoValue fails xs:pattern restrictionCorrija o valor para corresponder à regex
Ordem de sequênciaExpected is 'IssueDate' not 'Total'Reordene os elementos para corresponder ao xs:sequence
CardinalidadeElement 'Item' can occur max 1 timesRemova o duplicado ou aumente o maxOccurs

Warning

Erros de ordem de elementos são particularmente fáceis de passar despercebidos. Uma declaração `xs:sequence` exige que os elementos apareçam na ordem listada - mesmo que todos os elementos estejam presentes e tenham valores válidos, estarem fora de ordem causa uma falha de validação de esquema. Verifique sempre a definição da sequência no XSD quando vir erros "This element is not expected" em elementos que você sabe que existem.

Validação XSD em código e CI/CD

A validação manual serve para verificações pontuais, mas os fluxos XML de produção precisam de validação automatizada em cada ponto de integração. Adicionar validação XSD ao seu código de aplicação e pipeline de CI garante que documentos inválidos sejam rejeitados antes de causarem corrupção de dados, falhas de processamento ou violações de conformidade a jusante.

Validando em Python com lxml

validate_xml.py
python
from lxml import etree

def validate_against_xsd(xml_path: str, xsd_path: str) -&gt; list[str]:
    """Returns a list of validation error messages, empty if valid."""
    with open(xsd_path, 'rb') as f:
        schema_doc = etree.parse(f)
    schema = etree.XMLSchema(schema_doc)

    with open(xml_path, 'rb') as f:
        doc = etree.parse(f)

    schema.validate(doc)
    return [str(e) for e in schema.error_log]

errors = validate_against_xsd('invoice.xml', 'invoice.xsd')
if errors:
    for err in errors:
        print(err)
else:
    print('Document is valid.')

Adicionando validação XSD ao GitHub Actions

Para fluxos CI/CD que processam ou geram XML, uma etapa de validação impede que documentos quebrados sejam mesclados. O comando `xmllint` está disponível nos runners Ubuntu do GitHub Actions via `sudo apt-get install -y libxml2-utils`. Adicione uma etapa que executa `xmllint --schema schema.xsd document.xml --noout` em cada pull request que tocar arquivos XML. Um código de saída não zero falha a verificação e bloqueia a mesclagem.

.github/workflows/xml-validate.yml
yaml
name: Validate XML
on:
  pull_request:
    paths:
      - '**/*.xml'

jobs:
  validate:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Install xmllint
        run: sudo apt-get install -y libxml2-utils
      - name: Validate XML against XSD
        run: |
          xmllint --schema schemas/invoice.xsd \
                  data/invoices/*.xml \
                  --noout

Usando XPath para inspecionar valores específicos antes da validação

Antes de executar uma passagem XSD completa, você pode usar o Localizador e Testador de XPath para localizar o valor de um elemento ou atributo específico em um documento XML grande. Consultas XPath como `//Invoice/TotalAmount/text()` recuperam um campo sem precisar analisar o arquivo inteiro manualmente. Isso é especialmente útil ao diagnosticar uma incompatibilidade de tipos em um documento com centenas de elementos - localize primeiro o valor problemático e aplique depois a correção.


Comparação de abordagens de validação

AbordagemVelocidadePrivacidadeSuporte a esquemasMelhor para
Validador XML da Aback ToolsInstantâneo✓ Local no navegadorBoa formação + XSDVerificações pontuais rápidas
xmllint CLIRápido✓ Máquina localXSD, DTD, RelaxNGScripts de dev e CI/CD
lxml / Xerces / .NETRápido✓ No processoXSD (especificação completa)Código de aplicação
Ferramentas online no servidorModerado✗ Dados enviadosVariávelEvitar para esquemas sensíveis

Boas práticas de XSD

Um esquema XSD bem projetado torna os documentos mais fáceis de validar, de estender e de manter entre versões do esquema. Essas práticas se aplicam tanto se você está escrevendo um esquema do zero quanto mantendo um recebido de um parceiro externo.

Use tipos nomeados em vez de tipos anônimos em linha

Defina tipos complexos com `xs:complexType name="..."` em vez de aninhá-los anonimamente dentro das declarações de elementos. Tipos nomeados podem ser reutilizados em várias declarações de elementos, reduzindo a repetição e facilitando mudanças no esquema - atualize a definição do tipo uma vez e todos os elementos que o usam herdam a mudança.

Prefira xs:sequence a xs:all para contratos estritos

`xs:all` permite que elementos apareçam em qualquer ordem, o que parece permissivo mas introduz ambiguidade para produtores e consumidores. `xs:sequence` é mais explícito e corresponde à ordem natural de leitura da maioria dos formatos XML. Use `xs:all` apenas quando a ordem dos elementos genuinamente não importa e você está escrevendo o esquema para um sistema que controla; prefira `xs:sequence` para qualquer esquema que cruze fronteiras organizacionais.

Versione seus esquemas com um namespace

Use um URI de target namespace que inclua um indicador de versão, como `targetNamespace="urn:example:invoice:v2"`. Isso torna explícitas as mudanças de esquema que quebram compatibilidade - consumidores na v1 verão um mismatch de namespace em vez de validar silenciosamente contra a versão errada do esquema. Mantenha o esquema antigo disponível para implantações retrocompatíveis durante a janela de migração.

  • Declare um targetNamespace: evita colisões de nomes de elementos quando esquemas são compostos via xs:import.
  • Use xs:documentation: adicione descrições legíveis dentro de blocos xs:annotation para que os consumidores do esquema entendam cada campo.
  • Defina minOccurs/maxOccurs explícitos: nunca dependa do padrão - declare a cardinalidade explicitamente para comunicar a intenção.
  • Use xs:restriction para strings restritas: um campo de CEP deveria usar xs:pattern, não xs:string - a validação captura erros de formato na fronteira.
  • Divida esquemas grandes: use xs:include para partir um esquema de 500 linhas em arquivos por domínio (addresses.xsd, line-items.xsd) para facilitar a manutenção.

Tip

Depois de editar um XSD, revalide sempre seus documentos de teste existentes contra o esquema atualizado. Uma mudança de esquema que restringe uma regra pode invalidar silenciosamente documentos que antes eram válidos. Use o [Validador XML](/tools/data/validators/xml-validator) para rodar uma verificação de regressão rápida em seus fixtures de teste canônicos antes de publicar o esquema atualizado.

Note

Se você trabalha com dados XML que precisam ser consumidos por APIs REST ou aplicações JavaScript, o [Conversor de XML para JSON](/tools/data/converters/xml-json-converter) converte documentos XML validados para o formato JSON preservando a hierarquia de elementos e os valores de atributo.

Key takeaways

  • A validação XSD verifica um documento XML contra um contrato de esquema - tipos de elementos, campos obrigatórios, faixas de valores e ordenação - além da boa formação básica.
  • Confirme sempre a boa formação com o Verificador de Boa Formação XML antes de executar a validação XSD para evitar saídas de erro enganosas.
  • Os erros XSD mais comuns são incompatibilidades de tipos, elementos obrigatórios ausentes, elementos inesperados e violações de ordem do xs:sequence.
  • Use `xmllint --schema schema.xsd document.xml --noout` na linha de comando para validação local rápida e integração com CI/CD.
  • Adicione uma etapa de validação XSD ao seu workflow do GitHub Actions para bloquear a mesclagem de documentos XML inválidos na branch principal.
  • Projete esquemas XSD com tipos nomeados, cardinalidade explícita, target namespaces e facetas xs:restriction para criar esquemas estritos e manuteníveis.
  • Use o Localizador e Testador de XPath para localizar valores específicos em documentos XML grandes antes e depois da validação.

Perguntas frequentes

XSD validation is the process of checking an XML document against an XML Schema Definition (XSD) file to confirm it meets all defined structural and data constraints. It goes beyond well-formedness checks - which only verify that the XML is syntactically correct - by enforcing element order, data types, value ranges, string patterns, and which elements are required or optional. A document that is well-formed but fails XSD validation is called invalid.

A well-formed XML document follows the basic XML syntax rules: every opening tag has a matching closing tag, tags are properly nested, attribute values are quoted, and there is exactly one root element. A valid XML document is well-formed AND conforms to a specific schema (DTD, XSD, or Relax NG) that defines the allowed elements, attributes, types, and constraints. Well-formedness is checked by any XML parser; validity requires the schema file to be present during the check.

The quickest approach is to use the Aback Tools XML Validator, which runs entirely in your browser. Paste your XML document into the first panel and your XSD schema into the second, then click Validate. The tool reports each constraint violation with the element path and line number. No file is uploaded to a server - all processing happens locally, which makes it safe for schemas that contain proprietary data structures or sensitive field names.

Run the command: xmllint --schema yourschema.xsd yourdocument.xml --noout. The --noout flag suppresses the document echo, leaving only validation errors in the output. A clean exit with no output means the document is valid. xmllint is part of the libxml2 package, available on Linux via apt-get install libxml2-utils and on macOS via Homebrew with brew install libxml2. For Windows, it is included with many XML toolkits.

The most frequent XSD errors are: missing required elements (an element declared with minOccurs='1' is absent), type mismatches (a string in a field declared as xs:integer), pattern violations (a value that does not match an xs:pattern restriction), unexpected element order (elements declared in a specific sequence appearing out of order), and attribute violations (a required attribute is missing or an undeclared attribute is present). Most validators report these with the element path and constraint name.

Yes. Large XML schemas are often split across multiple XSD files using xs:import and xs:include directives. The root XSD imports the sub-schemas, and a validating parser resolves them either from the file system or from namespace URIs. When validating locally with xmllint or a Java-based validator (Xerces, Saxon), you pass the root XSD and the parser follows the import chain automatically, provided all referenced schema files are accessible.

xs:include pulls in a schema file that belongs to the same target namespace as the current schema. xs:import pulls in a schema file that belongs to a different namespace. Use xs:include to split a large schema into manageable files that all share one namespace. Use xs:import when you need to reference elements or types from an external namespace, such as the SOAP envelope namespace or a shared enterprise data model namespace.

For new projects using REST APIs and JSON payloads, JSON Schema is the practical choice - it has better tooling integration with OpenAPI, a lighter syntax, and broader library support in modern languages. XSD remains the right choice when working with SOAP web services, EDI formats like UBL and EDIFACT, government and healthcare data exchange (HL7 CDA, FHIR XML), or any legacy system that is already XML-based. If the ecosystem you are integrating with uses XML, XSD is the validation standard.

ShareXLinkedIn