[AIXM-245] AIXM XML namespace policy
ID: | AIXM-245 |
target version: | AIXM 5.2 |
version: | 1.0 |
last updated: | 17 AUG 2018 |
status: | APPROVED |
Description
An XML namespace policy is established for AIXM, to be applied starting with version 5.2.
Rationale for change
See https://aixmccb.atlassian.net/browse/AIXM-233
Until now, each AIXM version came with its own namespace. For example, AIXM 5.1.1 declares the namespace http://www.aixm.aero/schema/5.1.1, which is different from the AIXM 5.1 namespace (http://www.aixm.aero/schema/5.1).
However, every time you change the namespace, you will break all processing applications. So existing implementations, which rely on code generated from the AIXM 5.1 schema, can’t easily adapt to exchange AIXM 5.1.1 based data sets, even if the used elements haven’t changed between AIXM 5.1 and AIXM 5.1.1.
So the namespace shall stay the same if there are no impacts on the existing implementations. Bug fixing and patching should not break implementations.
Impact assessment
There is no impact on existing implementations, as the new namespace policy applies to the new versions only.
Change Proposal details
The following AIXM XML namespace policy shall be published and adhered to starting with AIXM 5.2:
Version designator
The XML namespace can assist traceability from an XML implementation to its specification document. New components can be defined in major and minor revisions of a specification document. Hence, the XML namespace used in an implementation SHALL incorporate the major and minor version designation of the documents that contains the specification of the components implemented.
A bug fix revision corrects but does not change the meaning of, or add any new functionality to an AIXM implementation. The bug fix version designator SHALL NOT appear in the XML namespace.
Note: The XML namespace combined with the value of xsd:schema/@version uniquely identify the XML schema.
Pattern for namespace
The pattern for an XML namespace used for XML implementation of AIXM is
http://www.aixm.aero/schema/{X}.{Y}
where:
- {X}.{Y} are the first two version levels from the version designator of the corresponding AIXM release (see http://aixm.aero/page/aixm-versioning-policy).
Note: The pattern applies to all all AIXM namespaces, not just to the main namespace. Specifically, for the “message” namespace the pattern is http://www.aixm.aero/schema/{X}.{Y}/message.
The use of only the first two version elements is consistent with the principle that the third number in a version designator designates bug-fix releases only, with no change of content, so users should only use the latest bug-fix version.
Namespace example
If there were a 2nd bugfix revision of the XML implementation of the schema with the namespace http://www.aixm.aero/schema/5.2 the <schema> element should contain the following:
<xsd:schema targetNamespace="http://www.aixm.aero/schema/5.2" … version="5.2.2"> …
Schema locations still may be different, as outlined in the following two sample XML instance documents:
<message:AIXMBasicMessage xmlns:message="http://www.aixm.aero/schema/5.2.1/message" xmlns:aixm="http://www.aixm.aero/schema/5.2" xsi:schemaLocation="http://www.aixm.aero/schema/5.2.1/message http://www.aixm.aero/schema/5.2.1/message/AIXM_BasicMessage.xsd" …>
<message:AIXMBasicMessage xmlns:message="http://www.aixm.aero/schema/5.2.2/message" xmlns:aixm="http://www.aixm.aero/schema/5.2" xsi:schemaLocation="http://www.aixm.aero/schema/5.2.2/message http://www.aixm.aero/schema/5.2.2/message/AIXM_BasicMessage.xsd" …>
Mapping AIXM 5.1.1 to AIXM 5.2 (forward)
NIL (Not applicable)
Mapping AIXM 5.2 to AIXM 5.1.1 (backward)
NIL (Not applicable)