Pregunta

Es posible especificar el valor de una variable o atributo No debería ser así some_value ?

Tengo un requisito extraño, donde el xsd no tiene conocimiento de los valores de ser enviado a la misma. El valor de esa etiqueta en particular puede ser una cadena con cualquier valor excepto un valor (por ejemplo data_migration).

El remitente debe ser reconocido con el error, si se envía ese valor particular.

Es posible especificar esta restricción?

¿Fue útil?

Solución

No soy un experto expresiones regulares, pero esto hace que todo simpleType comenzando con inválida data_migration.

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

Otros consejos

No sé si se puede excluir específicamente un valor. No estoy seguro de si esto ayuda, pero se pueden crear dos enumeraciones separadas y luego crear la unión de las enumeraciones.

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

Se podría utilizar cualquiera IncludedEnumType o CombinedEnumType según sea necesario. Utilizando el IncludedEnumType, obviamente, excluidos los valores en ExcludedEnumType.

Este enfoque utiliza la solución 2 de este artículo por IBM .

Usar expresiones regulares para especificar un patrón o como en su caso lo que un patrón no deben contener.

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

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top