Wie ein Aufzählungswert in XML-Datei mit XSD auszuschließen?
-
22-09-2019 - |
Frage
Ist es möglich, den Wert einer Variablen oder Attribut angeben sollte wie nicht some_value
Ich habe eine seltsame Anforderung, wo die XSD nicht bekannt, die Werte werden an ihn gesendet. Der Wert dieser bestimmten Tag kann ein String mit einem beliebigen Wert sein außer einem Wert (sagen wir data_migration
).
Der Absender sollte mit dem Fehler quittiert werden, wenn der betreffende Wert gesendet wird.
Ist es möglich, diese Einschränkung zu geben?
Lösung
Ich bin kein Experte regex, aber das simple macht alles mit data_migration
ungültig zu starten.
<xs:simpleType name="notDataMigration">
<xs:restriction base="xs:string">
<xs:pattern value="^(?!data_migration).*" />
</xs:restriction>
</xs:simpleType>
Andere Tipps
Ich weiß nicht, ob Sie speziell Wert ausschließen. Ich bin nicht sicher, ob das hilft, aber Sie können zwei getrennte Aufzählungen erstellen und dann die Vereinigung der Aufzählungen erstellen.
<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>
Sie würden entweder IncludedEnumType
oder CombinedEnumType
verwendet, falls nötig. offensichtlich ausgeschlossen würden die Werte in IncludedEnumType
die ExcludedEnumType
verwenden.
Dieser Ansatz verwendet Lösung 2 aus diesen Artikeln von IBM .
Verwenden von regulären Ausdrücken ein Muster zu geben, oder wie in Ihrem Fall, was ein Muster nicht enthalten.