OpenAjax Metadata 1.0 Specification Plurals
From MemberWiki
NOTE: This wiki page holds part of the OpenAjax Metadata 1.0 Specification.
Chapter 13: Plural and Singular Elements
Introduction
OpenAjax Metadata defines many plural elements (i.e., elements whose tagname ends with an "s"), such as <classes>
, <methods>
, <properties>
and <topics>
. For each of these plural elements, there is a corresponding singular element (i.e., an element whose tagname does not end in "s" but shares the same tagname root, such as <class>
, <method>
, <property>
or <topic>
).
Plural elements are an optional structuring convenience that allows metadata authors to group a collection of similar elements under a single parent. For example, suppose an API metadata file contains two class definitions. Either of the following approaches is valid according to the OpenAjax Metadata language schema:
Example #1: Two <class>
elements within a parent <classes>
element
<api> <classes> <class name="foo">...</class> <class name="bar">...</class> </classes> </api>
Example #2: Two <class>
elements without using a parent <classes>
element
<api ...> <class name="foo">...</class> <class name="bar">...</class> </api>
It is technically possible to use both approaches at the same time (including one class definition inside a parent <classes>
element and the other outside it) and still have a metadata file that is valid according to the language schema; however, this approach SHOULD be avoided, and instead you SHOULD use one the above approaches.
A third possibility is to use multiple, optionally named, <classes>
elements:
<api> <classes name="foogroup"> <class name="foo1">...</class> <class name="foo2">...</class> </classes> <classes name="bargroup"> <class name="bar1">...</class> <class name="bar2">...</class> </classes> </api>
Developer tools MUST process all singular elements that are located at valid locations within the metadata file. The two valid locations for singular elements are:
- As child elements of their corresponding plural element (where the plural element is itself located in a valid position within the file). For example, developer tools MUST process all
<class>
elements that are children of a<classes>
element which is a child of an<api>
element. - As singular elements at the same location in the file as where the corresponding plural element is allowed. For example, developer tools MUST process all
<class>
elements that are children of an<api>
element.
Furthermore, developer tools MUST NOT process any singular elements that appear in locations that are not valid according to the language schema.
<aliases>
The <aliases>
element holds zero or more <alias> child elements.
Schema
aliases_element = element aliases { aliases_content & aliases_attributes & foreign_nodes } aliases_content = ( descriptive_elements & alias_element* ) aliases_attributes = ( name? )
Child content
The <aliases>
element might contain any of the following sub-elements:
- descriptive_elements such as <description> and <example>
- <alias>
Attribute summary
Attribute | Description | Type | Required | Default |
---|---|---|---|---|
name | Unique name (within context of current container object) for this particular <aliases> element |
String | no | none |
<ancestors>
The <ancestors>
element holds zero or more <ancestor> child elements.
Schema
ancestors_element = element ancestors { ancestors_content & ancestors_attributes & foreign_nodes } ancestors_content = ( descriptive_elements & ancestor_element* ) ancestors_attributes = ( name? )
Child content
The <ancestors>
element might contain any of the following sub-elements:
- descriptive_elements such as <description> and <example>
- <ancestor>
Attribute summary
Attribute | Description | Type | Required | Default |
---|---|---|---|---|
name | Unique name (within context of current container object) for this particular <ancestors> element |
String | no | none |
<authors>
The <authors>
element holds zero or more <author> child elements.
Schema
authors_element = element authors { authors_content & authors_attributes & foreign_nodes } authors_content = ( descriptive_elements_no_authors & author_element* ) authors_attributes = ( name? )
Child content
The <authors>
element might contain any of the following sub-elements:
- descriptive_elements such as <description> and <example>
- <author>
Attribute summary
Attribute | Description | Type | Required | Default |
---|---|---|---|---|
name | Unique name (within context of current container object) for this particular <authors> element |
String | no | none |
<categories>
The <categories>
element holds zero or more <category> child elements.
Schema
categories_element = element categories { categories_content & categories_attributes & foreign_nodes } categories_content = ( descriptive_elements & category_element* ) categories_attributes = ( name? )
Child content
The <categories>
element might contain any of the following sub-elements:
- descriptive_elements such as <description> and <example>
- <category>
Attribute summary
Attribute | Description | Type | Required | Default |
---|---|---|---|---|
name | Unique name (within context of current container object) for this particular <categories> element |
String | no | none |
<childProperties>
Defined in the Properties chapter.
<classes>
The <classes>
element holds zero or more <class> child elements.
Schema
classes_element = element classes { classes_content & classes_attributes & foreign_nodes } classes_content = ( descriptive_elements & class_element* ) classes_attributes = ( name? & pattern_attributes )
Child content
The <classes>
element might contain any of the following sub-elements:
- descriptive_elements such as <description> and <example>
- <class>
Attribute summary
Attribute | Description | Type | Required | Default |
---|---|---|---|---|
name | Unique name (within context of current container object) for this particular <classes> element |
String | no | none |
pattern_attributes | Attributes 'getterPattern', 'setterPattern', 'registerHandlerPattern' and 'unregisterHandlerPattern'. Defined in Pattern attributes section in Properties chapter. |
<configs>
The <configs>
element holds zero or more <config> child elements.
Schema
configs_element = element configs { configs_content & configs_attributes & foreign_nodes } configs_content = ( descriptive_elements & config_element* ) configs_attributes = ( name? )
Child content
The <configs>
element might contain any of the following sub-elements:
- descriptive_elements such as <description> and <example>
- <config>
Attribute summary
Attribute | Description | Type | Required | Default |
---|---|---|---|---|
name | Unique name (within context of current container object) for this particular <configs> element |
String | no | none |
<contents>
The <contents>
element holds zero or more <content> child elements.
Schema
contents_element = element contents { contents_content & contents_attributes & foreign_nodes } contents_content = ( descriptive_elements & content_element* ) contents_attributes = ( name? )
Child content
The <contents>
element might contain any of the following sub-elements:
- descriptive_elements such as <description> and <example>
- <content>
Attribute summary
Attribute | Description | Type | Required | Default |
---|---|---|---|---|
name | Unique name (within context of current container object) for this particular <contents> element |
String | no | none |
<constructors>
The <constructors>
element holds zero or more <constructor> child elements.
Schema
constructors_element = element constructors { constructors_content & constructors_attributes & foreign_nodes } constructors_content = ( descriptive_elements & constructor_element* ) constructors_attributes = ( name? )
Child content
The <constructors>
element might contain any of the following sub-elements:
- descriptive_elements such as <description> and <example>
- <constructor>
Attribute summary
Attribute | Description | Type | Required | Default |
---|---|---|---|---|
name | Unique name (within context of current container object) for this particular <constructors> element |
String | no | none |
<enums>
The <enums>
element holds zero or more <enum> child elements.
Schema
enums_element = element enums { enums_content & enums_attributes & foreign_nodes } enums_content = ( descriptive_elements & enum_element* ) enums_attributes = ( name? )
Child content
The <enums>
element might contain any of the following sub-elements:
- descriptive_elements such as <description> and <example>
- <enum>
Attribute summary
Attribute | Description | Type | Required | Default |
---|---|---|---|---|
name | Unique name (within context of current container object) for this particular <enums> element |
String | no | none |
<events>
The <events>
element holds zero or more <event> child elements.
Schema
events_element = element events { events_content & events_attributes & foreign_nodes } events_content = ( descriptive_elements & event_element* ) events_attributes = ( name? & registerCallbackPattern? & unregisterCallbackPattern? )
Child content
The <events>
element might contain any of the following sub-elements:
- descriptive_elements such as <description> and <example>
- <event>
Attribute summary
Attribute | Description | Type | Required | Default |
---|---|---|---|---|
name | Unique name (within context of current container object) for this particular <events> element |
String | no | none |
pattern_attributes | Attributes 'registerHandlerPattern' and 'unregisterHandlerPattern'. Defined in Pattern attributes section in Properties chapter. |
<examples>
The <examples>
element holds zero or more <example> child elements.
Schema
examples_element = element examples { examples_content & examples_attributes & foreign_nodes } examples_content = ( descriptive_elements_no_examples & example_element* ) examples_attributes = ( name? )
Child content
The <examples>
element might contain any of the following sub-elements:
- descriptive_elements such as <description> and <example>
- <example>
Attribute summary
Attribute | Description | Type | Required | Default |
---|---|---|---|---|
name | Unique name (within context of current container object) for this particular <examples> element |
String | no | none |
<exceptions>
The <exceptions>
element holds zero or more <exception> child elements.
Schema
exceptions_element = element exceptions { exceptions_content & exceptions_attributes & foreign_nodes } exceptions_content = ( descriptive_elements & exception_element* ) exceptions_attributes = ( name? )
Child content
The <ancestors>
element might contain any of the following sub-elements:
- descriptive_elements such as <description> and <example>
- <exception>
Attribute summary
Attribute | Description | Type | Required | Default |
---|---|---|---|---|
name | Unique name (within context of current container object) for this particular <exceptions> element |
String | no | none |
<icons>
The <icons>
element holds zero or more <icon> child elements.
Schema
icons_element = element icons { icons_content & icons_attributes & foreign_nodes } icons_content = ( descriptive_elements & icon_element* ) icons_attributes = ( name? )
Child content
The <icons>
element might contain any of the following sub-elements:
- descriptive_elements such as <description> and <icon>
- <icon>
Attribute summary
Attribute | Description | Type | Required | Default |
---|---|---|---|---|
name | Unique name (within context of current container object) for this particular <icons> element |
String | no | none |
<interfaces>
The <interfaces>
element holds zero or more <interface> child elements.
Schema
interfaces_element = element interfaces { interfaces_content & interfaces_attributes & foreign_nodes } interfaces_content = ( descriptive_elements & interface_element* ) interfaces_attributes = ( name? & pattern_attributes )
Child content
The <interfaces>
element might contain any of the following sub-elements:
- descriptive_elements such as <description> and <example>
- <interface>
Attribute summary
Attribute | Description | Type | Required | Default |
---|---|---|---|---|
name | Unique name (within context of current container object) for this particular <interfaces> element |
String | no | none |
pattern_attributes | Attributes 'getterPattern', 'setterPattern', 'registerHandlerPattern' and 'unregisterHandlerPattern'. Defined in Pattern attributes section in Properties chapter. |
<javascripts>
The <javascripts>
element holds zero or more <javascript> child elements.
Schema
javascripts_element = element javascripts { javascripts_content & javascripts_attributes & foreign_nodes } javascripts_content = ( descriptive_elements & javascript_element* ) javascripts_attributes = ( name? )
Child content
The <javascripts>
element might contain any of the following sub-elements:
- descriptive_elements such as <description> and <example>
- <javascript>
Attribute summary
Attribute | Description | Type | Required | Default |
---|---|---|---|---|
name | Unique name (within context of current container object) for this particular <javascripts> element |
String | no | none |
<libraries>
The <libraries>
element holds zero or more <library> child elements.
Schema
libraries_element = element libraries { libraries_content & libraries_attributes & foreign_nodes } libraries_content = ( descriptive_elements & library_element* ) libraries_attributes = ( name? )
Child content
The <libraries>
element might contain any of the following sub-elements:
- descriptive_elements such as <description> and <example>
- <library>
Attribute summary
Attribute | Description | Type | Required | Default |
---|---|---|---|---|
name | Unique name (within context of current container object) for this particular <libraries> element |
String | no | none |
<methods>
The <methods>
element holds zero or more <method> child elements.
Schema
methods_element = element methods { methods_content & methods_attributes & foreign_nodes } methods_content = ( descriptive_elements & method_element* ) methods_attributes = ( name? )
Child content
The <methods>
element might contain any of the following sub-elements:
- descriptive_elements such as <description> and <example>
- <method>
Attribute summary
Attribute | Description | Type | Required | Default |
---|---|---|---|---|
name | Unique name (within context of current container object) for this particular <methods> element |
String | no | none |
<mixes>
The <mixes>
element holds zero or more <mix> child elements.
Schema
mixes_element = element mixes { mixes_content & mixes_attributes & foreign_nodes } mixes_content = ( descriptive_elements & mix_element* ) mixes_attributes = ( name? )
Child content
The <mixes>
element might contain any of the following sub-elements:
- descriptive_elements such as <description> and <example>
- <mix>
Attribute summary
Attribute | Description | Type | Required | Default |
---|---|---|---|---|
name | Unique name (within context of current container object) for this particular <mixes> element |
String | no | none |
<mixins>
The <mixins>
element holds zero or more <mixin> child elements.
Schema
mixins_element = element mixins { mixins_content & mixins_attributes & foreign_nodes } mixins_content = ( descriptive_elements & mixin_element* ) mixins_attributes = ( name? )
Child content
The <mixins>
element might contain any of the following sub-elements:
- descriptive_elements such as <description> and <example>
- <mixin>
Attribute summary
Attribute | Description | Type | Required | Default |
---|---|---|---|---|
name | Unique name (within context of current container object) for this particular <mixins> element |
String | no | none |
<namespaces>
The <namespaces>
element holds zero or more <namespace> child elements.
Schema
namespaces_element = element namespaces { namespaces_content & namespaces_attributes & foreign_nodes } namespaces_content = ( descriptive_elements & namespace_element* ) namespaces_attributes = ( name? )
Child content
The <namespaces>
element might contain any of the following sub-elements:
- descriptive_elements such as <description> and <example>
- <namespace>
Attribute summary
Attribute | Description | Type | Required | Default |
---|---|---|---|---|
name | Unique name (within context of current container object) for this particular <namespaces> element |
String | no | none |
<options>
Defined in the Datatypes chapter.
<parameters>
The <parameters>
element holds zero or more <parameter> child elements.
Schema
parameters_element = element parameters { parameters_content & parameters_attributes & foreign_nodes } parameters_content = ( descriptive_elements & parameter_element* ) parameters_attributes = ( name? )
Child content
The <parameters>
element might contain any of the following sub-elements:
- descriptive_elements such as <description> and <example>
- <parameter>
Attribute summary
Attribute | Description | Type | Required | Default |
---|---|---|---|---|
name | Unique name (within context of current container object) for this particular <parameters> element |
String | no | none |
<properties>
Defined in the Properties chapter.
<references>
The <references>
element holds zero or more <reference> child elements.
Schema
references_element = element references { references_content & references_attributes & foreign_nodes } references_content = ( descriptive_elements_no_references & reference_element* ) references_attributes = ( name? )
Child content
The <references>
element might contain any of the following sub-elements:
- descriptive_elements such as <description> and <reference>
- <reference>
Attribute summary
Attribute | Description | Type | Required | Default |
---|---|---|---|---|
name | Unique name (within context of current container object) for this particular <references> element |
String | no | none |
<requires>
The <requires>
element holds zero or more <require>, <library> and <libraries> child elements.
Schema
requires_element = element requires { requires_content & requires_attributes & foreign_nodes } requires_content = ( descriptive_elements & library_element* & libraries_element* & require_element* ) requires_attributes = ( name? )
Child content
The <requires>
element might contain any of the following sub-elements:
- descriptive_elements such as <description> and <example>
- <require>
- <library> or <libraries>
Attribute summary
Attribute | Description | Type | Required | Default |
---|---|---|---|---|
name | Unique name (within context of current container object) for this particular <requires> element |
String | no | none |
<returnTypes>
The <returnTypes>
element holds zero or more <returnType> child elements.
Schema
returnTypes_element = element returnTypes { returnTypes_content & returnTypes_attributes & foreign_nodes } returnTypes_content = ( descriptive_elements & returnType_element* ) returnTypes_attributes = ( name? )
Child content
The <returnTypes>
element might contain any of the following sub-elements:
- descriptive_elements such as <description> and <example>
- <returnType>
Attribute summary
Attribute | Description | Type | Required | Default |
---|---|---|---|---|
name | Unique name (within context of current container object) for this particular <returnTypes> element |
String | no | none |
<singletons>
The <singletons>
element holds zero or more <singleton> child elements.
Schema
singletons_element = element singletons { singletons_content & singletons_attributes & foreign_nodes } singletons_content = ( descriptive_elements & singleton_element* ) singletons_attributes = ( name? & pattern_attributes )
Child content
The <singletons>
element might contain any of the following sub-elements:
- descriptive_elements such as <description> and <example>
- <singleton>
Attribute summary
Attribute | Description | Type | Required | Default |
---|---|---|---|---|
name | Unique name (within context of current container object) for this particular <singletons> element |
String | no | none |
pattern_attributes | Attributes 'getterPattern', 'setterPattern', 'registerHandlerPattern' and 'unregisterHandlerPattern'. Defined in Pattern attributes section in Properties chapter. |
<topics>
The <topics>
element holds zero or more <topic> child elements.
Schema
topics_element = element topics { topics_content & topics_attributes & foreign_nodes } topics_content = ( descriptive_elements & topic_element* ) topics_attributes = ( name? )
Child content
The <topics>
element might contain any of the following sub-elements:
- descriptive_elements such as <description> and <example>
- <topic>
Attribute summary
Attribute | Description | Type | Required | Default |
---|---|---|---|---|
name | Unique name (within context of current container object) for this particular <topics> element |
String | no | none |
<userAgents>
The <userAgents>
element holds zero or more <userAgent> child elements.
Schema
userAgents_element = element userAgents { userAgents_content & userAgents_attributes & foreign_nodes } userAgents_content = ( descriptive_elements & userAgent_element* ) userAgents_attributes = ( name? )
Child content
The <userAgents>
element might contain any of the following sub-elements:
- descriptive_elements such as <description> and <example>
- <userAgent>
Attribute summary
Attribute | Description | Type | Required | Default |
---|---|---|---|---|
name | Unique name (within context of current container object) for this particular <userAgents> element |
String | no | none |