value-class-pattern: Difference between revisions
(→Value Excerption Pattern: Changed parsing rule concerning whitespace, in response to -dev list feedback) |
m (validation fix) |
||
Line 24: | Line 24: | ||
hCard: | hCard: | ||
<code> | <pre><code> | ||
<span class="tel"> | <span class="tel"> | ||
<span class="type">Home</span>: | <span class="type">Home</span>: | ||
<span class="value">+1.415.555.1212</span> | <span class="value">+1.415.555.1212</span> | ||
</span> | </span> | ||
</code> | </code></pre> | ||
In this case, the value of <code>tel</code> is <code>+1.415.555.1212</code>, not <code>Home: +1.415.555.1212</code>. | In this case, the value of <code>tel</code> is <code>+1.415.555.1212</code>, not <code>Home: +1.415.555.1212</code>. | ||
Line 35: | Line 35: | ||
Another example, this time using <code>price</code> in [[hListing]]: | Another example, this time using <code>price</code> in [[hListing]]: | ||
<code> | <pre><code> | ||
<span class="price"> | <span class="price"> | ||
I want to sell for | I want to sell for | ||
<span class="value">£15</span> | <span class="value">£15</span> | ||
</span> | </span> | ||
</code> | </code></pre> | ||
In this case, <code>price</code> will parse as <code>£15</code>, rather than as the entire sentence. | In this case, <code>price</code> will parse as <code>£15</code>, rather than as the entire sentence. |
Revision as of 22:52, 30 June 2008
Value Excerption Pattern
The value excerption pattern is derived from value-excerpting in hCard. As such, it is already somewhat supported in parsers. However, the precise parsing behaviour is not yet finalised, so the pattern should be used only with extreme caution, and with the awareness that the editing of more precise parsing rules could impact your pages.
- Editor
- Ben Ward
Sometimes, only a part of an element's content is used as the value of a microformat property. This may occur when a property has optional sub-properties, such as tel
in hCard. Other times, the most logical, semantic element for the property class name may include other content.
For these purposes, the special class name value
is used to excerpt out the relevant element content.
Simple Examples
Here is an hCard fragment for marking up a home phone number:
vCard:
<code>TEL;TYPE=HOME:+1.415.555.1212</code>
hCard:
<code> <span class="tel"> <span class="type">Home</span>: <span class="value">+1.415.555.1212</span> </span> </code>
In this case, the value of tel
is +1.415.555.1212
, not Home: +1.415.555.1212
.
Another example, this time using price
in hListing:
<code> <span class="price"> I want to sell for <span class="value">£15</span> </span> </code>
In this case, price
will parse as £15
, rather than as the entire sentence.
Another example, using dtstart
in hCalendar:
<span class="dtstart">
Friday 25th May, 6pm
<span class="value">2008-05-25T18:00:00+0100</span>
</span>
Whilst the entire string ‘Friday 25th May […]’ is semantically the date, it's the ISO 8601 encoded form alone which must be consumed by a microformats parser, so the value
class isolates it.
Parsing
- Where an element with a microformat property class name has an descendant with class name
value
, parsers should read the inner-text of thevalue
element only, ignoring other text node descendants. - Where multiple descendants of a property all have a class name of
value
, they should be concatenated, without inserting additional characters or white-space. - Where an element
foo
with classvalue
has a descendantbar
with classvalue
, the entire content offoo
is taken as thevalue
. Nesting additional elements with class ofvalue
cannot be used to further isolate a property's value.
There is a draft flow chart showing the parsing behaviour for value-excerption, including proposed empty-node parsing: Value Excerption Parsing Flow Chart (out of date).