Element for Numbers

A while back (<mid:018701c249f7$e1d41e80$3ef4ae8b@heim4.tuclausthal.de>,
<http://lists.w3.org/Archives/Public/www-html/2002Aug/0313.html>) I proposed
a new element for marking up numbers. I thought a bit about it and came to
the conclusion, that that approach isn't applicable for a simple markup
language like (X)HTML, that should be easy to learn. The main intentions
were keeping together what belongs together (value and unit, preceding
minus) and are still valid. Thus I precise/correct the proposal as
following:

<proposal>

 Element | Attributes              | Minimal Content Model
---------+-------------------------+-----------------------
 nr      | Common, value (Number), | (PCDATA | Inline)*
         | dim (Dimension)         |

X.Y The *nr* element

The nr element indicates that a text fragment is of a numeric kind (e.g.
date, measurement, price). It may supply a standardized representation of
the enclosed term and may then be treated as a replaced element: the UA
replaces the contents by a form best matching the document language and
user preferences.

/Attributes/

The Common collection

  A collection of other attribute collections, including: Core, Events,
  I18N, and Hypertext

value = number <!-- could be text [CI] -->

  This attribute serves the actual value of the enclosed text.

dim = dimension <!-- could be text [CD] -->

  This attribute specifies the literal dimension to the value attribute.

/Examples/

| Henry <nr value="7" dim=".">VII</nr> had <nr value="6">six</nr> wives.

| <nr value="355.6" dim="mm">14''</nr> display.

| <nr value="123,000,255,017" dim="&">123.0.255.17</nr> is an IP address,
| <nr value="49,160,1111111" dim="&"> a German mobile phone number.

| We'll meet on <nr value="2002-08-22" dim="date">August 22nd</nr>
| at <nr value="12:00+00:00" dim="time">twelve o'clock</nr>.

| <nr value="5">Five</nr> is binary
| <nr><nr>1</nr><nr>0</nr><nr>1</nr></nr>.

| <nr dim="date">
|   <nr value="22" dim="DD">22.</nr>
|   <nr value="08" dim="MM">VIII. </nr>
|   <nr value="2002" dim="YYYY">
|     <abbr title="Anno Domini" xml:lang="la">A.D.</abbr> 2002
|   </nr>
| </nr>

------------------------------------------------------------------------

5.5 Attribute Types

Number

  Either a signed decimal number with optional signed two digit exponent
  and mantissa separated by a dot (e.g. -1.2345E+03), ISO [ISO 8601] or
  a comma separated list of numbers.

Dimension

  A case dependent string describing a dimension according to table 1:

  (x and y are literal variables, 0 is numeric variable everything else
   is a string.)

  Table 1:
  -----+---------------------------------------------------------------
  .    | ordinal
  #    | general numeric value, default
  &    | a phone or similar number, incl. IP numbers
  %    | percentage
  xy   | a unit 'y' (tables 3) possibly preceded by a modifier 'x',
       | (table 4) and maybe succeeded by an integer as exponent.
       | Combinations with 0, ^, * and / are possible.
  $x   | The currency that the (omittable) string 'x' consisting of
       | three uppercase chars refers to, e.g. "$USD".
  *x   | a date or time, for values of 'x' see table 2, if 'x' is
       | omitted, any ISO date, time, span format is acceptable:
  date | keyword, a date in ISO format (2002-11-18).
  time | keyword, a time in ISO format.
  span | keyword, a time span in ISO format.
  zip  | keyword, a postal code.
  ...  | ...
  -----+---------------------------------------------------------------

<!-- date, time and span could be omitted in favor of '*', zip for '&'. Or
vice versa, there could be keywords like 'ordinal' as well. -->

  Table 2: Date and time values
  -----+---------------------------------------------------------------
  CC   | century with leading zero, signed
  YY   | year of century with leading zero
  MM   | numeral month of year with leading zero
  DD   | day of month with leading zero
  S    | second of minute with leading zero
  M    | minute of hour with leading zero
  H    | hour of day with leading zero
  -----+---------------------------------------------------------------

  Table 3a: 'Primary' SI units
  -----+---------------------------------------------------------------
* m    | Meter
* s    | Second
* g    | Gramme <!--kg is used to define-->
* A    | Ampére
  K    | Kelvin
  mol  | Mol
  cd   | Candela
  -----+---------------------------------------------------------------

  Table 3b: 'Secondary' SI units
  -----+---------------------------------------------------------------
* J    | Joule (kg·m²/s²), (N·m)
* C    | Coulomb (A·s)
* N    | Newton (kg·m/s²)
* O    | Ohm (kg·m²/A²·s³), (J/A²·s), (V/A) <!--actually it's Omega-->
* V    | Volt (kg·m²/A·s³), (J/A·s), (W/A)
* l    | Liter (dm³)
* F    | Farad (A²·s²/J), (C/V)
* Hz   | Hertz (s^-1)
* Pa   | Pascal (kg/m·s²)
* W    | Watt (kg·m²/s³), (J/s)
  -----+---------------------------------------------------------------

  Table 3c: 'Tertiary' SI units
  -----+---------------------------------------------------------------
  min  | Minute (60s)
  h    | Hour (60min)
  d    | Day (24h)
  w    | Week (7d)
  y    | year (365.2425d) <!--what about fiscal etc.?-->
* t    | Ton (1000kg)
  u    | Atomar Mass Unit (1.66054·10^-27kg)
* eV   | Electron Volt (1.60218·10^-19J)
  °C   | Degree Celsius (-273.15 K)
  -----+---------------------------------------------------------------

  Table 3d: Non SI units <!-- shouldn't (all) be allowed IMHO -->
  -----+---------------------------------------------------------------
  in   | inch (0.0254m)
  ft   | foot (0.3048m)
* B    | byte (8bit)
  rad  | Radiant (180°/&Pi;)
  deg °| Degree
  ...  | ...
  -----+---------------------------------------------------------------

(* := usually accepts prefixes, not necessarily all)

  Table 4: Decimal (and binary) modifier prefixes
  -----+-------+-------------------------------------------------------
  f    | femto | 10^-15
  p    | piko  | 10^-12
  n    | nano  | 10^- 9
  µ    | mikro | 10^- 6
  m    | milli | 10^- 3
  c    | centi | 10^- 2
  d    | dezi  | 10^- 1
  D    | deka  | 10^+ 1
  h    | hekto | 10^+ 2
  k    | kilo  | 10^+ 3 | 2^10
  M    | mega  | 10^+ 6 | 2^20
  G    | giga  | 10^+ 9 | 2^30
  T    | tera  | 10^+12 | 2^40
  E    | eta   | 10^+15 | 2^50
  -----+----------------+----------------------------------------------

</proposal>

It might be an option, to forget about the proposed element, adding the
attributes to the existing element "var" instead.
It would be nice if there was already a RFC or something for the Dimension
attribute type.

Christoph Päper

Received on Monday, 18 November 2002 20:38:25 UTC