XTCE 1.2 RTF Avatar
  1. OMG Issue

XTCE12 — Remove whitespace in selector xpath attribute

  • Key: XTCE12-15
  • Legacy Issue Number: 19437
  • Status: closed  
  • Source: Northrop Grumman ( Mr. Joseph Vlietstra)
  • Summary:

    XTCE schema contains several <key> elements to ensure unique "name" attributes across various namespaces. Namespaces searched are specified by the "xpath" attribute in the <selector> element.

    Several XTCE xpath attributes contain spaces to improve readability of the xpath expression. Although whitespace is allowed by paragraph 3.7 of the xpath specification, there is a bit of ambiguity since it's not in the formal BNF grammar. This means some schema processors (e.g., Eclipse modeling framework) may reject the xpath expression.

    Recommend removing the space around the union (|) operator in the xpath expressions.

  • Reported: XTCE 1.1 — Wed, 28 May 2014 04:00 GMT
  • Disposition: Resolved — XTCE 1.2
  • Disposition Summary:

    Fix broken unique keys in XTCE 1.1

    Propose to replace the definition of the keys in the document. This is all except for the ArgumentName key, which does not show the problem described in this issue. The keys are defined in the SpaceSystemType, which is shown for contextual location below.

    <element name="SpaceSystem" type="xtce:SpaceSystemType" nillable="true">
    <annotation>
    <documentation>The top-level SpaceSystem is the root element for the set of metadata necessary to monitor and command a space device such as a satellite in mission operations. A SpaceSystem defines a namespace. Metadata areas include: packets/minor frames layout, telemetry, calibration, alarm, algorithms, streams and commands. A SpaceSystem may have child SpaceSystems, forming a SpaceSystem tree. See SpaceSystemType.</documentation>
    </annotation>
    <key name="parameterNameKey">
    <annotation>
    <documentation xml:lang="en">This key ensures a unique parameter name at the system level.</documentation>
    </annotation>
    <selector xpath="xtce:TelemetryMetaData/xtce:ParameterSet/xtce:Parameter|xtce:CommandMetaData/xtce:ParameterSet/xtce:Parameter"/>
    <field xpath="@name"/>
    </key>
    <key name="parameterTypeNameKey">
    <annotation>
    <documentation xml:lang="en">This key ensures a unique parameter type name at the system level.</documentation>
    </annotation>
    <selector xpath="xtce:TelemetryMetaData/xtce:ParameterTypeSet/|xtce:CommandMetaData/xtce:ParameterTypeSet/"/>
    <field xpath="@name"/>
    </key>
    <key name="metaCommandNameKey">
    <annotation>
    <documentation xml:lang="en">This key ensures a unique metaCommand name at the system level.</documentation>
    </annotation>
    <selector xpath="xtce:CommandMetaData/xtce:MetaCommandSet/xtce:MetaCommand"/>
    <field xpath="@name"/>
    </key>
    <key name="algorithmNameKey">
    <annotation>
    <documentation xml:lang="en">This key ensures a unique algorithm name at the system level.</documentation>
    </annotation>
    <selector xpath="xtce:TelemetryMetaData/xtce:AlgorithmSet/|xtce:CommandMetaData/xtce:AlgorithmSet/"/>
    <field xpath="@name"/>
    </key>
    <key name="streamNameKey">
    <annotation>
    <documentation xml:lang="en">This key ensures a unique stream name at the system level.</documentation>
    </annotation>
    <selector xpath="xtce:TelemetryMetaData/xtce:StreamSet/|xtce:CommandMetaData/xtce:StreamSet/"/>
    <field xpath="@name"/>
    </key>
    <key name="serviceNameKey">
    <annotation>
    <documentation xml:lang="en">This key ensures a unique service name at the system level.</documentation>
    </annotation>
    <selector xpath="xtce:ServiceSet/*"/>
    <field xpath="@name"/>
    </key>
    <key name="containerNameKey">
    <annotation>
    <documentation xml:lang="en">This key ensures a container stream name at the system level.</documentation>
    </annotation>
    <selector xpath="xtce:TelemetryMetaData/xtce:ContainerSet/|xtce:CommandMetaData/xtce:ContainerSet/"/>
    <field xpath="@name"/>
    </key>
    <key name="messageNameKey">
    <selector xpath="xtce:TelemetryMetaData/xtce:MessageSet/*"/>
    <field xpath="@name"/>
    </key>
    <key name="eventNameKey">
    <annotation>
    <documentation xml:lang="en">This key ensures a unique event name at the system level.</documentation>
    </annotation>
    <selector xpath="xtce:TelemetryMetaData/xtce:EventMessageSet/*"/>
    <field xpath="@name"/>
    </key>
    <key name="argumentTypeNameKey">
    <annotation>
    <documentation xml:lang="en">This key ensures a unique argument type name at the system level.</documentation>
    </annotation>
    <selector xpath="xtce:CommandMetaData/xtce:ArgumentTypeSet/|xtce:CommandMetaData/xtce:ParameterTypeSet/"/>
    <field xpath="@name"/>
    </key>
    <key name="blockMetaCommandNameKey">
    <annotation>
    <documentation xml:lang="en">This key ensures a unique BlockMetaCommand name at the system level.</documentation>
    </annotation>
    <selector xpath="xtce:CommandMetaData/xtce:MetaCommandSet/xtce:BlockMetaCommand"/>
    <field xpath="@name"/>
    </key>
    </element>

    This update also deprecates "ContainerKey2", which can be removed from the schema, which probably did not work anyway because of the missing namespace in the selector:

    <key name="ContainerKey2">
    <selector xpath="Container"/>
    <field xpath="Id"/>
    </key>

  • Updated: Tue, 10 Jul 2018 14:22 GMT