#xsd #openapi #servicestack-openapi
Вопрос:
<xs:element name="EarningsData" minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:element type="xs:float" name="A"
nillable="true" />
<xs:element type="xs:float" name="B"
nillable="true" />
</xs:sequence>
</xs:complexType>
</xs:element>
В приведенном выше XSD-файле есть minOccurs
и nillable
. Как это можно преобразовать в OpenAPI?
Ответ №1:
maxOccurs
И minOccurs
указывает, является ли это элементом массива или нет. Приведенное выше определение комплексного типа XSD преобразуется в следующее определение модели OAS 3:
EarningsData:
type: array
minItems: 0
items:
type: object
properties:
A:
type: integer
format: float
nullable: true
B:
type: integer
format: float
nullable: true
Если XSD имеет maxOccurs
атрибут, его можно сопоставить со maxItems
свойством в OpenAPI. Но если maxOccurs="unbounded"
, это означает, что нет ограничений на количество элементов, поэтому вам не нужно maxItems
явно указывать в OpenAPI.
Комментарии:
1. Если там maxOccurs неограничен, как maxOccurs=»неограничен», то как мы это напишем ?
2. Согласно спецификации , экземпляр массива допустим для «maxItems», если его размер меньше или равен значению этого ключевого слова. Поскольку при
unbounded
этом нет ограничений на количество элементов, вам не нужно явно указывать их в swagger.