Domanda

E 'possibile specificare il valore di un tag o un attributo non dovrebbe essere come some_value ?

Ho un requisito strana, dove il XSD non è a conoscenza dei valori di essere inviato ad esso. Il valore di quel particolare tag può essere una stringa con qualsiasi valore tranne un valore (diciamo data_migration).

Il mittente deve essere confermato con l'errore, se tale valore particolare viene inviato.

E 'possibile specificare questa restrizione?

È stato utile?

Soluzione

Non sono un esperto espressione regolare, ma questo simpleType rende tutto a cominciare data_migration valido.

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

Altri suggerimenti

Non so se si può escludere in modo specifico un valore. Non sono sicuro se questo aiuta, ma è possibile creare due enumerazioni separati e quindi creare l'unione delle enumerazioni.

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

Si potrebbe utilizzare sia IncludedEnumType o CombinedEnumType se necessario. Utilizzando il IncludedEnumType sarebbe ovviamente esclusi i valori in ExcludedEnumType.

Questo approccio utilizza Soluzione 2 da questo da IBM .

Utilizzare le espressioni regolari per specificare un modello o come nel suo caso ciò che un modello non dovrebbe contenere.

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

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top