JSON模式中的Choice元素

时间:2018-07-25 23:56:47

标签: json xsd jsonschema

我想在json模式中复制以下XSD:

  <xs:element maxOccurs="unbounded" name="Variable" minOccurs="0">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="VariableName" type="xs:string" />
        <xs:choice maxOccurs="1">
          <xs:sequence>
            <xs:element name="VariableValue" type="xs:string" />
          </xs:sequence>
          <xs:sequence>
            <xs:element name="ValueMask" type="xs:string" minOccurs="0" maxOccurs="1" />
            <xs:element name="Prefix" type="xs:string" minOccurs="0" maxOccurs="1" />
            <xs:element name="RangeStart" type="xs:int" />
            <xs:element name="RangeEnd" type="xs:int" />
            <xs:element name="Suffix" type="xs:string" minOccurs="0" maxOccurs="1" />
          </xs:sequence>
        </xs:choice>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

此XSD具有以下要求:

  • 所有Variable节点将具有VariableName元素
  • 某些Variable节点将具有VariableValue元素
  • Variable具有VariableValue元素的节点不能具有ValueMaskPrefixRangeStartRangeEnd和{{1} }元素
  • 某些Suffix节点将具有VariableRangeStart元素
  • 具有RangeEndVaraible元素的
  • RangeStart节点也可以具有RangeEndValueMask和/或Prefix元素。
  • Suffix具有VariableRangeStart元素的Nodex不能具有RangeEnd元素。

我在这里看到了similar question,但是它具有VariableValue属性,这将阻止对"additionalProperties": falseValueMask和/或选择选项2时Prefix

有人知道如何在JSON模式中实现这些要求吗?

这是我正在使用的当前JSON :(请原谅这些注释,我知道它们不是有效的JSON)

Suffix

0 个答案:

没有答案