currency is a simple microformat for marking up money amounts, such as prices of products/services or financial facts.
Money amounts are one of the most widespread content found on the Web, but the lack of unambiguous representation of the currency they are expressed in, or the date that they relate to, makes comparison and matching of offerings online difficult.
This proposal was written based on the contributions of several members of the community. Original brainstorming ideas and strawman proposal can be viewed at currency brainstorming and currency-brainstorming#Andy_Mabbett
This proposal limits its scope to:
- money amounts expressed in one officially issued coins and notes. This means it currently does not support money amounts expressed in terms of commodities or other liquefiable asset.
- money amounts expressed in one unit. This means that it currently does not support composite amounts such as "39 U.S. Dollars and 99 Cents".
- Reuse of widely used ISO 4217 for unambiguous encoding of currency types: ensures interoperability with many existing and emerging industry standards such as IFX, ACORD, XBRL or UBL.
- Define currency once, use anywhere: allows currency units to be defined once and then referred to, instead of locally defined for each money amount, resulting in ease of readability for both human users and their user agents.
- Timestamping: money amounts have an optional date that allows user agents to translate a historical figure to an equivalent present amount.
Root Class Name
The root class name for a money amount is
amount: can mark up a machine-readable numerical value with a
spanelement or a string value with a
titleattribute contains the machine-readable numerical value (See abbr design pattern).
currency, or reference to a currency (See include-pattern). Must markup a ISO 4217 compliant code or use the abbr design pattern to provide the equivalent ISO 4217 machine readable value to the marked up human-readable value.
unit, or reference to a unit of the currency (See include-pattern), for instance a "dollar" or "cent". This proposal does not specify how the unit must be marked up. This is the focus of the Measure microformat research microformats. When not present, the unit is assumed to be the default unit for the given currency. For instance, "Dollar" for the U.S. currency.
datefollowing the Datetime Design Pattern, specifies the date that must be used to evaluate the value of the currency unit used.
Simple in-line example with local definition of the currency unit: $39.99
<span class="money"><abbr class="currency" title="USD">$</abbr><span class="amount">39.99</span></span>
Text representation of the amount: Thirty-nine Dollars
<span class="money"><abbr class="amount" title="39">Thirty-nine</abbr> <abbr class="currency" title="USD">Dollars</abbr></span>
Example using the
unit class: 99¢
<span class="money"><span class="amount">99</span><abbr class="unit">¢</abbr><abbr class="currency" title="USD"></abbr></span>
Table example with global definition of the currency:
<table> <tr><th>Price in <abbr id="u1" class="currency" title="USD">US$</abbr></th></tr> <tr><td><div class="money">39.99<a href="#u1" class="include"></a></div></td></tr> </table>
Discussion of this proposal by specific problems on currency-issues.