Padrão de restrição de esquema XML por não permitir sequência específica
Preciso escrever um esquema XSD com uma restrição em um campo, para garantir que o valor do campo não contenha a substring FILENAME em nenhum local.
Por exemplo, todos os itens a seguir devem ser inválidos:
FILENAME
ORIGINFILENAME
FILENAMETEST
123FILENAME456
Nenhum desses valores deve ser válido.
Em uma linguagem de expressão regular que ofereça suporte negativo, eu poderia fazer isso escrevendo/^((?!FILENAME).)*$
mas a linguagem de padrão XSD não suporta lookahead negativo.
Como posso implementar uma restrição de padrão XSD com o mesmo efeito que/^((?!FILENAME).)*$
?
Preciso usar o padrão, porque não tenho acesso às asserções do XSD 1.1, que são a outra possibilidade óbvia.
A questãoRestrição XSD que nega uma sequência correspondente abrange um caso semelhante, mas nesse caso a string proibida é proibida apenas como um prefixo, o que facilita a verificação da restrição. Como a solução pode ser estendida para cobrir o caso em que precisamos verificar todos os locais na cadeia de entrada, e não apenas o começo?