Pergunta

É possível especificar o valor de uma tag ou atributo não deveria ser como Algum_value ?

Eu tenho um requisito estranho, onde o XSD não está ciente dos valores que estão sendo enviados a ele. O valor dessa tag em particular pode ser uma string com qualquer valor exceto um valor ( dizer data_migration).

O remetente deve ser reconhecido com o erro, se esse valor específico for enviado.

É possível especificar essa restrição?

Foi útil?

Solução

Não sou especialista em regex, mas este simplório faz tudo começando com data_migration inválido.

<xs:simpleType name="notDataMigration">
  <xs:restriction base="xs:string">
    <xs:pattern value="^(?!data_migration).*" />
  </xs:restriction>
</xs:simpleType>

Outras dicas

Não sei se você pode excluir especificamente um valor. Não tenho certeza se isso ajuda, mas você pode criar duas enumerações separadas e, em seguida, criar a união das enumerações.

<xsd:simpleType name="IncludedEnumType">
  <xsd:restriction base="xsd:string">
    <xsd:enumeration value="pending" />
    <xsd:enumeration value="in_process" />
    <xsd:enumeration value="failed" />
    <xsd:enumeration value="unknown" />
  </xsd:restriction>
</xsd:simpleType>

<xsd:simpleType name="ExcludedEnumType">
  <xsd:restriction base="xsd:string">
    <xsd:enumeration value="data_migration" />
  </xsd:restriction>
</xsd:simpleType>

<xsd:simpleType name="CombinedEnumType">
  <xsd:union memberTypes="IncludedEnumType ExcludedEnumType" />
</xsd:simpleType>

Você usaria também IncludedEnumType ou CombinedEnumType como necessário. Usando o IncludedEnumType obviamente excluiria os valores em ExcludedEnumType.

Esta abordagem usa a solução 2 deste Artigo da IBM.

Use expressões regulares para especificar um padrão ou como no seu caso, o que um padrão não deve conter.

http://www.w3schools.com/schema/schema_facets.asp

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