Uso correcto de los códigos de estado HTTP en un servidor de "validación"

Entre los datos que mi aplicación envía a un servidor SOA de terceros se encuentran XML complejos. El propietario del servidor proporciona los esquemas XML (.xsd) y, dado que el servidor rechaza los XML no válidos con un mensaje sin sentido, necesito validarlos localmente antes de enviarlos.

Podría usar un validador de esquema XML independiente, pero son lentos, principalmente debido al tiempo requerido para analizar los archivos de esquema. Así que escribí mi propio validador de esquemas (en Java, si eso importa) en forma deServidor HTTP que almacena en caché los esquemas ya analizados.

El problema es: muchas cosas pueden salir mal en el curso del proceso de validación. Aparte de excepciones inesperadas y validación exitosa:

el servidor puede no encontrar el archivo de esquema especificadoel archivo especificado puede no ser un archivo de esquema válidoel XML no es válido contra el archivo de esquema

Como es un servidor HTTP, me gustaría proporcionarle al clientecódigos de estado. Si el servidor responde con un400 error (Solicitud incorrecta) para todos los casos anteriores? O no tienen nada que ver con HTTP y debería responder200 con un mensaje en el cuerpo? ¿Alguna otra sugerencia?

Actualizar: la aplicación principal está escrita enRubí, que no tiene una buena biblioteca de validación de esquemas xml, por lo que un servidor de validación independiente no está sobreingeniería.