[XML-DEV Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message] Re: Is JSON Schema simpler than XML Schema?
Hi Roger, ... On 02/08/2018 11:29, Costello, Roger L. wrote: Neat! How is the following XML Schema complexType expressed using JCR? Note that the complexType specifies mixed content. <xs:complexType name="InternationalString" mixed="true"> <xs:choice minOccurs="0" maxOccurs="unbounded"> <xs:element name="bdo" type="bdoType" /> <xs:element name="bdi" type="bdiType" /> </xs:choice> <xs:attribute name="direction" type="directionType" /> </xs:complexType> Next, suppose the above complexType is extended (derive-by-extension) with an attribute, as shown below. How is this second complexType expressed in JCR? <xs:complexType name="PedigreeStringType"> <xs:complexContent mixed="true"> <xs:extension base="InternationalString"> <xs:attribute name="pedigree" type="xs:string" /> </xs:extension> </xs:complexContent> </xs:complexType> **Currently** we're investigating using mixins for compositional relationships. We're hoping that, in general, this will be more flexible than pure-OO style extension relationships. Naturally JSON doesn't support mixed types by default or the distinction between elements and attributes, and JCR offers nothing 'out-the-box' to change that. (JCR is intended for data-oriented applications, not text-oriented.) But to use the mixin approach, you would currently have to define a 'group' to be your mixin (such as "InternationalStringMixin") and then use that in your instances of "InternationalString" and "PedigreeStringType". So something like: $InternationalStringMixin = ( ; Note round brackets -> a group def "content" : [ { ( "bdo" : $bdoType | "bdi" : $bdoType ), "text" : string } * ], "direction" : $directionType ) $InternationalString = { ; Braces -> an object definition $InternationalStringMixin } $PedigreeStringType = { $InternationalStringMixin, "pedigree" : string } **Going forwards** we might be able to consider an object referenced inside another object (without a preceding name) to be automatically converted to a group. So, instead of the above, we'd just have: $InternationalString = { ; Note braces "content" : [ { ( "bdo" : $bdoType | "bdi" : $bdoType ), "text" : string } * ], "direction" : $directionType } $PedigreeStringType = { $InternationalString, "pedigree" : string } ----------- I don't think my original message made it to the list, so here's the links for more info again for those that missed it: Latest official spec: http://json-content-rules.org/drafts/draft-newton-json-content-rules-09.txt More info (including syntax checker): http://json-content-rules.org/ I hope at some point we can indulge this lists wisdom for some more feedback on JCR once we've got a new draft out. Thanks again, Pete. -- --------------------------------------------------------------------- Pete Cordell Codalogic Ltd C++ tools for C++ programmers, http://codalogic.com Read & write XML in C++, http://www.xml2cpp.com ---------------------------------------------------------------------
[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] |
PURCHASE STYLUS STUDIO ONLINE TODAY!Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced! Download The World's Best XML IDE!Accelerate XML development with our award-winning XML IDE - Download a free trial today! Subscribe in XML format
|