blob: c5f212fa5a5e0685a0795fc845c048fce8d2ca71 [file] [log] [blame]
//
// Copyright (c) 2020 Contributors to the Eclipse Foundation
//
[appendix]
== XML Schema
=== Abstract Schema Model
The following summarization abstract schema
component model has been extracted from [XSD Part 1] as a convenience
for those not familiar with XML Schema component model in understanding
the binding of XML Schema components to Java representation. One must
refer to [XSD Part 1] for the complete normative description for these
components.
==== Simple Type Definition Schema Component
.Simple Type Definition Schema Components
[cols=",,",options="header"]
|===
| Component 2+| Description
| `{name}` 2+| Optional. An NCName as defined by [XML-Namespaces].
| `{target namespace}` 2+| Either ·absent· or a namespace name.
| `{base type definition}` 2+| A simple type definition
| `{facets}` 2+| A set of constraining facets.
| `{fundamental facets}` 2+| A set of fundamental facets.
| `{final}` 2+| A subset of {extension, list, restriction, union}.
| `{variety}` 2+| One of {atomic, list, union}. Depending on
the value of {variety}, further properties are defined as follows:
| | atomic
`{primitive type definition}` | A built-in primitive simple type definition.
| | list
`{item type definition}` | A simple type definition.
| | union
`{member type definitions}` |A non-empty sequence of simple type definitions.
| `{annotation}` 2+| Optional. An annotation.
|===
==== Enumeration Facet Schema Component
.Enumeration Facet Schema Components
[cols=",",options="header"]
|===
| Component | Description
| `{value}` | The actual value of the value. (Must be in
value space of base type definition.)
| `{annotation}` | Optional annotation.
|===
==== Complex Type Definition Schema Component
.Complex Type Definition Schema Components
[cols=",",options="header"]
|===
| Component | Description
| `{name}` | Optional. An NCName as defined by [XML-Namespaces].
| `{target namespace}` | Either `absent` or a namespace name.
| `{base type definition}` | Either a simple type definition or a complex type definition.
| `{scope}` | Either _global_ or a complex type definition
| `{derivation method}` | Either extension or _restriction_.
| `{final}` | A subset of {extension, restriction}.
| `{abstract}` | A boolean
| `{attribute uses}` | A set of attribute uses.
| `{attribute wildcard}` | Optional. A wildcard.
| `{content type}` | One of _empty_, a _simple type definition_, or a
pair consisting of a `content model` and one of _mixed_, _element-only_.
| `{prohibited substitutions}` | A subset of {extension, restriction}.
| `{substitution group affiliation}` | Optional. If exists, this element declaration
belongs to a substitution group and this specified element name is the
QName of the substitution head.
| `{annotations}` | A set of annotations.
|===
==== Element Declaration Schema Component
.Element Declaration Schema Components
[cols=",",options="header"]
|===
| Component | Description
| `{name}` | An NCName as defined by [XML-Namespaces].
| `{target namespace}` | Either ·absent· or a namespace name
| `{type definition}` | Either a simple type definition or a complex type definition.
| `{scope}` | Optional. Either global or a complex type definition.
| `{value constraint}` | Optional. A pair consisting of a value and one of default, fixed.
| `{nillable}` | A boolean.
| `{identity-constraint definitions}` | A set of constraint definitions.
| `{substitution group affiliation}` | Optional. A top-level element definition.
| `{substitution group exclusions}` | A subset of {extension, restriction}.
| `{disallowed substitution}` | A subset of {substitution,extension,restriction}.
| `{abstract}` | A boolean.
| `{annotation}` | Optional. An annotation.
|===
==== Attribute Declaration Schema Component
.Attribute Declaration Schema Components
[cols=",",options="header"]
|===
| Component | Description
| `{name}` | An NCName as defined by [XML-Namespaces].
| `{target namespace}` | If form is present and is "qualified", or if
form is absent and the value of @attributeFormDefault on the <schema>
ancestor is "qualified", then the schemas {targetNamespace}, or
`absent` if there is none, otherwise `absent`
| `{type definition}` | A simple type definition.
| `{scope}` | Optional. Either global or a complex type definition.
| `{value constraint}` | Optional. A pair consisting of a value and
one of default, fixed.
| `{annotation}` | Optional. An annotation.
|===
==== Model Group Definition Schema Component
.Model Group Definition Schema Components
[cols=",",options="header"]
|===
| Component | Description
| `{name}` | An NCName as defined by [XML-Namespaces].
| `{target namespace}` | Either `absent` or a namespace name.
| `{model group}` | A model group.
| `{annotation}` | Optional. An annotation.
|===
==== Identity-constraint Definition Schema Component
.Identity-constraint Definition Schema Components
[cols=",",options="header"]
|===
| Component | Description
| `{name}` | An NCName as defined by [XML-Namespaces].
| `{target namespace}` | Either ·absent· or a namespace name.
| `{identity-constraint category}` | One of key, keyref or unique.
| `{selector}` | A restricted XPath ([XPath]) expression.
| `{fields}` | A non-empty list of restricted XPath ([XPath]) expressions.
| `{referenced key}` | Required if \identity-constraint category}
is keyref, forbidden otherwise.
An identity-constraint definition with
{identity-constraint category} equal to key or unique.
| `{annotation}` | Optional. An annotation.
|===
==== Attribute Use Schema Component
.Attribute Use Schema Components
[cols=",",options="header"]
|===
| Component | Description
| `{required}` | A boolean.
| `{attribute declaration}` | An attribute declaration.
| `{value constraint}` | Optional. A pair consisting of a value and
one of default, fixed.
|===
==== Particle Schema Component
.Particle Schema Components
[cols=",",options="header"]
|===
| Component | Description
| `{min occurs}` | A non-negative integer.
| `{max occurs}` | Either a non-negative integer or unbounded.
| `{term}` | One of a model group, a wildcard, or an element declaration.
|===
==== Wildcard Schema Component
.Wildcard Schema Components
[cols=",",options="header"]
|===
| Component | Description
| `{namespace constraint}` | One of any; a pair of not and a namespace
name or `absent`; or a set whose members are either namespace names or
`absent`.
| `{process contents}` | One of `skip`, `lax` or `strict`.
| `{annotation}` | Optional. An annotation.
|===
==== Model Group Schema Component
.Model Group Components
[cols=",",options="header"]
|===
| Component | Description
| `{compositor}` | One of _all, choice_ or _sequence_.
| `{particles}` | A list of particles.
| `{annotation}` | An annotation.
|===
==== Notation Declaration Schema Component
.Notation Declaration Components
[cols=",",options="header"]
|===
| Component | Description
| `{name}` | An NCName as defined by [XML-Namespaces].
| `{target namespace}` | Actual value of the targetNamespace
[attribute] of the parent schema element
| `{system identifier}` | The ·actual value· of the system [attribute],
if present, otherwise absent.
| `{public identifier}` | The ·actual value· of the public [attribute]
| `{annotation}` | Optional. An annotation.
|===
==== Wildcard Schema Component
.Wildcard Components
[cols=",",options="header"]
|===
| Component | Description
| `{namespace constraint}` | One of `any`; a pair of `no` and a
namespace name or `absent`; or a set whose members are either namespace
names or `absent`.
| `{process contents}` | One of `skip`, `lax` or `strict`.
| `{annotation}` | Optional. An annotation.
|===
==== Attribute Group Definition Schema Component
.Attribute Group Definition Schema Components
[cols=",",options="header"]
|===
| Component | Description
| `{name}` | An NCName as defined by [XML-Namespaces].
| `{target namespace}` | Either `absent` or a namespace name.
| `{attribute uses}` | A set of attribute uses.
| `{attribute wildcard}` | Optional. A wildcard. _(part of the complete wildcard)_
| `{annotation}` | Optional. An annotation.
|===