RE: Element for Numbers

Seems like a reasonable suggestion, a few comments I'd make:
* I would see dates in a separate element
* This would make pages very simple to localise -- so I may put something like <nr value="123456.789" lang="en-gb">123,456.789</nr> and have it displayed as 132.456,789 on a German machine -- hopefully you can see where I'm going with this -- the number represents the semantics of the element (i.e. the absolute value) but lets the UA decide on presentations based on many things, including the client's locale.

I'd prefer the date and time to be something more akin to:
<p>It's my birthday on <date month="11" day="23" year="2002" form="shortdate">23/11/02</date></p>

And again, an en-us user would see "It's my birthday on 11/23/2002", and ja users(?) might see "It's my birthday on 2002/11/23"

Again, with times, define the hour, minute[, second[, timezone[, etc]]] and display for different locales (8:26 AM, 08:26, 3:26 EST, etc)


-----Original Message-----
From: Christoph Päper [mailto:christoph.paeper@tu-clausthal.de] 
Sent: 19 November 2002 01:39
To: www-html@w3.org
Subject: 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 Tuesday, 19 November 2002 03:28:03 UTC