<div>Hi all,</div>
<div>&nbsp;</div>
<div>I am new to the development list, but I have been on the uf-discuss list for a while now.&nbsp; I thought that this list was the best place to announce that I have created a usable [although beta] release of a generic microformat parser for .Net.
</div>
<div>&nbsp;</div>
<div>The project can be found on codeplex at <a href="http://www.codeplex.com/microformat">http://www.codeplex.com/microformat</a>.&nbsp; The current release is Iteration 3.</div>
<div>&nbsp;</div>
<div>The parser is stream based and uses an application&nbsp;configuration (see below for an example) to define the how the parser should parse the html/xml stream.&nbsp; This flexible configuration means that if a spec changes for a microformat or a new one is introduced then no code needs to be changed in the framework to let users of the framework see the changed data.
</div>
<div>&nbsp;</div>
<div>&nbsp;&lt;configSections&gt;<br>&nbsp;&nbsp;&nbsp; &lt;section name=&quot;MicroformatsSection&quot; type=&quot;Microformats.ConfigurationSections.MicroformatConfigSection, <a href="http://Microformat.net">Microformat.net</a>&quot;/&gt;
<br>&nbsp; &lt;/configSections&gt;<br>&nbsp; &lt;MicroformatsSection&gt;<br>&nbsp;&nbsp;&nbsp; &lt;Microformats&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;Microformat type=&quot;rel-tag&quot; rootType=&quot;rel&quot; root=&quot;tag&quot; dataType=&quot;System.Uri&quot; /&gt;
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;Microformat type=&quot;hCard&quot; rootType=&quot;class&quot; root=&quot;vcard&quot; dataType=&quot;System.String&quot;&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;Fields&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;Field name=&quot;fn&quot; dataType=&quot;
System.String&quot; plurality=&quot;Singular&quot;/&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;Field name=&quot;url&quot; dataType=&quot;System.Uri&quot; plurality=&quot;Singular&quot;/&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;Field name=&quot;email&quot; dataType=&quot;
System.Uri&quot; plurality=&quot;Singular&quot;/&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;Field name=&quot;adr&quot; dataType=&quot;Microformat&quot; plurality=&quot;Singular&quot;/&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/Fields&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/Microformat&gt;
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;Microformat type=&quot;adr&quot; rootType=&quot;class&quot; root=&quot;adr&quot; dataType=&quot;System.String&quot;&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;Fields&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;Field name=&quot;post-office-box&quot; dataType=&quot;
System.String&quot; plurality=&quot;Singular&quot;/&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;Field name=&quot;extended-address&quot; dataType=&quot;System.String&quot; plurality=&quot;Singular&quot;/&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;Field name=&quot;street-address&quot; dataType=&quot;
System.String&quot; plurality=&quot;Singular&quot;/&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;Field name=&quot;locality&quot; dataType=&quot;System.String&quot; plurality=&quot;Singular&quot;/&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;Field name=&quot;region&quot; dataType=&quot;
System.String&quot; plurality=&quot;Singular&quot;/&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;Field name=&quot;postal-code&quot; dataType=&quot;System.String&quot; plurality=&quot;Singular&quot;/&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;Field name=&quot;country-name&quot; dataType=&quot;
System.String&quot; plurality=&quot;Singular&quot;/&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/Fields&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/Microformat&gt;<br>&nbsp;&nbsp;&nbsp; &lt;/Microformats&gt;<br>&nbsp; &lt;/MicroformatsSection&gt;</div>
<div>&nbsp;</div>
<div>The above configuration says that the following microformats are to be searched for: rel-tag, hCard and adr.&nbsp; Each microformat configuration can also be nested (see the hCard spec that allows an adr to be nested inside itself).&nbsp; This saves on duplicating configuration information.&nbsp; (Unfortunately a circular reference in the configuration can be defined and plurality of elements is not&nbsp;implemented.&nbsp; This will be fixed soon).&nbsp; Currently in this configuration not all of the hCard spec is defined (this was done for simplicity of me showing you how the config works), obviously this means that any parts of a microformat that you are not interested in you won&#39;t see in the output of the framework.
</div>
<div>&nbsp;</div>
<div>I still have a lot of work to do, however it appears (to me at least) to be quite flexible.&nbsp; I would greatly appreciate any comments and feedback and if you use the framework I would love to hear about it.&nbsp; If anyone is interested in joining the project let me know.
</div>
<div>&nbsp;</div>
<div>Kind Regards,</div>
<div>Paul Kinlan</div>
<div>&nbsp;</div>
<div>Nb.&nbsp; The code is released under the Microsoft permissive licence, this licence fits best with the sgml reader code that is included in the project by Chris Lovett.<br>&nbsp;</div>