Patrón de restricción de esquema XML para no permitir cadenas específicas

Necesito escribir un esquema XSD con una restricción en un campo, para asegurarme de que el valor del campo no contenga la subcadena FILENAME en ninguna ubicación.

Por ejemplo, todo lo siguiente debe ser inválido:

FILENAME
ORIGINFILENAME
FILENAMETEST
123FILENAME456

Ninguno de estos valores debe ser válido.

En un lenguaje de expresión regular que admita búsqueda anticipada negativa, podría hacer esto escribiendo/^((?!FILENAME).)*$ pero el lenguaje de patrones XSD no admite la búsqueda anticipada negativa.

¿Cómo puedo implementar una restricción de patrón XSD con el mismo efecto que/^((?!FILENAME).)*$ ?

Necesito usar el patrón, porque no tengo acceso a las aserciones XSD 1.1, que son la otra posibilidad obvia.

La preguntaRestricción XSD que niega una cadena coincidente cubre un caso similar, pero en ese caso la cadena prohibida está prohibida solo como un prefijo, lo que facilita la comprobación de la restricción. ¿Cómo se puede extender la solución para cubrir el caso en el que tenemos que verificar todas las ubicaciones dentro de la cadena de entrada, y no solo el comienzo?

Respuestas a la pregunta(1)

Su respuesta a la pregunta