Question

Est-il possible de spécifier la valeur d'une variable ou un attribut ne doit pas être comme some_value ?

J'ai une exigence étrange, où le xsd ne connaît pas les valeurs étant envoyée. La valeur de cette balise particulière peut être une chaîne avec une valeur sauf une valeur (par exemple data_migration).

L'expéditeur doit reconnaître l'erreur, si cette valeur particulière est envoyée.

Est-il possible de préciser cette restriction?

Était-ce utile?

La solution

Je ne suis pas expert en regex, mais ce simpleType fait tout en commençant par data_migration non valide.

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

Autres conseils

Je ne sais pas si vous pouvez exclure spécifiquement une valeur. Je ne sais pas si cela aide, mais vous pouvez créer deux énumérations séparés, puis créer l'union des énumérations.

<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>

Vous utilisez soit IncludedEnumType ou CombinedEnumType si nécessaire. Utilisation de la IncludedEnumType serait évidemment exclue les valeurs ExcludedEnumType.

Cette approche utilise la solution 2 de cette par IBM .

Utilisez des expressions régulières pour spécifier un motif ou comme dans votre cas quel modèle ne doit pas contenir.

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

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top