XTCE 1.3 RTF Avatar
  1. OMG Issue

XTCE13 — rangeForm annotation needs work

  • Key: XTCE13-73
  • Status: closed  
  • Source: NASA ( Mr. James Kevin Rice)
  • Summary:

    The rangeForm annotation is vague and needs improvement. There are two places it occurs – one at the attribute level with another brief mention at the schema type:
    "A value of outside specifies that the most severe range is outside all the other ranges: -severe -critical -distress -warning -watch normal +watch +warning +distress +critical +severe. A value of inside "inverts" these bands: -green -watch -warning -distress -critical severe +critical +distress +warning +watch. The most common form used is "outside" and is the default."

    The key problem is the term "inverts" is not really defined and so the entire explanation is overly general.

  • Reported: XTCE 1.2 — Thu, 3 Oct 2019 14:35 GMT
  • Disposition: Resolved — XTCE 1.3
  • Disposition Summary:

    rangeform annotation updates in several locations

    Improve the documentation embedded in the schema that describes RangeFormType, MultiRangeType, and AlarmMultiRangesType while taking into account the attributes that leverage these types.

    The original definition of RangeFormType:

    <simpleType name="RangeFormType">
    <annotation>
    <documentation>Defines whether the defined range between the minimum and maximum is the outside or inside the range being defined. The default, outside matches values less than the minimum and greater than the maximum. Inside matches values between the minimum and maximum.</documentation>
    </annotation>
    <restriction base="string">
    <enumeration value="outside"/>
    <enumeration value="inside"/>
    </restriction>
    </simpleType>

    Replace the original definition with this new RangeFormType:

    <simpleType name="RangeFormType">
    <annotation>
    <documentation xml:lang="en">Defines inside and outside enumerated terms, where the term outside means the range is (-inf, minimum) and (maximum, inf) – that is a range where acceptable values must be less than the minimum and greater than the maximum, and the term inside means the range is (minimum, maximum) – that is acceptable values are between the minimum and maximum (either the min or max may be inclusive or exclusive).</documentation>
    </annotation>
    <restriction base="string">
    <enumeration value="outside"/>
    <enumeration value="inside"/>
    </restriction>
    </simpleType>

    There is a rangeForm attribute that leverages the RangeFormType in the AlarmRangesType. This is the original definition of that attribute:

    <attribute name="rangeForm" type="xtce:RangeFormType" default="outside">
    <annotation>
    <documentation xml:lang="en">A value of outside specifies that the most severe range is outside all the other ranges: -severe -critical -distress -warning -watch normal +watch +warning +distress +critical +severe. A value of inside "inverts" these bands: -green -watch -warning -distress -critical severe +critical +distress +warning +watch. The most common form used is "outside" and is the default.</documentation>
    </annotation>
    </attribute>

    Replace that attribute definition with the following modified one:

    <attribute name="rangeForm" type="xtce:RangeFormType" default="outside">
    <annotation>
    <documentation xml:lang="en">A value of outside specifies that the most severe range is outside all the other ranges: -severe -critical -distress -warning -watch normal +watch +warning +distress +critical +severe. This means each min, max pair are a range: (-inf, min) or (-inf, min], and [max, inf) or (max, inf). However a value of inside "inverts" these bands: -normal -watch -warning -distress -critical severe +critical +distress +warning +watch, +normal. This means each min, max pair form a range of (min, max) or [min, max) or (min, max] or [min, max]. The most common form used is "outside" and it is the default. The set notation used defines parenthesis as exclusive and square brackets as inclusive.</documentation>
    </annotation>
    </attribute>

    The original definition of MultiRangeType:

    <complexType name="MultiRangeType">
    <annotation>
    <documentation xml:lang="en">The alarm multi-range element type permits users to define multiple alarm ranges in a sequence that goes beyond the more typical "inside" and "outside" range definitions. It can be thought of as a "barber pole" definition.</documentation>
    </annotation>
    <complexContent>
    <extension base="xtce:FloatRangeType">
    <attribute name="rangeForm" type="xtce:RangeFormType" default="outside">
    <annotation>
    <documentation xml:lang="en">A value of outside specifies that the most severe range is outside all the other ranges: -severe -critical -distress -warning -watch normal +watch +warning +distress +critical +severe. A value of inside "inverts" these bands: -green -watch -warning -distress -critical severe +critical +distress +warning +watch. The most common form used is "outside" and is the default.</documentation>
    </annotation>
    </attribute>
    <attribute name="level" type="xtce:ConcernLevelsType">
    <annotation>
    <documentation xml:lang="en">The level of concern for this alarm definition.</documentation>
    </annotation>
    </attribute>
    </extension>
    </complexContent>
    </complexType>

    Replace the original definition with this new MultiRangeType:

    <complexType name="MultiRangeType">
    <annotation>
    <documentation xml:lang="en">The alarm multi-range element type permits users to define multiple alarm ranges in a sequence that goes beyond the more typical "inside" and "outside" range definitions. It can be thought of as a "barber pole" definition.</documentation>
    </annotation>
    <complexContent>
    <extension base="xtce:FloatRangeType">
    <attribute name="rangeForm" type="xtce:RangeFormType" default="outside">
    <annotation>
    <documentation xml:lang="en">A value of outside specifies that the most severe range is outside all the other ranges: -severe -critical -distress -warning -watch normal +watch +warning +distress +critical +severe. This means each min, max pair are a range: (-inf, min) or (-inf, min], and [max, inf) or (max, inf). However a value of inside "inverts" these bands: -normal -watch -warning -distress -critical severe +critical +distress +warning +watch, +normal. This means each min, max pair form a range of (min, max) or [min, max) or (min, max] or [min, max]. The most common form used is "outside" and it is the default. The set notation used defines parenthesis as exclusive and square brackets as inclusive.</documentation>
    </annotation>
    </attribute>
    <attribute name="level" type="xtce:ConcernLevelsType">
    <annotation>
    <documentation xml:lang="en">The level of concern for this alarm definition.</documentation>
    </annotation>
    </attribute>
    </extension>
    </complexContent>
    </complexType>

    The original definition of AlarmMultiRangesType:

    <complexType name="AlarmMultiRangesType">
    <annotation>
    <documentation xml:lang="en">Describe any number of alarm ranges, each with its own level (normal, warning, watch, distress, critical, severe) and range form. Ranges may overlap, be disjoint and so forth. Ranges within the value sprectrum non-specified are non-normal. The most severe range level of value within the ranges is the level of the alarm. Range values are in calibrated engineering units. See FloatRangeType.</documentation>
    </annotation>
    <complexContent>
    <extension base="xtce:BaseAlarmType">
    <sequence>
    <element name="Range" type="xtce:MultiRangeType" maxOccurs="unbounded">
    <annotation>
    <documentation xml:lang="en">Describe any number of alarm ranges, each with its own level (normal, warning, watch, distress, critical, severe) and range form (inside – (min,max),[min,max), (min, max], [min, max], or outside. Ranges may overlap, be disjoint and so forth. Ranges within the value sprectrum non-specified are non-normal. The most severe range level of value within the ranges is the level of the alarm. Range values are in calibrated engineering units. See FloatRangeType.</documentation>
    </annotation>
    </element>
    </sequence>
    </extension>
    </complexContent>
    </complexType>

    Replace the original definition with this new AlarmMultiRangesType:

    <complexType name="AlarmMultiRangesType">
    <annotation>
    <documentation xml:lang="en">Describe any number of alarm ranges, each with its own level (normal, warning, watch, distress, critical, severe) and range form (inside – (min,max), [min,max), (min, max], [min, max], or outside – (-inf, min) or (-inf,min] and [max, +inf) or (max,+inf). Ranges may overlap, be disjoint and so forth. Ranges within the value spectrum non-specified are non-normal. The most severe range level of value within the ranges is the level of the alarm. Range values are in calibrated engineering units. See FloatRangeType.</documentation>
    </annotation>
    <complexContent>
    <extension base="xtce:BaseAlarmType">
    <sequence>
    <element name="Range" type="xtce:MultiRangeType" maxOccurs="unbounded">
    <annotation>
    <documentation xml:lang="en">Describe any number of alarm ranges, each with its own level (normal, warning, watch, distress, critical, severe) and range form (inside – (min,max),[min,max), (min, max], [min, max], or outside – (-inf, min) or (-inf,min] and [max, +inf) or (max,+inf).. Ranges may overlap, be disjoint and so forth. Ranges within the value spectrum non-specified are non-normal. The most severe range level of value within the ranges is the level of the alarm. Range values are in calibrated engineering units. See FloatRangeType.</documentation>
    </annotation>
    </element>
    </sequence>
    </extension>
    </complexContent>
    </complexType>

  • Updated: Tue, 1 Jul 2025 15:05 GMT