Original Article: Accelerating Adoption of XML Vocabularies
Author: xFront

Acelerando a Adoção de Vocabularios XML

Quer acelerar a adoção do seu vocabulário XML? Uma maneira é ter uma força de gorila de 800 libras para todos usá-la. Mas isso em breve resultará em ressentimento e rebelião. Uma maneira melhor é criar algo que as pessoas realmente desejam usar e não exige deles um grande investimento em tempo ou dinheiro e permite que eles comecem a interoperar imediatamente. Veja como:

  1. Quando você cria seu vocabulário XML, especifique não apenas o significado da marcação, mas também seu comportamento em aplicativos que o processam.
  2. Especificar regras de conformidade.
  3. Crie um conjunto de testes.
  4. Crie um aplicativo que implemente o comportamento.
  5. Valide o aplicativo contra o conjunto de teste.
  6. Tornar a aplicação disponível para o mundo.

Idealmente, serão implementadas várias implementações do aplicativo (cada uma com o mesmo comportamento, é claro!). Dessa forma, os usuários podem selecionar uma implementação com base em seu desempenho ou tamanho ou qual linguagem de programação foi implementada em.

É isso aí! Faça isso e seu vocabulário XML pode ser adotado rapidamente.

Exemplo: Considere o vocabulário XSLT. A especificação XSLT especifica não apenas o significado de cada elemento e atributo, mas também seu comportamento. A especificação XSLT contém regras de conformidade. Existe um conjunto de testes XSLT. Foi criado um aplicativo chamado processador XSLT que implementa o comportamento especificado na especificação XSLT. Na verdade, implementações múltiplas da aplicação foram criadas: Xalan, Saxon, Sableton e outros.

Deixe-me elaborar um pouco mais sobre o que quero dizer com "especificando o comportamento". Considere novamente XSLT. A especificação XSLT diz que o elemento identifica uma coleção de nós. Isso significa. Ele também diz que um aplicativo compatível deve iterar sobre cada nó identificado pelo atributo de seleção (o elemento para-cada tem um atributo de seleção) e executar os elementos dentro de . Isso é comportamento. Assim, a especificação XSLT especifica como um aplicativo deve se comportar no elemento . Ditto para todo o vocabulário XSLT.

A especificação XML Schema faz um bom trabalho especificando o comportamento dos validadores XML Schema. Por exemplo, especifica que, para uma declaração de elemento em um Esquema XML, um validador deve verificar se o documento de instância XML contém o número correto de ocorrências de um elemento e seu conteúdo é do tipo correto. Assim, ele especifica como o validador deve se comportar no vocabulário do Esquema XML. Então, "especificar comportamento" significa descrever "para esse elemento (ou atributo) no vocabulário, o aplicativo deve fazer isso, isto e isto".

O erro que as pessoas fazem ao criar um vocabulário XML é que eles não especificam seu comportamento. Eles deixam o "mundo" para descobrir o que o comportamento deveria ser. Um exemplo clássico disso é o HTML. Os desenvolvedores do navegador tiveram que decidir qual seria o comportamento. Eles apresentaram idéias muito variadas sobre o comportamento adequado. A conseqüência foi que o IE, o Firefox e os outros navegadores se comportaram de forma diferente. Demorou 10 anos antes, eles finalmente convergiram para uma compreensão comum do comportamento. Se a especificação HTML tivesse declarado o comportamento, forneciam regras de conformidade e um conjunto de teste, então teríamos navegadores de comportamento idêntico há 10 anos.

Uma coisa que você deve considerar ao especificar o comportamento é esta: seu vocabulário XML será alimentado no aplicativo como um documento XML ou como dois documentos XML? (Ou mais?) Vamos tirar alguns exemplos para ver o que quero dizer:

  • Os aplicativos do navegador processam um documento (um documento HTML)
  • Os validadores do Esquema XML processam dois documentos (um documento XML Schema e um documento XML)
  • Os processadores XSLT processam dois documentos (um documento XSLT e um documento XML)

Nestes exemplos, as aplicações são: navegador, XML Schema validator e processador XSLT. Esses aplicativos processam um vocabulário XML. Dependendo do vocabulário XML, um aplicativo pode exigir um documento de entrada ou dois documentos de entrada (ou mais).

Interoperabilidade de dados

Muitas vezes ouvi dizer: "Para alcançar a interoperabilidade de dados, cada aplicativo deve interpretar / entender o vocabulário XML da mesma maneira"

Que melhor maneira de garantir a mesma interpretação / compreensão do que usar o mesmo aplicativo!

Ao usar o mesmo aplicativo, podemos ter perfeita interoperabilidade de dados. NOTA: Quando digo "a mesma aplicação", quero dizer, um conjunto de implementações. Assim, Xalan, Saxon e Sabletron são todos da mesma aplicação: são todos os processadores XSLT. Usar o mesmo aplicativo não significa, por exemplo, que todos usem o Xalan. Uma pessoa pode usar Xalan, outra usa Saxon e outro Sabletron. Tudo bem; todos eles têm o mesmo comportamento; Todos seguem as regras de conformidade XSLT; Todos passam no conjunto de testes XSLT.

Aqui está um exemplo para ilustrar como a interoperabilidade de dados é alcançada através do uso compartilhado do mesmo aplicativo.

Exemplo: Considere XSLT. Posso criar um documento XSLT e executá-lo no meu processador XSLT. Posso enviar o documento XSLT para você e você executá-lo no seu processador XSLT. Recebemos o mesmo comportamento. Concordamos perfeitamente sobre o que o elemento significa e como deve se comportar. Ditto para todos os outros elementos e atributos no vocabulário XSLT. Nós interoperamos com sucesso. O que permitiu isso? Resposta: O que permitiu a interoperabilidade é o fato de que estamos usando o mesmo aplicativo. (Mais uma vez, devo enfatizar que isso não significa que estamos usando a mesma implementação do aplicativo, você pode usar o Xalan e talvez eu esteja usando o saxão, está tudo bem, eles são ambos os processadores XSLT.)

Posso criar um segundo documento XSLT e enviá-lo para você. Mais uma vez, temos uma interoperabilidade perfeita. E um terceiro documento XSLT. E assim por diante. O aplicativo do processador XSLT facilita a criação de infinitas transformações XSLT diferentes, trocadas e executadas com perfeita compreensão / interoperabilidade

Recap

Aqui estão os principais pontos:

  1. Quando você cria um vocabulário XML, especifique o comportamento do vocabulário XML. Especificar os requisitos de conformidade. Crie um conjunto de testes. Implementar aplicativos compatíveis, cada um com o mesmo comportamento (as implementações podem variar em tamanho, desempenho, linguagem de programação, etc.). Todos usam as implementações
  2. A interoperabilidade dos dados não é alcançada através da compreensão compartilhada do vocabulário XML. A interoperabilidade dos dados é conseguida através do uso compartilhado da aplicação do vocabulário XML.
  3. Criar um vocabulário XML sem especificar seu comportamento é uma má idéia. É, na melhor das hipóteses, uma receita para a interoperabilidade de dados atrasados, a interoperabilidade de dados com falha na pior das hipóteses.