[Date Prev]
| [Thread Prev]
| [Thread Next]
| [Date Next]
--
[Date Index]
| [Thread Index]
Re: [xml-dev] Is JSON Schema simpler than XML Schema?
- From: Pete Cordell <pete++xmldev@codalogic.com>
- To: "Costello, Roger L." <costello@mitre.org>,"xml-dev@lists.xml.org" <xml-dev@lists.xml.org>
- Date: Thu, 2 Aug 2018 14:51:27 +0100
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]