The following data representation formats are defined for use in this
specification:
A CellML identifier:
SHALL be a sequence of Unicode characters.
SHALL NOT contain any characters except basic Latin alphanumeric
characters and basic Latin underscores.
SHALL contain one or more basic Latin alphabetic characters.
SHALL NOT begin with a European numeric character.
SHALL, when comparing two identifiers, be considered identical to
another identifier if and only if both identifiers have identical
sequences of Unicode character codes.
A non-negative integer string:
SHALL be a base 10 representation of a non-negative integer.
SHALL consist entirely of European numeric characters.
An integer string:
SHALL be a base 10 representation of an integer.
SHALL, when the integer being represented is negative, consist of
the basic Latin hyphen-minus character U+002D,
followed by the non-negative integer string representation of the
absolute value of the integer.
SHALL, when the integer being represented is non-negative, consist
of the non-negative integer string representation of the integer.
A basic real number string:
SHALL be a base 10 representation of a real number.
SHALL, when the basic real number being represented is negative,
begin with the basic Latin hyphen-minus character U+002D
as the sign indicator.
MAY contain a single decimal point separator, which SHALL be the
basic Latin full stop character U+002E.
SHALL, other than the sign indicator and the decimal point
separator, consist only of European numeric characters.
A real number string:
SHALL be a base 10 representation of a real number
\(r = s \cdot 10^{e}\), where \(s\) is the significand,
a real number, and \(e\) is the exponent, an integer.
The representation of the number SHALL be the representation of
the significand followed immediately by the representation of the
exponent.
The significand SHALL be represented as a basic real number
string.
If the exponent is zero, the exponent MAY be represented by an
empty string, or MAY be represented according to the following
rule. If the exponent is non-zero, it MUST be represented
according to the following rule.
An exponent SHALL be represented by an exponent separator
character, followed by the integer string representation of the
value of the exponent. The exponent separator character SHALL be
either the basic Latin ‘E’ character U+0045
or the basic Latin ‘e’ character U+0065.