[microformats-discuss] XHTML Property Lists (Mac OS X)

Kevin Marks kmarks at technorati.com
Tue Sep 27 00:41:02 PDT 2005


On Sep 26, 2005, at 11:57 PM, Ryan King wrote:
> On Sep 23, 2005, at 8:16 PM, Dr.Ernie Prabhakar wrote:
>>> Hi all,
>>>> Many of you, I'm sure, know that Mac OS X uses Property Lists for 
>> generic data storage, often encoded in XML:
>>>> http://developer.apple.com/documentation/Cocoa/Conceptual/ 
>> PropertyLists/Concepts/XMLPListsConcept.html
>>>> As I think has been discussed before, these seem like a natural 
>> application for XOXO. However, I don't believe anyone has actually 
>> worked out a mapping. Here's my first cut at an XHTML equivalent of 
>> the XML Property List formant in Mac OS X:

> This is an interesting exercise.
>>> <dl class="xoxo plist">
>> <dt>NSDictionary</dt>
>> <dd class="xs:string">Entries</dd>
>> <dt>Key</dt>
>> <dd class="xs:string">Value</dd>
>> <dt>Array</dt>
>> <dd>
>> <ol>
>> <li class="xs:string">Item #1</li>
>> <li class="xs:string">Item #2</li>
>> </ol>
>> </dd>
>> <dt>NSString</dt>
>> <dd class="xs:string">abcd</dd>
>> <dt>NSNumber (integer)</dt>
>> <dd class="xs:integer">123</dd>
>> <dt>NSNumber (floating-point)</dt>
>> <dd class="xs:float">123.456</dd>
>> <dt>NSDate</dt>
>> <dd class="xs:date">1987年12月03日</dd>
>> <dt>NSNumber (BOOL YES)</dt>
>> <dd class="xs:boolean">true</dd>
>> <dt>NSNumber (BOOL NO)</dt>
>> <dd class="xs:boolean">false</dd>
>> <dt>NSData</dt>
>> <dd class="xs:base64Binary">sdcfo2JTiXE=</dd>
>> </dl>
>>>> I realize that's a somewhat squirrely use of XML datatypes, but it 
>> seemed appropriate. Would it be better (or worse) if I dropped the 
>> 'xs' prefix?
>> I would suspect that you could deal without them. Integer, string and 
> base64Binary are not likely to collide; float and date probably a bit 
> more likely. Still, doesn't seem to be a huge problem, especially 
> since 'date' would probably mean the same thing in the case of a 
> collision.

That looks wrong to me; you are using the data types as keys - makes 
for an unclear example.
taking the example from your source, I'd map it this way:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist SYSTEM 
"file://localhost/System/Library/DTDs/PropertyList.dtd">
<plist version="1.0">
<dict>
 <key>Author</key>
 <string>William Shakespeare</string>
 <key>Lines</key>
 <array>
 <string>It is a tale told by an idiot,</string>
 <string>Full of sound and fury, signifying nothing.</string>
 </array>
 <key>Birthdate</key>
 <integer>1564</integer>
</dict>
</plist>
becomes
<dl class="xoxo plist">
 <dt>Author</dt>
 <dd>William Shakespeare</dd>
 <dt>Lines</dt>
 <dd><ol>
 <li>It is a tale told by an idiot,</li>
 <li>Full of sound and fury, signifying nothing.</li>
 </ol></dd>
 <dt>Birthdate</dt>
 <dd class="integer">1564</dd>
</dl>
(not sure why Birthdate is an integer, frankly that's a poor example)
note that class="string" is implied.
I'd keep the xml classnames, as the plist scope would clarify them. So 
you just get integer, real, and boolean.
NSDate I'd map to the <abbr> style date discussed passim.
array and dictionary naturally become <ol> and <dl> as per XOXO.
NSData is a bit of a bother - using an <a href="data:"> url (RFC 2397) 
might make sense.
So your fuller example becomes:
<dl class="xoxo plist">
 <dt>NSDictionary</dt>
 <dd>
 <dt>Key</dt>
 <dd>Value</dd>
 <dd>
 <dt>Array</dt>
 <dd>
 <ol>
 <li>Item #1</li>
 <li>Item #2</li>
 </ol>
 </dd>
 <dt>NSString</dt>
 <dd>abcd</dd>
 <dt>NSNumber (integer)</dt>
 <dd class="integer">123</dd>
 <dt>NSNumber (floating-point)</dt>
 <dd class="real">123.456</dd>
 <dt>NSDate</dt>
 <dd class="date"><abbr title="1987年12月03日">December 3rd, 
1987</abbr></dd>
 <dt>NSNumber (BOOL YES)</dt>
 <dd class="boolean">true</dd>
 <dt>NSNumber (BOOL NO)</dt>
 <dd class="boolean">false</dd>
 <dt>NSData</dt>
 <dd class="data"><a href="data:;base64,sdcfo2JTiXE=">data</a></dd>
</dl>


More information about the microformats-discuss mailing list

AltStyle によって変換されたページ (->オリジナル) /