Pergunta

Meu requisito é validar um XML com duas estratégias de validação diferentes. Na Estratégia 1, o XML é necessário para ter instâncias de um elemento com certos atributos necessários. Na Estratégia 2, o XML é necessário para ter instâncias do mesmo elemento com diferentes atributos necessários. Portanto, a idéia é que existem dois conjuntos diferentes do mesmo elemento com diferentes conjuntos de atributos necessários para cada conjunto. Existe uma maneira de validar isso usando apenas um XSD. Minha única solução até agora é usar dois arquivos XSD diferentes para validar.

Exemplo 1:

<?xml version="1.0" encoding="UTF-8"?>
<root>
    <element firstName="something"/> <!--required -->
    <element lastName="something"/> <!-- required -->
 <element phoneNumber="something"/> <!-- not required -->
<root>

Exemplo 2:

<?xml version="1.0" encoding="UTF-8"?>
<root>
    <element firstName="something"/> <!-- not required -->
    <element lastName="something"/> <!-- required -->
 <element phoneNumber="something"/> <!-- required -->
<root>

A validação do XSD pode ser alcançada?

Foi útil?

Solução

Rick,

Eu tive problemas semelhantes para resolver em nossos aplicativos, e nossa melhor solução foi usar esquemas modularizados.

Portanto, em vez de ter esquema e esquema 2 que são duplicados um do outro, exceto pela parte diferente, você tem esquema e esquema2 que incluem apenas as restrições que são diferentes e ambas importam um esquema comum que define as restrições compartilhadas.

Um exemplo de como fazer isso é aqui.

Ele não fornece um único XSD, mas reduz a duplicação, por isso ajuda na manutenção e ajuda a evitar a probabilidade de erros que surgem quando você tem muita duplicação entre o esquema1 e o esquema2.

A desvantagem é que os esquemas se tornam um pouco mais difíceis de seguir os humanos, porque as definições são divididas entre diferentes arquivos.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top