Как работать с @Ref из XSD в схеме JSON
Ниже приведен базовый пример текстового элемента, который ссылается на элемент para, а сам элемент para ссылается на элемент para.
Мне интересно, правильно ли я представляю это в схеме JSON?
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="text">
<xs:complexType>
<xs:sequence>
<xs:element ref="para"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="para">
<xs:complexType mixed="true">
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="para"/>
</xs:choice>
<xs:attribute name="id" type="xs:ID"/>
</xs:complexType>
</xs:element>
</xs:schema>
Я думаю, что это должно быть сделано с этим стилем {"$ ref": "# / definitions / diskDevice"}, http://json-schema.org/example2.html.
Это правильно?
{
"id": "http://some.site.somewhere/entry-schema#",
"$schema": "http://json-schema.org/draft-04/schema#",
"title": "text",
"type": "object",
"properties": {
"$ref": "#/definitions/para"
},
"definitions": {"para": {
"required": true,
"type": "object",
"properties": {
"id": {
"type": "string",
"required": true
},
"$ref": "#/definitions/para"
}
}
}
}
Спасибо
1 ответ
Эта форма ссылки является правильной. Это не единственный способ организовать вещи, но я рекомендую это.
Однако у вас есть ошибка в вашей схеме - у вас есть "$ref" непосредственно внутри "свойств". Предположительно, вы не определяете свойство под названием "$ref" в своих данных, так что это должно быть внутри другого объявления свойства?