Como verificar os atributos XML usando a enumeração XSD?
-
27-09-2019 - |
Pergunta
Eu tenho a seguinte sequência XML
<property name="a" value="x" />
<property name="b" value="xx" />
Eu quero limitar "a"
para uma lista de valores, como [x, y, z] e "b"
Para outra lista como [xx, yy, zz
É possível fazer isso usando o XSD e se é como?
Se isso não for possível, como você recomenda alterar o formato XML para prepará -lo para a validação do XSD? (Eu tenho mais de dois property
pares de nome/valor)
Solução
O XSD realiza o que você deseja (validação condicional) usando o ninho.
Portanto, embora você não possa usar o XSD para tornar os valores de um atributo condicional aos valores de outro (como Fyodor Soikin diz em sua resposta), você pode usar o XSD para tornar os valores de um atributo condicional ao próprio elemento:
<propertyNameA value="x"/>
<propertyNameB value="xx"/>
Nesse caso, cada propriedade é seu próprio elemento, e cada atributo "valor" tem sua própria enumeração.
Ele oferece o benefício adicional de poder restringir quantos de cada propriedade nomeada você pode ter, mas a desvantagem é que você precisa gerenciar mais elementos.
Dependendo das especificidades da sua situação, usar o XSD dessa maneira pode ser a melhor opção, ou pode ser melhor implementar outro sistema que possa fazer a validação de nome/valor necessária.