- From: Takuki Kamiya <tkamiya@us.fujitsu.com>
- Date: Mon, 1 Feb 2016 17:17:12 -0800
- To: "public-exi@w3.org" <public-exi@w3.org>
Hi, I have looked at an example to exercise how EXI for JSON [1] works with schemas. Below is an example snippet of a JSON consisting of one record "person". { "person" : { "id" : "Boss", "name" : { "family" : "Smith", "given" : "Bill" }, "email" : "smith@foo.com", "YearsOfService" : 20, "weight" : 175.4, "birthday" : 1955-03-24, "link" : { "manager" : "Boss" "subordinates" : "worker" } } } "link" property in the above is a map that consists of either or both of "manager" and "subordinates". Currently, EXI for JSON carries names as the value of "key" attribute. This makes it difficult to generate EXI grammar, because in both "manager" and "subordinates" cases, the name is contained in the value of "key" attribute. EXI spec expects the distinction be explicitly made in the terminal symbols. (See section 8.5.4.2.2 [2] in EXI spec.) I therefore would like to suggest the following structure in XML. <map link=""> <string manager="">Boss</string> <string subordinates="">worker</string> </map> A structure like the one above would permit the rule in EXI spec section 8.5.4.2.2 to work. The corresponding schema would be as follows: <xs:element name="map"><!-- link --> <xs:complexType> <xs:sequence> <xs:element name="string" minOccurs="0"><!-- subordinates --> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="subordinates" use="required"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:enumeration value=""/> </xs:restriction> </xs:simpleType> </xs:attribute> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="string" minOccurs="0"><!-- manager --> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="manager" use="required"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:enumeration value=""/> </xs:restriction> </xs:simpleType> </xs:attribute> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> </xs:sequence> <xs:attribute name="link" use="required"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:enumeration value=""/> </xs:restriction> </xs:simpleType> </xs:attribute> </xs:complexType> </xs:element> Thank you, [1] https://www.w3.org/TR/2016/WD-exi-for-json-20160128/ [2] https://www.w3.org/TR/2014/REC-exi-20140211/#eliminatingSymbols Takuki Kamiya Fujitsu Laboratories of America
Received on Tuesday, 2 February 2016 01:17:58 UTC