Uso adequado de códigos de status HTTP em um servidor de "validação"

Entre os dados que meu aplicativo envia para um servidor SOA de terceiros, estão XMLs complexos. O proprietário do servidor fornece os esquemas XML (.xsd) e, como o servidor rejeita XMLs inválidos com uma mensagem sem sentido, preciso validá-los localmente antes de enviar.

Eu poderia usar um validador de esquema XML independente, mas eles são lentos, principalmente devido ao tempo necessário para analisar os arquivos de esquema. Então, eu escrevi meu próprio validador de esquema (em Java, se isso importa) na forma de umServidor HTTP que armazena em cache os esquemas já analisados.

O problema é: muitas coisas podem dar errado no decorrer do processo de validação. Além de exceções inesperadas e validação bem-sucedida:

o servidor pode não encontrar o arquivo de esquema especificadoo arquivo especificado pode não ser um arquivo de esquema válidoo XML é inválido no arquivo de esquema

Como é um servidor HTTP, eu gostaria de fornecer ao cliente informações significativascódigos de status. O servidor deve responder com um400 erro (Pedido ruim) para todos os casos acima? Ou eles não têm nada a ver com HTTP e devem responder200 com uma mensagem no corpo? Alguma outra sugestão?

Atualizar: o aplicativo principal está escrito emRubi, que não possui uma boa biblioteca de validação de esquema xml, portanto, um servidor de validação separado não possui engenharia excessiva.

questionAnswers(7)

yourAnswerToTheQuestion