XML.orgXML.org
FOCUS AREAS |XML-DEV |XML.org DAILY NEWSLINK |REGISTRY |RESOURCES |ABOUT
OASIS Mailing List ArchivesView the OASIS mailing list archive below
or browse/search using MarkMail.

 


Help: OASIS Mailing Lists Help | MarkMail Help

[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index]
Re: [xml-dev] 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]


News | XML in Industry | Calendar | XML Registry
Marketplace | Resources | MyXML.org | Sponsors | Privacy Statement

Copyright 1993-2007 XML.org. This site is hosted by OASIS