如何在JSON Schema中处理来自XSD的@Ref

时间:2013-08-28 20:46:52

标签: jsonschema

给出以下引用para元素的文本元素的基本示例,para元素本身引用para元素。

我想知道我是否在JSON Schema中正确表示了这个?

<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 个答案:

答案 0 :(得分:1)

这种形式的引用是正确的。这不是唯一组织事物的方式,但这是我推荐的方式。

您的架构中确实存在错误 - 您在“属性”中直接使用“$ ref”。您可能没有在数据中定义名为“$ ref”的属性,所以这是否意味着在另一个属性声明中?