XSD (XML Schema Definition)

XSD (XML Schema Definition) é uma recomendação do World Wide Web Consortium (W3C) que especifica como descrever formalmente os elementos em um documento XML (Extensible Markup Language). Essa descrição pode ser usada para verificar se cada item de conteúdo em um documento adere à descrição do elemento no qual o conteúdo deve ser colocado. O XSD 1.1 tornou-se um padrão W3C aprovado em abril de 2012.

XSD também pode ser usado para gerar documentos XML que podem ser tratados como objetos de programação. Além disso, uma variedade de ferramentas de processamento XML também pode gerar documentação legível para humanos, o que facilita a compreensão de documentos XML complexos.

Em geral, um esquema é uma representação abstrata das características de um objeto e sua relação com outros objetos. Um esquema XML representa a inter-relação entre os atributos e elementos de um objeto XML (por exemplo, um documento ou uma parte de um documento). O processo de criação de um esquema para um documento envolve a análise de sua estrutura e a definição de cada elemento estrutural encontrado. Por exemplo, um esquema para um documento que descreve um website definiria um elemento do website, um elemento da página web e outros elementos que descrevem possíveis divisões de conteúdo dentro de qualquer página desse site. Assim como em XML e HTML, os elementos são definidos dentro de um conjunto de tags.

XSD tem várias vantagens sobre linguagens de esquemas XML anteriores, tais como Definição de Tipo de Documento (DTD) ou XML de Objeto Simples (SOX). O XSD é escrito em XML, o que significa que ele não requer processamento intermediário por um analisador. Outros benefícios incluem a autodocumentação, criação automática de esquemas e a capacidade de ser consultado através de XML Transformations (XSLT).

Existem muitos desafios e limitações com o XSD também. Alguns detratores têm argumentado que é desnecessariamente complexo, carece de uma descrição matemática formal e tem suporte limitado para conteúdo não-ordenado.