JSON 相当于 XSD maxOccurs 的模式
JSON Schema equivalent of XSD maxOccurs
我已经搜索了几个小时,但找不到我所查询的示例。我有一个 XSD 模式(这是一个真正精简的版本)
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="Transaction-Header">
<xs:complexType>
<xs:sequence>
<xs:element name="Origin" type="xs:string" minOccurs="1" maxOccurs="1">
</xs:element>
<xs:element name="Type" type="xs:string" minOccurs="0" maxOccurs="1">
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="Transaction">
<xs:complexType>
<xs:sequence>
<xs:element ref="Transaction-Header" minOccurs="1" maxOccurs="1" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
我正在将它转换为 JSONSchema(这是一个巨大的 xsd)并取得了很大的成功,但我似乎无法弄清楚如何合并 minOccurs 和 maxOccurs 限制。
本质上,应该永远只有 1 Transaction-Header
即
{
"Transaction": {
"Transaction-Header": {
"Origin": "Origin",
"Type": "Type"
}
}
}
无效:
{
"Transaction": {
"Transaction-Header": {
"Origin": "Origin",
"Type": "Type"
},
"Transaction-Header": {
"Origin": "Origin",
"Type": "Type"
}
}
}
我知道这可以通过使用数组 minItems / maxItems 功能来完成,但这些实际上是元素而不是数组,我真的不想尽可能地定义它们。
请问有人知道如何(或即使)这是可能的吗?
JSON 架构使用 JSON 文档模型,您的第二个示例无效 [=17=] -- 属性 名称不能出现两次。您必须重命名您的属性以便它们是唯一的,或者使用数组。
如果您使用数组,您可以使用 contains
和 minContains
/maxContains
来指定数组中项目的限制。
我已经搜索了几个小时,但找不到我所查询的示例。我有一个 XSD 模式(这是一个真正精简的版本)
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="Transaction-Header">
<xs:complexType>
<xs:sequence>
<xs:element name="Origin" type="xs:string" minOccurs="1" maxOccurs="1">
</xs:element>
<xs:element name="Type" type="xs:string" minOccurs="0" maxOccurs="1">
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="Transaction">
<xs:complexType>
<xs:sequence>
<xs:element ref="Transaction-Header" minOccurs="1" maxOccurs="1" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
我正在将它转换为 JSONSchema(这是一个巨大的 xsd)并取得了很大的成功,但我似乎无法弄清楚如何合并 minOccurs 和 maxOccurs 限制。
本质上,应该永远只有 1 Transaction-Header 即
{
"Transaction": {
"Transaction-Header": {
"Origin": "Origin",
"Type": "Type"
}
}
}
无效:
{
"Transaction": {
"Transaction-Header": {
"Origin": "Origin",
"Type": "Type"
},
"Transaction-Header": {
"Origin": "Origin",
"Type": "Type"
}
}
}
我知道这可以通过使用数组 minItems / maxItems 功能来完成,但这些实际上是元素而不是数组,我真的不想尽可能地定义它们。
请问有人知道如何(或即使)这是可能的吗?
JSON 架构使用 JSON 文档模型,您的第二个示例无效 [=17=] -- 属性 名称不能出现两次。您必须重命名您的属性以便它们是唯一的,或者使用数组。
如果您使用数组,您可以使用 contains
和 minContains
/maxContains
来指定数组中项目的限制。