Additional Characteristics

Office Open XML provides a way for a producer to provide information to consumers regarding how the data was created and how it should be interpreted. This information is provided by one or more additional characteristics.

A producing application has the option of writing out as many or as few additional characteristics as desired.

A consuming application has the option of acting on the additional characteristics or ignoring them

The additional characteristics are stored in a separate XML part, as follows:

<additionalCharacteristics>
  <characteristic name='name of characteristic'
    relation='well defined set of relation types'
    val='string' vocabulary='uri'/>
</additionalCharacteristics>

For example, consider the case in which numColumns is the characteristic name to specify the maximum number of columns supported by the producing SpreadsheetML application, so that the consuming application can understand how to distinguish cell references and variables unambiguously.

The @relation attribute specifies the way in which the @val attribute should be interpreted. The possible values for @relation are: lt | le | eq | gt | ge, which mean <, <=, =, >=, >, respectively, and relate to numerical comparison for values and alphabetical comparison for ordering of strings. These relations permit expression of the maximum value, the minimum value, the value, and so on.

The @vocabulary attribute is a URI that provides a namespace for the specific characteristic names provided as values of the @name attribute. This allows for the creation of a vocabulary of characteristics of interest within a given domain of application without concern for name conflict between vocabularies.

Another example use case would be for a producer to inform the consumer that the computations used to calculate the stored numbers in the SpreadsheetML formulas have a particular numeric precision expressed by the mantissa and exponent. A consumer can optionally check those values to determine whether, for example, the values should be recalculated. The XML to represent these characteristics might look like the following:

<additionalCharacteristics>
  <characteristic name='precisionMantissa'
    relation='gt'
    val='-9007199254740992'/>
  <characteristic name='precisionMantissa'
    relation='lt' val='9007199254740992'/>
  <characteristic name='precisionExponent'
    relation='ge' val='-1075'/>
  <characteristic name='precisionExponent'
    relation='le' val='970'/>
</additionalCharacteristics>