O que há de novo na versão 1.1 do XML Schema?

Desde a introdução do XML Schema 1.0, este padrão tem sido amplamente adotado. Ao longo dos anos, os desenvolvedores solicitaram diversas alterações, sendo as mais notáveis a capacidade de especificar e validar regras de negócio mais detalhadas, bem como permitir uma evolução mais flexível dos esquemas. Existem inúmeras alterações e melhorias na Recomendação XML Schema 1.1 que visam resolver estes problemas.

Vamos analisar as funcionalidades mais importantes e apresentar alguns recursos para aprender mais ou começar imediatamente a utilizar o XML Schema 1.1.

Descubra as novidades na versão 1.1 do XML Schema

Existe uma explicação detalhada das novas funcionalidades e melhorias presentes no XML Schema 1.1, disponível gratuitamente no nosso.. Curso de formação online sobre esquemas XML, que pode aceder a qualquer momento e concluir no seu próprio ritmo. Se é um desenvolvedor de esquemas experiente e apenas pretende conhecer as novidades e melhorias introduzidas no XSD 1.1, avance diretamente para o Capítulo 9. Este curso é uma excelente forma de aprender sobre o XML Schema 1.1 e de adaptar rapidamente os seus esquemas para aproveitar as novas funcionalidades.

Neste artigo, explicarei alguns dos principais aspetos e mostrarei como pode implementar as novas funcionalidades utilizando o XMLSpy. O suporte completo para o XML Schema 1.1 está disponível nas versões 2014 e superiores do XMLSpy, incluindo a validação de ficheiros XSD e de instâncias XML com base no XML Schema 1.1, bem como ferramentas de edição inteligentes para o XSD 1.1 no editor gráfico XML Schema 1.1.

Afirmações

As asserções, também chamadas de restrições condicionais, no XML Schema 1.1 permitem a validação baseada em regras de políticas de negócio que envolvem mais de um elemento. Estas regras são definidas utilizando expressões XPath. Por exemplo, pode utilizar o novo elemento para verificar se um valor de despesa é inferior ou igual ao valor permitido, se uma data se encontra dentro de um determinado período, e assim por diante. Neste exemplo, a asserção especifica que a hora de fim de uma reunião deve ser superior à hora de início. Pode ver esta representação na vista de design do XML Schema aqui:

E no código correspondente:

É fácil rever as afirmações existentes num esquema através da vista "Globals", que oferece uma aba "Afirmações" para documentos XML Schema 1.1. Também pode adicionar novas afirmações e selecionar o espaço de nomes XPath padrão aqui.

Ou, pode defini-los na vista do modelo de conteúdo, clicando com o botão direito do rato num elemento na vista do modelo de conteúdo e selecionando "Adicionar asserção filha". Pode definir o teste XPath diretamente no modelo de conteúdo através da janela de assistência "Detalhes".

Esta capacidade de definir e validar regras de negócio é uma grande vantagem do XML Schema 1.1, e esta representação gráfica ajuda a orientá-lo durante o processo.

Alternativas para os tipos condicionais

As alternativas de tipos condicionais são outra funcionalidade concebida para tornar os XSDs mais poderosos, adicionando flexibilidade integrada. Estas permitem que um tipo seja atribuído dinamicamente a um elemento com base no valor de um atributo no documento XML. O elemento xs:alternative possui dois atributos: type e test. Aqui está um exemplo utilizando o esquema de "Reuniões" com o qual começámos anteriormente.

Se a hora de término da reunião for antes do meio-dia, o tipo da reunião é "Reunião da Manhã". Após o meio-dia, é uma "Reunião da Tarde". Para definir isto no editor de esquemas XML, basta clicar com o botão direito no elemento "Reunião" e escolher "Adicionar filho/alternativa". Utilize a ferramenta de auxílio para preencher os detalhes e introduzir uma expressão XPath, e, em seguida, selecione o tipo que será atribuído dinamicamente ao elemento no menu suspenso "Tipo".

Agora, qualquer elemento "Meeting" numa instância XML com uma hora de término posterior a 12:00:00 utilizará o tipo "MeetingType AfternoonMeeting". Utilizar um editor gráfico de XSD facilita a visualização e a configuração destas relações.

Atributos globais do esquema

O XML Schema 1.1 permite definir um conjunto de atributos padrão que são aplicados automaticamente a todos os tipos complexos no esquema. Por exemplo, no nosso esquema de "Reuniões", é útil que os atributos "startTime" e "endTime" se apliquem a todos os elementos, sem ter de os adicionar manualmente, o que é moroso e pode levar a erros – especialmente num esquema com um grande número de elementos. O elemento "xs:schema" no XML Schema 1.1 possui um elemento "defaultAttributes" opcional, que identifica um grupo de atributos. (Se existir um elemento específico em que não seja desejável aplicar o(s) atributo(s) padrão, pode especificar isso com "defaultAttributesApply="false"".) É fácil adicionar um "attributeGroup" e definir os atributos padrão na vista "Globals" do editor de XML Schema.

Em seguida, utilize a caixa de diálogo "Configurações do Esquema", que pode ser acedida através do menu de design do esquema, para selecionar o grupo de atributos que acabou de criar como os atributos padrão, a partir de uma lista suspensa.

Acima, estão algumas das principais atualizações introduzidas pelo XML Schema 1.1. Outras incluem atributos herdáveis, funcionalidades aprimoradas para grupos de substituição, um tipo de dados "xs:error" e outras novidades. Todas estas funcionalidades são explicadas em detalhe, com exemplos práticos, no capítulo 9 do curso de formação online sobre XML Schema.

Recursos e ferramentas adicionais:

XML Schema 1.1 Recommendation XMLSpy XML Schema 1.1 Editor and validator RaptorXML XML Schema 1.1 Validation Server Free Online XML Schema 1.1 Training