This is an unofficial validator¹/conformance checker of the hCard microformat.
Po polsku
En français
(translations welcome!)
Referer
<a href="http://hcard.geekhood.net/referrer/">Validate hCards</a>
Send GET
request to http://hcard.geekhood.net/?url=URL to validate&output=json
.
Output will be roughly compatible with the Validator.nu JSON API. Likely to change in the future.
Please use this API for validation, not just as an converter/extraction tool.
Congratulations! No errors found.
No issues found.
value | hcard@geekhood.net |
|
---|---|---|
Formatted name | Kornel Lesiński |
|
Name | Given Name | Kornel |
Family Name | Lesiński |
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" lang="en"> <head profile="http://www.w3.org/2006/03/hcard"> <title>hCard Validator</title> <link rel="stylesheet" href="/i/style.css"/> <link rel="icon" href="/i/favicon.png"/> <link rel="alternate" hreflang="en" href="http://en.hcard.geekhood.net/"/> <link rel="alternate" hreflang="pl" href="http://pl.hcard.geekhood.net/"/> <link rel="alternate" hreflang="fr" href="http://fr.hcard.geekhood.net/"/> </head> <body> <h1>hCard micro<b>format</b> Validator <small>(beta, of course)</small></h1> <p>This is an unofficial validator<a href="#footnotes">¹</a>/conformance checker of the <a href="http://microformats.org/wiki/hcard">hCard microformat</a>.</p> <p class="langs"> <a hreflang="pl" href="http://pl.hcard.geekhood.net/">Po polsku</a> <a hreflang="fr" href="http://fr.hcard.geekhood.net/">En français</a> <br/>(translations welcome!) </p> <h2>Input</h2> <div id="tabs"> <form action="/#result" method="get"> <h3><abbr>URL</abbr></h3> <p>Check entire <abbr>XHTML</abbr> or <abbr>HTML</abbr> page by entering its <abbr>HTTP</abbr> <abbr>URL</abbr>.</p> <div><label for="url">Address:</label><input type="url" name="url" id="url" value="http://hcard.geekhood.net/"/></div> <p><input type="submit" value="Validate URL"/></p> </form> <form action="/#result" method="post"> <h3>Fragment</h3> <p>Paste <strong>well-formed <abbr>XHTML</abbr></strong> fragment or complete document containing hCard.</p> <div><label for="fragment"><abbr>XHTML</abbr> fragment</label> <textarea name="fragment" id="fragment" cols="80" rows="15"></textarea> </div> <p><input type="submit" value="Validate fragment"/></p> </form> <form action="/#result" method="post" enctype="multipart/form-data"> <h3>Upload</h3> <p>Upload <abbr>HTML</abbr> or <abbr>XHTML</abbr> file to validate it. For this to work <strong>your browser must be setting <abbr>MIME</abbr> types properly</strong>.</p> <div><label for="file">Upload file</label><input id="file" type="file" name="file" accept="application/xhtml+xml,text/html,application/xml,text/xml"/></div> <p><input type="submit" value="Validate file"/></p> </form> <form action="/#result" method="get"> <h3>Example</h3> <p>If searching for <a href="http://microformats.org/wiki/hcard-examples-in-wild-reviewed">hCards in the wild</a> is tiring, check one of the test-cases:</p> <div><label for="example">Example file</label> <select name="example" id="example" onchange="this.form.fragment.value=''"> <option value="examples/acid.html">acid.html</option><option value="examples/agent.html">agent.html</option><option value="examples/example 10.html">example 10.html</option><option value="examples/example 11.html">example 11.html</option><option value="examples/example 1.html">example 1.html</option><option value="examples/example 2.html">example 2.html</option><option value="examples/example 3.html">example 3.html</option><option value="examples/example 4.html">example 4.html</option><option value="examples/example 5.html">example 5.html</option><option value="examples/example 6.html">example 6.html</option><option value="examples/example 7.html">example 7.html</option><option value="examples/example 8.html">example 8.html</option><option value="examples/example 9.html">example 9.html</option><option value="examples/geo 1.html">geo 1.html</option><option value="examples/geo 2.html">geo 2.html</option><option value="examples/hcard100.htm">hcard100.htm</option><option value="examples/hcard10.htm">hcard10.htm</option><option value="examples/hcard11.htm">hcard11.htm</option><option value="examples/hcard12.htm">hcard12.htm</option><option value="examples/hcard15.htm">hcard15.htm</option><option value="examples/hcard16.htm">hcard16.htm</option><option value="examples/hcard1.htm">hcard1.htm</option><option value="examples/hcard2.htm">hcard2.htm</option><option value="examples/hcard3.htm">hcard3.htm</option><option value="examples/hcard4.htm">hcard4.htm</option><option value="examples/hcard5.htm">hcard5.htm</option><option value="examples/hcard6.htm">hcard6.htm</option><option value="examples/hcard7.htm">hcard7.htm</option><option value="examples/hcard8.htm">hcard8.htm</option><option value="examples/hcard99.htm">hcard99.htm</option><option value="examples/hcard9.htm">hcard9.htm</option><option value="examples/ignored_classes.html">ignored_classes.html</option><option value="examples/im invalid.html">im invalid.html</option><option value="examples/implied n.html">implied n.html</option><option value="examples/im valid.html">im valid.html</option><option value="examples/include 2.html">include 2.html</option><option value="examples/include 3.html">include 3.html</option><option value="examples/include.html">include.html</option><option value="examples/missing_fields.html">missing_fields.html</option><option value="examples/nested.html">nested.html</option><option value="examples/obfuscated_email.html">obfuscated_email.html</option><option value="examples/orphan_adr.html">orphan_adr.html</option><option value="examples/value_problems 1.html">value_problems 1.html</option><option value="examples/value_problems 2.html">value_problems 2.html</option><option value="examples/values.html">values.html</option><option value="examples/xhtml_multi_profile.html">xhtml_multi_profile.html</option><option value="examples/xhtml_no_head.html">xhtml_no_head.html</option><option value="examples/xhtml_no_profile.html">xhtml_no_profile.html</option><option value="examples/xhtml_wrong_profile.html">xhtml_wrong_profile.html</option><option value="examples/xhtml_xmlns.html">xhtml_xmlns.html</option> </select> <a href="/examples/">Browse examples</a> </div> <p><input type="submit" value="Validate example"/></p> </form> <div class="api-and-other"> <h3>API & Other</h3> <h4>Any page by <code>Referer</code></h4> <p><code><a href="http://hcard.geekhood.net/refe<strong>rr</strong>er/">Validate hCards</a></code></p> <h4>Bookmarklet</h4> <p><a class="button" href="javascript:window.location='http://hcard.geekhood.net/?url='+escape(window.location)" onclick="alert('Please drag it to your bookmarks bar');return false;" rel="bookmark">hCard?</a></p> <h4><abbr>REST</abbr>ful <abbr>JSON</abbr> <abbr>API</abbr></h4> <p>Send <code>GET</code> request to <code>http://hcard.geekhood.net/?url=<var>URL to validate</var>&output=json</code>.</p><p>Output will be roughly compatible with the <a href="http://wiki.whatwg.org/wiki/Validator.nu_JSON_Output">Validator.nu <abbr>JSON</abbr> <abbr>API</abbr></a>. Likely to change in the future.</p> <p>Please use this <abbr>API</abbr> for validation, not just as an converter/extraction tool.</p> <hr/> </div> <form action="/" method="post"> <h3>Send Feedback</h3> <p>You can <a class=' href="mailto:me" ' href = "  mailto: %68card%40g%65e%6bhoo%64%2e%6e%65%74 ">send feedback via e-mail</a> or the form below.</p> <p>If you're <a href="http://github.com/pornel/hCardValidator/issues">reporting a bug</a> or have a suggestion, don't forget to include example hCard code.</p> <div><label for="feedbackname">Your name</label><input type="text" id="feedbackname" name="feedbackname" value=""/></div> <div><label for="feedback">Your comment</label><textarea id="feedback" name="feedback" cols="70" rows="10"></textarea></div> <p><input type="submit" value="Send feedback"/></p> </form> </div> <script type="text/javascript"><![CDATA[ var tabs = document.getElementById('tabs'); var i,h3s = tabs.getElementsByTagName('h3'); var li,ul = document.createElement('ul'); ul.className = 'tablist'; ul.setAttribute('role','tablist'); var currentTab; function switchToTab(tab,e) { while(tab) { if (tab.hcard_validator_handle) break; tab = tab.parentNode; } if (!tab) return; if (currentTab) { currentTab.className = 'hidden'; currentTab.setAttribute('aria-hidden','true'); currentTab.hcard_validator_handle.className = ''; } currentTab = tab; tab.className = 'active'; currentTab.setAttribute('aria-hidden','false'); tab.hcard_validator_handle.className = 'active'; if (e && e.type && (''+e.type).toLowerCase() == 'keydown') { setTimeout(function(){tab.elements[0].focus();},1); // Opera 9.5 has broken (and probably insecure) leak of events on focus() } } for(i=0; i < h3s.length; i++) { ul.appendChild(li=document.createElement('li')); li.setAttribute('tabindex',0); li.setAttribute('role','tab'); li.appendChild(h3s[i].firstChild.cloneNode(true)); li.onclick = (function(tab,handle){ tab.className = 'hidden'; tab.setAttribute('role','tabpanel'); tab.hcard_validator_handle = handle; return function(e) { switchToTab(tab,e); return false; } })(h3s[i].parentNode,li); li.onkeydown = function(e) { if (e.keyCode == 32 || e.keyCode == 13) return this.onclick(e); } } tabs.insertBefore(ul,tabs.firstChild); switchToTab(document.getElementById("url") || h3s[0]); ]]></script> <div id="result"> <h2>Result</h2> <p class="valid">Congratulations! No errors found.</p> <ol> <li> <p>No issues found.</p> <table> <tbody class="email"> <tr> <th rowspan="1" title="email">e-mail</th> <th title="value">value</th> <td><pre class="0">hcard@geekhood.net</pre></td> </tr> </tbody> <tbody> <tr><th colspan="2" title="fn">Formatted name</th> <td><pre class="0">Kornel Lesiński</pre></td> </tr> </tbody> <tbody class="n"> <tr> <th rowspan="2" title="n">Name</th> <th title="given-name">Given Name</th> <td><pre class="0">Kornel</pre></td> </tr><tr> <th title="family-name">Family Name</th> <td><pre class="0">Lesiński</pre></td> </tr> </tbody> </table> </li> </ol> <div id="source"> <div> <h3>File source</h3> <pre><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" lang="en"> <head profile="http://www.w3.org/2006/03/hcard"> <title>hCard Validator</title> <link rel="stylesheet" href="/i/style.css"/> <link rel="icon" href="/i/favicon.png"/> <link rel="alternate" hreflang="en" href="http://en.hcard.geekhood.net/"/> <link rel="alternate" hreflang="pl" href="http://pl.hcard.geekhood.net/"/> <link rel="alternate" hreflang="fr" href="http://fr.hcard.geekhood.net/"/> </head> <body> <h1>hCard micro<b>format</b> Validator <small>(beta, of course)</small></h1> <p>This is an unofficial validator<a href="#footnotes">¹</a>/conformance checker of the <a href="http://microformats.org/wiki/hcard">hCard microformat</a>.</p> <p class="langs"> <a hreflang="pl" href="http://pl.hcard.geekhood.net/">Po polsku</a> <a hreflang="fr" href="http://fr.hcard.geekhood.net/">En français</a> <br/>(translations welcome!) </p> <h2>Input</h2> <div id="tabs"> <form action="/#result" method="get"> <h3><abbr>URL</abbr></h3> <p>Check entire <abbr>XHTML</abbr> or <abbr>HTML</abbr> page by entering its <abbr>HTTP</abbr> <abbr>URL</abbr>.</p> <div><label for="url">Address:</label><input type="url" name="url" id="url"/></div> <p><input type="submit" value="Validate URL"/></p> </form> <form action="/#result" method="post"> <h3>Fragment</h3> <p>Paste <strong>well-formed <abbr>XHTML</abbr></strong> fragment or complete document containing hCard.</p> <div><label for="fragment"><abbr>XHTML</abbr> fragment</label> <textarea name="fragment" id="fragment" cols="80" rows="15"></textarea> </div> <p><input type="submit" value="Validate fragment"/></p> </form> <form action="/#result" method="post" enctype="multipart/form-data"> <h3>Upload</h3> <p>Upload <abbr>HTML</abbr> or <abbr>XHTML</abbr> file to validate it. For this to work <strong>your browser must be setting <abbr>MIME</abbr> types properly</strong>.</p> <div><label for="file">Upload file</label><input id="file" type="file" name="file" accept="application/xhtml+xml,text/html,application/xml,text/xml"/></div> <p><input type="submit" value="Validate file"/></p> </form> <form action="/#result" method="get"> <h3>Example</h3> <p>If searching for <a href="http://microformats.org/wiki/hcard-examples-in-wild-reviewed">hCards in the wild</a> is tiring, check one of the test-cases:</p> <div><label for="example">Example file</label> <select name="example" id="example" onchange="this.form.fragment.value=''"> <option value="examples/acid.html">acid.html</option><option value="examples/agent.html">agent.html</option><option value="examples/example 10.html">example 10.html</option><option value="examples/example 11.html">example 11.html</option><option value="examples/example 1.html">example 1.html</option><option value="examples/example 2.html">example 2.html</option><option value="examples/example 3.html">example 3.html</option><option value="examples/example 4.html">example 4.html</option><option value="examples/example 5.html">example 5.html</option><option value="examples/example 6.html">example 6.html</option><option value="examples/example 7.html">example 7.html</option><option value="examples/example 8.html">example 8.html</option><option value="examples/example 9.html">example 9.html</option><option value="examples/geo 1.html">geo 1.html</option><option value="examples/geo 2.html">geo 2.html</option><option value="examples/hcard100.htm">hcard100.htm</option><option value="examples/hcard10.htm">hcard10.htm</option><option value="examples/hcard11.htm">hcard11.htm</option><option value="examples/hcard12.htm">hcard12.htm</option><option value="examples/hcard15.htm">hcard15.htm</option><option value="examples/hcard16.htm">hcard16.htm</option><option value="examples/hcard1.htm">hcard1.htm</option><option value="examples/hcard2.htm">hcard2.htm</option><option value="examples/hcard3.htm">hcard3.htm</option><option value="examples/hcard4.htm">hcard4.htm</option><option value="examples/hcard5.htm">hcard5.htm</option><option value="examples/hcard6.htm">hcard6.htm</option><option value="examples/hcard7.htm">hcard7.htm</option><option value="examples/hcard8.htm">hcard8.htm</option><option value="examples/hcard99.htm">hcard99.htm</option><option value="examples/hcard9.htm">hcard9.htm</option><option value="examples/ignored_classes.html">ignored_classes.html</option><option value="examples/im invalid.html">im invalid.html</option><option value="examples/implied n.html">implied n.html</option><option value="examples/im valid.html">im valid.html</option><option value="examples/include 2.html">include 2.html</option><option value="examples/include 3.html">include 3.html</option><option value="examples/include.html">include.html</option><option value="examples/missing_fields.html">missing_fields.html</option><option value="examples/nested.html">nested.html</option><option value="examples/obfuscated_email.html">obfuscated_email.html</option><option value="examples/orphan_adr.html">orphan_adr.html</option><option value="examples/value_problems 1.html">value_problems 1.html</option><option value="examples/value_problems 2.html">value_problems 2.html</option><option value="examples/values.html">values.html</option><option value="examples/xhtml_multi_profile.html">xhtml_multi_profile.html</option><option value="examples/xhtml_no_head.html">xhtml_no_head.html</option><option value="examples/xhtml_no_profile.html">xhtml_no_profile.html</option><option value="examples/xhtml_wrong_profile.html">xhtml_wrong_profile.html</option><option value="examples/xhtml_xmlns.html">xhtml_xmlns.html</option> </select> <a href="/examples/">Browse examples</a> </div> <p><input type="submit" value="Validate example"/></p> </form> <div class="api-and-other"> <h3>API &amp; Other</h3> <h4>Any page by <code>Referer</code></h4> <p><code>&lt;a href=&quot;http://hcard.geekhood.net/refe<strong>rr</strong>er/&quot;&gt;Validate hCards&lt;/a&gt;</code></p> <h4>Bookmarklet</h4> <p><a class="button" href="javascript:window.location='http://hcard.geekhood.net/?url='+escape(window.location)" onclick="alert('Please drag it to your bookmarks bar');return false;" rel="bookmark">hCard?</a></p> <h4><abbr>REST</abbr>ful <abbr>JSON</abbr> <abbr>API</abbr></h4> <p>Send <code>GET</code> request to <code>http://hcard.geekhood.net/?url=<var>URL to validate</var>&amp;output=json</code>.</p><p>Output will be roughly compatible with the <a href="http://wiki.whatwg.org/wiki/Validator.nu_JSON_Output">Validator.nu <abbr>JSON</abbr> <abbr>API</abbr></a>. Likely to change in the future.</p> <p>Please use this <abbr>API</abbr> for validation, not just as an converter/extraction tool.</p> <hr/> </div> <form action="/" method="post"> <h3>Send Feedback</h3> <p>You can <a class=' href="mailto:me" ' href = " &#x20;ma&#105;&#x6C;t&#111;&#x3a;&#x20;%&#x36;&#x38;ca&#x72;&#100;&#x25;&#52;&#48;g&#x25;&#x36;5e%6b&#x68;oo&#37;&#x36;&#52;&#x25;&#50;&#x65;%&#x36;&#101;&#x25;&#54;5&#37;&#x37;&#x34; ">send feedback via e-mail</a> or the form below.</p> <p>If you&#039;re <a href="http://github.com/pornel/hCardValidator/issues">reporting a bug</a> or have a suggestion, don&#039;t forget to include example hCard code.</p> <div><label for="feedbackname">Your name</label><input type="text" id="feedbackname" name="feedbackname" value=""/></div> <div><label for="feedback">Your comment</label><textarea id="feedback" name="feedback" cols="70" rows="10"></textarea></div> <p><input type="submit" value="Send feedback"/></p> </form> </div> <script type="text/javascript"><![CDATA[ var tabs = document.getElementById('tabs'); var i,h3s = tabs.getElementsByTagName('h3'); var li,ul = document.createElement('ul'); ul.className = 'tablist'; ul.setAttribute('role','tablist'); var currentTab; function switchToTab(tab,e) { while(tab) { if (tab.hcard_validator_handle) break; tab = tab.parentNode; } if (!tab) return; if (currentTab) { currentTab.className = 'hidden'; currentTab.setAttribute('aria-hidden','true'); currentTab.hcard_validator_handle.className = ''; } currentTab = tab; tab.className = 'active'; currentTab.setAttribute('aria-hidden','false'); tab.hcard_validator_handle.className = 'active'; if (e && e.type && (''+e.type).toLowerCase() == 'keydown') { setTimeout(function(){tab.elements[0].focus();},1); // Opera 9.5 has broken (and probably insecure) leak of events on focus() } } for(i=0; i < h3s.length; i++) { ul.appendChild(li=document.createElement('li')); li.setAttribute('tabindex',0); li.setAttribute('role','tab'); li.appendChild(h3s[i].firstChild.cloneNode(true)); li.onclick = (function(tab,handle){ tab.className = 'hidden'; tab.setAttribute('role','tabpanel'); tab.hcard_validator_handle = handle; return function(e) { switchToTab(tab,e); return false; } })(h3s[i].parentNode,li); li.onkeydown = function(e) { if (e.keyCode == 32 || e.keyCode == 13) return this.onclick(e); } } tabs.insertBefore(ul,tabs.firstChild); switchToTab(document.getElementById("url") || h3s[0]); ]]></script> <h2>Credits</h2> <p>Written by <span class="vcard"><a class='fn email href="mailto:me" ' href = " &#x20;ma&#105;&#x6C;t&#111;&#x3a;&#x20;%&#x36;&#x38;ca&#x72;&#100;&#x25;&#52;&#48;g&#x25;&#x36;5e%6b&#x68;oo&#37;&#x36;&#52;&#x25;&#50;&#x65;%&#x36;&#101;&#x25;&#54;5&#37;&#x37;&#x34; ">Kornel Lesiński </a></span>. Icons are from <a href="http://tango.freedesktop.org/">Tango Icon Library</a>. Test cases include <a href="http://microformats.org/wiki/Acid_Test">hCard Acid test</a> by Dmitry Baranovskiy, examples from <a href="http://microformats.org/">microformats.org</a> and <a href="http://ufxtract.com/testsuite/hcard/">hCard test suite</a>.</p> <p><a href="http://code.google.com/p/hcardvalidator/">Source code is available</a> under the <a href="http://www.opensource.org/licenses/bsd-license.php" rel="license">BSD license</a>.</p> <hr/> <div id="footnotes"> <p>¹ It's not a validator in the <abbr>XML</abbr>/<abbr>SGML</abbr> sense.</p> </div> <script src="/sblam.js.php" type="text/javascript"></script> </body> </html></pre> </div> <div> <h3>Parsed source</h3> <pre><html xmlns="http://www.w3.org/1999/xhtml" lang="en"> <head profile="http://www.w3.org/2006/03/hcard"> <title>hCard Validator</title> <link rel="stylesheet" href="/i/style.css"/> <link rel="icon" href="/i/favicon.png"/> <link rel="alternate" hreflang="en" href="http://en.hcard.geekhood.net/"/> <link rel="alternate" hreflang="pl" href="http://pl.hcard.geekhood.net/"/> <link rel="alternate" hreflang="fr" href="http://fr.hcard.geekhood.net/"/> </head> <body> <h1>hCard micro<b>format</b> Validator <small>(beta, of course)</small></h1> <p>This is an unofficial validator<a href="#footnotes" shape="rect">¹</a>/conformance checker of the <a href="http://microformats.org/wiki/hcard" shape="rect">hCard microformat</a>.</p> <p class="langs"> <a hreflang="pl" href="http://pl.hcard.geekhood.net/" shape="rect">Po polsku</a> <a hreflang="fr" href="http://fr.hcard.geekhood.net/" shape="rect">En français</a> <br/>(translations welcome!) </p> <h2>Input</h2> <div id="tabs"> <form action="/#result" method="get" enctype="application/x-www-form-urlencoded"> <h3><abbr>URL</abbr></h3> <p>Check entire <abbr>XHTML</abbr> or <abbr>HTML</abbr> page by entering its <abbr>HTTP</abbr> <abbr>URL</abbr>.</p> <div><label for="url">Address:</label><input type="url" name="url" id="url"/></div> <p><input type="submit" value="Validate URL"/></p> </form> <form action="/#result" method="post" enctype="application/x-www-form-urlencoded"> <h3>Fragment</h3> <p>Paste <strong>well-formed <abbr>XHTML</abbr></strong> fragment or complete document containing hCard.</p> <div><label for="fragment"><abbr>XHTML</abbr> fragment</label> <textarea name="fragment" id="fragment" cols="80" rows="15"/> </div> <p><input type="submit" value="Validate fragment"/></p> </form> <form action="/#result" method="post" enctype="multipart/form-data"> <h3>Upload</h3> <p>Upload <abbr>HTML</abbr> or <abbr>XHTML</abbr> file to validate it. For this to work <strong>your browser must be setting <abbr>MIME</abbr> types properly</strong>.</p> <div><label for="file">Upload file</label><input id="file" type="file" name="file" accept="application/xhtml+xml,text/html,application/xml,text/xml"/></div> <p><input type="submit" value="Validate file"/></p> </form> <form action="/#result" method="get" enctype="application/x-www-form-urlencoded"> <h3>Example</h3> <p>If searching for <a href="http://microformats.org/wiki/hcard-examples-in-wild-reviewed" shape="rect">hCards in the wild</a> is tiring, check one of the test-cases:</p> <div><label for="example">Example file</label> <select name="example" id="example" onchange="this.form.fragment.value=''"> <option value="examples/acid.html">acid.html</option><option value="examples/agent.html">agent.html</option><option value="examples/example 10.html">example 10.html</option><option value="examples/example 11.html">example 11.html</option><option value="examples/example 1.html">example 1.html</option><option value="examples/example 2.html">example 2.html</option><option value="examples/example 3.html">example 3.html</option><option value="examples/example 4.html">example 4.html</option><option value="examples/example 5.html">example 5.html</option><option value="examples/example 6.html">example 6.html</option><option value="examples/example 7.html">example 7.html</option><option value="examples/example 8.html">example 8.html</option><option value="examples/example 9.html">example 9.html</option><option value="examples/geo 1.html">geo 1.html</option><option value="examples/geo 2.html">geo 2.html</option><option value="examples/hcard100.htm">hcard100.htm</option><option value="examples/hcard10.htm">hcard10.htm</option><option value="examples/hcard11.htm">hcard11.htm</option><option value="examples/hcard12.htm">hcard12.htm</option><option value="examples/hcard15.htm">hcard15.htm</option><option value="examples/hcard16.htm">hcard16.htm</option><option value="examples/hcard1.htm">hcard1.htm</option><option value="examples/hcard2.htm">hcard2.htm</option><option value="examples/hcard3.htm">hcard3.htm</option><option value="examples/hcard4.htm">hcard4.htm</option><option value="examples/hcard5.htm">hcard5.htm</option><option value="examples/hcard6.htm">hcard6.htm</option><option value="examples/hcard7.htm">hcard7.htm</option><option value="examples/hcard8.htm">hcard8.htm</option><option value="examples/hcard99.htm">hcard99.htm</option><option value="examples/hcard9.htm">hcard9.htm</option><option value="examples/ignored_classes.html">ignored_classes.html</option><option value="examples/im invalid.html">im invalid.html</option><option value="examples/implied n.html">implied n.html</option><option value="examples/im valid.html">im valid.html</option><option value="examples/include 2.html">include 2.html</option><option value="examples/include 3.html">include 3.html</option><option value="examples/include.html">include.html</option><option value="examples/missing_fields.html">missing_fields.html</option><option value="examples/nested.html">nested.html</option><option value="examples/obfuscated_email.html">obfuscated_email.html</option><option value="examples/orphan_adr.html">orphan_adr.html</option><option value="examples/value_problems 1.html">value_problems 1.html</option><option value="examples/value_problems 2.html">value_problems 2.html</option><option value="examples/values.html">values.html</option><option value="examples/xhtml_multi_profile.html">xhtml_multi_profile.html</option><option value="examples/xhtml_no_head.html">xhtml_no_head.html</option><option value="examples/xhtml_no_profile.html">xhtml_no_profile.html</option><option value="examples/xhtml_wrong_profile.html">xhtml_wrong_profile.html</option><option value="examples/xhtml_xmlns.html">xhtml_xmlns.html</option> </select> <a href="/examples/" shape="rect">Browse examples</a> </div> <p><input type="submit" value="Validate example"/></p> </form> <div class="api-and-other"> <h3>API &amp; Other</h3> <h4>Any page by <code>Referer</code></h4> <p><code>&lt;a href="http://hcard.geekhood.net/refe<strong>rr</strong>er/"&gt;Validate hCards&lt;/a&gt;</code></p> <h4>Bookmarklet</h4> <p><a class="button" href="javascript:window.location='http://hcard.geekhood.net/?url='+escape(window.location)" onclick="alert('Please drag it to your bookmarks bar');return false;" rel="bookmark" shape="rect">hCard?</a></p> <h4><abbr>REST</abbr>ful <abbr>JSON</abbr> <abbr>API</abbr></h4> <p>Send <code>GET</code> request to <code>http://hcard.geekhood.net/?url=<var>URL to validate</var>&amp;output=json</code>.</p><p>Output will be roughly compatible with the <a href="http://wiki.whatwg.org/wiki/Validator.nu_JSON_Output" shape="rect">Validator.nu <abbr>JSON</abbr> <abbr>API</abbr></a>. Likely to change in the future.</p> <p>Please use this <abbr>API</abbr> for validation, not just as an converter/extraction tool.</p> <hr/> </div> <form action="/" method="post" enctype="application/x-www-form-urlencoded"> <h3>Send Feedback</h3> <p>You can <a class=" href=&quot;mailto:me&quot; " href=" mailto: %68card%40g%65e%6bhoo%64%2e%6e%65%74 " shape="rect">send feedback via e-mail</a> or the form below.</p> <p>If you're <a href="http://github.com/pornel/hCardValidator/issues" shape="rect">reporting a bug</a> or have a suggestion, don't forget to include example hCard code.</p> <div><label for="feedbackname">Your name</label><input type="text" id="feedbackname" name="feedbackname" value=""/></div> <div><label for="feedback">Your comment</label><textarea id="feedback" name="feedback" cols="70" rows="10"/></div> <p><input type="submit" value="Send feedback"/></p> </form> </div> <script type="text/javascript" xml:space="preserve"> var tabs = document.getElementById('tabs'); var i,h3s = tabs.getElementsByTagName('h3'); var li,ul = document.createElement('ul'); ul.className = 'tablist'; ul.setAttribute('role','tablist'); var currentTab; function switchToTab(tab,e) { while(tab) { if (tab.hcard_validator_handle) break; tab = tab.parentNode; } if (!tab) return; if (currentTab) { currentTab.className = 'hidden'; currentTab.setAttribute('aria-hidden','true'); currentTab.hcard_validator_handle.className = ''; } currentTab = tab; tab.className = 'active'; currentTab.setAttribute('aria-hidden','false'); tab.hcard_validator_handle.className = 'active'; if (e &amp;&amp; e.type &amp;&amp; (''+e.type).toLowerCase() == 'keydown') { setTimeout(function(){tab.elements[0].focus();},1); // Opera 9.5 has broken (and probably insecure) leak of events on focus() } } for(i=0; i &lt; h3s.length; i++) { ul.appendChild(li=document.createElement('li')); li.setAttribute('tabindex',0); li.setAttribute('role','tab'); li.appendChild(h3s[i].firstChild.cloneNode(true)); li.onclick = (function(tab,handle){ tab.className = 'hidden'; tab.setAttribute('role','tabpanel'); tab.hcard_validator_handle = handle; return function(e) { switchToTab(tab,e); return false; } })(h3s[i].parentNode,li); li.onkeydown = function(e) { if (e.keyCode == 32 || e.keyCode == 13) return this.onclick(e); } } tabs.insertBefore(ul,tabs.firstChild); switchToTab(document.getElementById("url") || h3s[0]); </script> <h2>Credits</h2> <p>Written by <span class="vcard"><a class="fn email href=&quot;mailto:me&quot; " href=" mailto: %68card%40g%65e%6bhoo%64%2e%6e%65%74 " shape="rect">Kornel Lesiński </a></span>. Icons are from <a href="http://tango.freedesktop.org/" shape="rect">Tango Icon Library</a>. Test cases include <a href="http://microformats.org/wiki/Acid_Test" shape="rect">hCard Acid test</a> by Dmitry Baranovskiy, examples from <a href="http://microformats.org/" shape="rect">microformats.org</a> and <a href="http://ufxtract.com/testsuite/hcard/" shape="rect">hCard test suite</a>.</p> <p><a href="http://code.google.com/p/hcardvalidator/" shape="rect">Source code is available</a> under the <a href="http://www.opensource.org/licenses/bsd-license.php" rel="license" shape="rect">BSD license</a>.</p> <hr/> <div id="footnotes"> <p>¹ It's not a validator in the <abbr>XML</abbr>/<abbr>SGML</abbr> sense.</p> </div> <script src="/sblam.js.php" type="text/javascript" xml:space="preserve"/> </body> </html></pre> </div> </div> </div> <h2>Credits</h2> <p>Written by <span class="vcard"><a class='fn email href="mailto:me" ' href = "  mailto: %68card%40g%65e%6bhoo%64%2e%6e%65%74 ">Kornel Lesiński </a></span>. Icons are from <a href="http://tango.freedesktop.org/">Tango Icon Library</a>. Test cases include <a href="http://microformats.org/wiki/Acid_Test">hCard Acid test</a> by Dmitry Baranovskiy, examples from <a href="http://microformats.org/">microformats.org</a> and <a href="http://ufxtract.com/testsuite/hcard/">hCard test suite</a>.</p> <p><a href="http://code.google.com/p/hcardvalidator/">Source code is available</a> under the <a href="http://www.opensource.org/licenses/bsd-license.php" rel="license">BSD license</a>.</p> <hr/> <div id="footnotes"> <p>¹ It's not a validator in the <abbr>XML</abbr>/<abbr>SGML</abbr> sense.</p> </div> <script src="/sblam.js.php" type="text/javascript"></script> </body> </html>
<html xmlns="http://www.w3.org/1999/xhtml" lang="en"> <head profile="http://www.w3.org/2006/03/hcard"> <title>hCard Validator</title> <link rel="stylesheet" href="/i/style.css"/> <link rel="icon" href="/i/favicon.png"/> <link rel="alternate" hreflang="en" href="http://en.hcard.geekhood.net/"/> <link rel="alternate" hreflang="pl" href="http://pl.hcard.geekhood.net/"/> <link rel="alternate" hreflang="fr" href="http://fr.hcard.geekhood.net/"/> </head> <body> <h1>hCard micro<b>format</b> Validator <small>(beta, of course)</small></h1> <p>This is an unofficial validator<a href="#footnotes" shape="rect">¹</a>/conformance checker of the <a href="http://microformats.org/wiki/hcard" shape="rect">hCard microformat</a>.</p> <p class="langs"> <a hreflang="pl" href="http://pl.hcard.geekhood.net/" shape="rect">Po polsku</a> <a hreflang="fr" href="http://fr.hcard.geekhood.net/" shape="rect">En français</a> <br/>(translations welcome!) </p> <h2>Input</h2> <div id="tabs"> <form action="/#result" method="get" enctype="application/x-www-form-urlencoded"> <h3><abbr>URL</abbr></h3> <p>Check entire <abbr>XHTML</abbr> or <abbr>HTML</abbr> page by entering its <abbr>HTTP</abbr> <abbr>URL</abbr>.</p> <div><label for="url">Address:</label><input type="url" name="url" id="url" value="http://hcard.geekhood.net/"/></div> <p><input type="submit" value="Validate URL"/></p> </form> <form action="/#result" method="post" enctype="application/x-www-form-urlencoded"> <h3>Fragment</h3> <p>Paste <strong>well-formed <abbr>XHTML</abbr></strong> fragment or complete document containing hCard.</p> <div><label for="fragment"><abbr>XHTML</abbr> fragment</label> <textarea name="fragment" id="fragment" cols="80" rows="15"/> </div> <p><input type="submit" value="Validate fragment"/></p> </form> <form action="/#result" method="post" enctype="multipart/form-data"> <h3>Upload</h3> <p>Upload <abbr>HTML</abbr> or <abbr>XHTML</abbr> file to validate it. For this to work <strong>your browser must be setting <abbr>MIME</abbr> types properly</strong>.</p> <div><label for="file">Upload file</label><input id="file" type="file" name="file" accept="application/xhtml+xml,text/html,application/xml,text/xml"/></div> <p><input type="submit" value="Validate file"/></p> </form> <form action="/#result" method="get" enctype="application/x-www-form-urlencoded"> <h3>Example</h3> <p>If searching for <a href="http://microformats.org/wiki/hcard-examples-in-wild-reviewed" shape="rect">hCards in the wild</a> is tiring, check one of the test-cases:</p> <div><label for="example">Example file</label> <select name="example" id="example" onchange="this.form.fragment.value=''"> <option value="examples/acid.html">acid.html</option><option value="examples/agent.html">agent.html</option><option value="examples/example 10.html">example 10.html</option><option value="examples/example 11.html">example 11.html</option><option value="examples/example 1.html">example 1.html</option><option value="examples/example 2.html">example 2.html</option><option value="examples/example 3.html">example 3.html</option><option value="examples/example 4.html">example 4.html</option><option value="examples/example 5.html">example 5.html</option><option value="examples/example 6.html">example 6.html</option><option value="examples/example 7.html">example 7.html</option><option value="examples/example 8.html">example 8.html</option><option value="examples/example 9.html">example 9.html</option><option value="examples/geo 1.html">geo 1.html</option><option value="examples/geo 2.html">geo 2.html</option><option value="examples/hcard100.htm">hcard100.htm</option><option value="examples/hcard10.htm">hcard10.htm</option><option value="examples/hcard11.htm">hcard11.htm</option><option value="examples/hcard12.htm">hcard12.htm</option><option value="examples/hcard15.htm">hcard15.htm</option><option value="examples/hcard16.htm">hcard16.htm</option><option value="examples/hcard1.htm">hcard1.htm</option><option value="examples/hcard2.htm">hcard2.htm</option><option value="examples/hcard3.htm">hcard3.htm</option><option value="examples/hcard4.htm">hcard4.htm</option><option value="examples/hcard5.htm">hcard5.htm</option><option value="examples/hcard6.htm">hcard6.htm</option><option value="examples/hcard7.htm">hcard7.htm</option><option value="examples/hcard8.htm">hcard8.htm</option><option value="examples/hcard99.htm">hcard99.htm</option><option value="examples/hcard9.htm">hcard9.htm</option><option value="examples/ignored_classes.html">ignored_classes.html</option><option value="examples/im invalid.html">im invalid.html</option><option value="examples/implied n.html">implied n.html</option><option value="examples/im valid.html">im valid.html</option><option value="examples/include 2.html">include 2.html</option><option value="examples/include 3.html">include 3.html</option><option value="examples/include.html">include.html</option><option value="examples/missing_fields.html">missing_fields.html</option><option value="examples/nested.html">nested.html</option><option value="examples/obfuscated_email.html">obfuscated_email.html</option><option value="examples/orphan_adr.html">orphan_adr.html</option><option value="examples/value_problems 1.html">value_problems 1.html</option><option value="examples/value_problems 2.html">value_problems 2.html</option><option value="examples/values.html">values.html</option><option value="examples/xhtml_multi_profile.html">xhtml_multi_profile.html</option><option value="examples/xhtml_no_head.html">xhtml_no_head.html</option><option value="examples/xhtml_no_profile.html">xhtml_no_profile.html</option><option value="examples/xhtml_wrong_profile.html">xhtml_wrong_profile.html</option><option value="examples/xhtml_xmlns.html">xhtml_xmlns.html</option> </select> <a href="/examples/" shape="rect">Browse examples</a> </div> <p><input type="submit" value="Validate example"/></p> </form> <div class="api-and-other"> <h3>API & Other</h3> <h4>Any page by <code>Referer</code></h4> <p><code><a href="http://hcard.geekhood.net/refe<strong>rr</strong>er/">Validate hCards</a></code></p> <h4>Bookmarklet</h4> <p><a class="button" href="javascript:window.location='http://hcard.geekhood.net/?url='+escape(window.location)" onclick="alert('Please drag it to your bookmarks bar');return false;" rel="bookmark" shape="rect">hCard?</a></p> <h4><abbr>REST</abbr>ful <abbr>JSON</abbr> <abbr>API</abbr></h4> <p>Send <code>GET</code> request to <code>http://hcard.geekhood.net/?url=<var>URL to validate</var>&output=json</code>.</p><p>Output will be roughly compatible with the <a href="http://wiki.whatwg.org/wiki/Validator.nu_JSON_Output" shape="rect">Validator.nu <abbr>JSON</abbr> <abbr>API</abbr></a>. Likely to change in the future.</p> <p>Please use this <abbr>API</abbr> for validation, not just as an converter/extraction tool.</p> <hr/> </div> <form action="/" method="post" enctype="application/x-www-form-urlencoded"> <h3>Send Feedback</h3> <p>You can <a class=" href="mailto:me" " href=" mailto: %68card%40g%65e%6bhoo%64%2e%6e%65%74 " shape="rect">send feedback via e-mail</a> or the form below.</p> <p>If you're <a href="http://github.com/pornel/hCardValidator/issues" shape="rect">reporting a bug</a> or have a suggestion, don't forget to include example hCard code.</p> <div><label for="feedbackname">Your name</label><input type="text" id="feedbackname" name="feedbackname" value=""/></div> <div><label for="feedback">Your comment</label><textarea id="feedback" name="feedback" cols="70" rows="10"/></div> <p><input type="submit" value="Send feedback"/></p> </form> </div> <script type="text/javascript" xml:space="preserve"> var tabs = document.getElementById('tabs'); var i,h3s = tabs.getElementsByTagName('h3'); var li,ul = document.createElement('ul'); ul.className = 'tablist'; ul.setAttribute('role','tablist'); var currentTab; function switchToTab(tab,e) { while(tab) { if (tab.hcard_validator_handle) break; tab = tab.parentNode; } if (!tab) return; if (currentTab) { currentTab.className = 'hidden'; currentTab.setAttribute('aria-hidden','true'); currentTab.hcard_validator_handle.className = ''; } currentTab = tab; tab.className = 'active'; currentTab.setAttribute('aria-hidden','false'); tab.hcard_validator_handle.className = 'active'; if (e && e.type && (''+e.type).toLowerCase() == 'keydown') { setTimeout(function(){tab.elements[0].focus();},1); // Opera 9.5 has broken (and probably insecure) leak of events on focus() } } for(i=0; i < h3s.length; i++) { ul.appendChild(li=document.createElement('li')); li.setAttribute('tabindex',0); li.setAttribute('role','tab'); li.appendChild(h3s[i].firstChild.cloneNode(true)); li.onclick = (function(tab,handle){ tab.className = 'hidden'; tab.setAttribute('role','tabpanel'); tab.hcard_validator_handle = handle; return function(e) { switchToTab(tab,e); return false; } })(h3s[i].parentNode,li); li.onkeydown = function(e) { if (e.keyCode == 32 || e.keyCode == 13) return this.onclick(e); } } tabs.insertBefore(ul,tabs.firstChild); switchToTab(document.getElementById("url") || h3s[0]); </script> <div id="result"> <h2>Result</h2> <p class="valid">Congratulations! No errors found.</p> <ol> <li> <p>No issues found.</p> <table> <tbody class="email"> <tr> <th rowspan="1" title="email" colspan="1">e-mail</th> <th title="value" rowspan="1" colspan="1">value</th> <td rowspan="1" colspan="1"><pre class="0" xml:space="preserve">hcard@geekhood.net</pre></td> </tr> </tbody> <tbody> <tr><th colspan="2" title="fn" rowspan="1">Formatted name</th> <td rowspan="1" colspan="1"><pre class="0" xml:space="preserve">Kornel Lesiński</pre></td> </tr> </tbody> <tbody class="n"> <tr> <th rowspan="2" title="n" colspan="1">Name</th> <th title="given-name" rowspan="1" colspan="1">Given Name</th> <td rowspan="1" colspan="1"><pre class="0" xml:space="preserve">Kornel</pre></td> </tr><tr> <th title="family-name" rowspan="1" colspan="1">Family Name</th> <td rowspan="1" colspan="1"><pre class="0" xml:space="preserve">Lesiński</pre></td> </tr> </tbody> </table> </li> </ol> <div id="source"> <div> <h3>File source</h3> <pre xml:space="preserve"><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" lang="en"> <head profile="http://www.w3.org/2006/03/hcard"> <title>hCard Validator</title> <link rel="stylesheet" href="/i/style.css"/> <link rel="icon" href="/i/favicon.png"/> <link rel="alternate" hreflang="en" href="http://en.hcard.geekhood.net/"/> <link rel="alternate" hreflang="pl" href="http://pl.hcard.geekhood.net/"/> <link rel="alternate" hreflang="fr" href="http://fr.hcard.geekhood.net/"/> </head> <body> <h1>hCard micro<b>format</b> Validator <small>(beta, of course)</small></h1> <p>This is an unofficial validator<a href="#footnotes">¹</a>/conformance checker of the <a href="http://microformats.org/wiki/hcard">hCard microformat</a>.</p> <p class="langs"> <a hreflang="pl" href="http://pl.hcard.geekhood.net/">Po polsku</a> <a hreflang="fr" href="http://fr.hcard.geekhood.net/">En français</a> <br/>(translations welcome!) </p> <h2>Input</h2> <div id="tabs"> <form action="/#result" method="get"> <h3><abbr>URL</abbr></h3> <p>Check entire <abbr>XHTML</abbr> or <abbr>HTML</abbr> page by entering its <abbr>HTTP</abbr> <abbr>URL</abbr>.</p> <div><label for="url">Address:</label><input type="url" name="url" id="url"/></div> <p><input type="submit" value="Validate URL"/></p> </form> <form action="/#result" method="post"> <h3>Fragment</h3> <p>Paste <strong>well-formed <abbr>XHTML</abbr></strong> fragment or complete document containing hCard.</p> <div><label for="fragment"><abbr>XHTML</abbr> fragment</label> <textarea name="fragment" id="fragment" cols="80" rows="15"></textarea> </div> <p><input type="submit" value="Validate fragment"/></p> </form> <form action="/#result" method="post" enctype="multipart/form-data"> <h3>Upload</h3> <p>Upload <abbr>HTML</abbr> or <abbr>XHTML</abbr> file to validate it. For this to work <strong>your browser must be setting <abbr>MIME</abbr> types properly</strong>.</p> <div><label for="file">Upload file</label><input id="file" type="file" name="file" accept="application/xhtml+xml,text/html,application/xml,text/xml"/></div> <p><input type="submit" value="Validate file"/></p> </form> <form action="/#result" method="get"> <h3>Example</h3> <p>If searching for <a href="http://microformats.org/wiki/hcard-examples-in-wild-reviewed">hCards in the wild</a> is tiring, check one of the test-cases:</p> <div><label for="example">Example file</label> <select name="example" id="example" onchange="this.form.fragment.value=''"> <option value="examples/acid.html">acid.html</option><option value="examples/agent.html">agent.html</option><option value="examples/example 10.html">example 10.html</option><option value="examples/example 11.html">example 11.html</option><option value="examples/example 1.html">example 1.html</option><option value="examples/example 2.html">example 2.html</option><option value="examples/example 3.html">example 3.html</option><option value="examples/example 4.html">example 4.html</option><option value="examples/example 5.html">example 5.html</option><option value="examples/example 6.html">example 6.html</option><option value="examples/example 7.html">example 7.html</option><option value="examples/example 8.html">example 8.html</option><option value="examples/example 9.html">example 9.html</option><option value="examples/geo 1.html">geo 1.html</option><option value="examples/geo 2.html">geo 2.html</option><option value="examples/hcard100.htm">hcard100.htm</option><option value="examples/hcard10.htm">hcard10.htm</option><option value="examples/hcard11.htm">hcard11.htm</option><option value="examples/hcard12.htm">hcard12.htm</option><option value="examples/hcard15.htm">hcard15.htm</option><option value="examples/hcard16.htm">hcard16.htm</option><option value="examples/hcard1.htm">hcard1.htm</option><option value="examples/hcard2.htm">hcard2.htm</option><option value="examples/hcard3.htm">hcard3.htm</option><option value="examples/hcard4.htm">hcard4.htm</option><option value="examples/hcard5.htm">hcard5.htm</option><option value="examples/hcard6.htm">hcard6.htm</option><option value="examples/hcard7.htm">hcard7.htm</option><option value="examples/hcard8.htm">hcard8.htm</option><option value="examples/hcard99.htm">hcard99.htm</option><option value="examples/hcard9.htm">hcard9.htm</option><option value="examples/ignored_classes.html">ignored_classes.html</option><option value="examples/im invalid.html">im invalid.html</option><option value="examples/implied n.html">implied n.html</option><option value="examples/im valid.html">im valid.html</option><option value="examples/include 2.html">include 2.html</option><option value="examples/include 3.html">include 3.html</option><option value="examples/include.html">include.html</option><option value="examples/missing_fields.html">missing_fields.html</option><option value="examples/nested.html">nested.html</option><option value="examples/obfuscated_email.html">obfuscated_email.html</option><option value="examples/orphan_adr.html">orphan_adr.html</option><option value="examples/value_problems 1.html">value_problems 1.html</option><option value="examples/value_problems 2.html">value_problems 2.html</option><option value="examples/values.html">values.html</option><option value="examples/xhtml_multi_profile.html">xhtml_multi_profile.html</option><option value="examples/xhtml_no_head.html">xhtml_no_head.html</option><option value="examples/xhtml_no_profile.html">xhtml_no_profile.html</option><option value="examples/xhtml_wrong_profile.html">xhtml_wrong_profile.html</option><option value="examples/xhtml_xmlns.html">xhtml_xmlns.html</option> </select> <a href="/examples/">Browse examples</a> </div> <p><input type="submit" value="Validate example"/></p> </form> <div class="api-and-other"> <h3>API &amp; Other</h3> <h4>Any page by <code>Referer</code></h4> <p><code>&lt;a href=&quot;http://hcard.geekhood.net/refe<strong>rr</strong>er/&quot;&gt;Validate hCards&lt;/a&gt;</code></p> <h4>Bookmarklet</h4> <p><a class="button" href="javascript:window.location='http://hcard.geekhood.net/?url='+escape(window.location)" onclick="alert('Please drag it to your bookmarks bar');return false;" rel="bookmark">hCard?</a></p> <h4><abbr>REST</abbr>ful <abbr>JSON</abbr> <abbr>API</abbr></h4> <p>Send <code>GET</code> request to <code>http://hcard.geekhood.net/?url=<var>URL to validate</var>&amp;output=json</code>.</p><p>Output will be roughly compatible with the <a href="http://wiki.whatwg.org/wiki/Validator.nu_JSON_Output">Validator.nu <abbr>JSON</abbr> <abbr>API</abbr></a>. Likely to change in the future.</p> <p>Please use this <abbr>API</abbr> for validation, not just as an converter/extraction tool.</p> <hr/> </div> <form action="/" method="post"> <h3>Send Feedback</h3> <p>You can <a class=' href="mailto:me" ' href = " &#x20;ma&#105;&#x6C;t&#111;&#x3a;&#x20;%&#x36;&#x38;ca&#x72;&#100;&#x25;&#52;&#48;g&#x25;&#x36;5e%6b&#x68;oo&#37;&#x36;&#52;&#x25;&#50;&#x65;%&#x36;&#101;&#x25;&#54;5&#37;&#x37;&#x34; ">send feedback via e-mail</a> or the form below.</p> <p>If you&#039;re <a href="http://github.com/pornel/hCardValidator/issues">reporting a bug</a> or have a suggestion, don&#039;t forget to include example hCard code.</p> <div><label for="feedbackname">Your name</label><input type="text" id="feedbackname" name="feedbackname" value=""/></div> <div><label for="feedback">Your comment</label><textarea id="feedback" name="feedback" cols="70" rows="10"></textarea></div> <p><input type="submit" value="Send feedback"/></p> </form> </div> <script type="text/javascript"><![CDATA[ var tabs = document.getElementById('tabs'); var i,h3s = tabs.getElementsByTagName('h3'); var li,ul = document.createElement('ul'); ul.className = 'tablist'; ul.setAttribute('role','tablist'); var currentTab; function switchToTab(tab,e) { while(tab) { if (tab.hcard_validator_handle) break; tab = tab.parentNode; } if (!tab) return; if (currentTab) { currentTab.className = 'hidden'; currentTab.setAttribute('aria-hidden','true'); currentTab.hcard_validator_handle.className = ''; } currentTab = tab; tab.className = 'active'; currentTab.setAttribute('aria-hidden','false'); tab.hcard_validator_handle.className = 'active'; if (e && e.type && (''+e.type).toLowerCase() == 'keydown') { setTimeout(function(){tab.elements[0].focus();},1); // Opera 9.5 has broken (and probably insecure) leak of events on focus() } } for(i=0; i < h3s.length; i++) { ul.appendChild(li=document.createElement('li')); li.setAttribute('tabindex',0); li.setAttribute('role','tab'); li.appendChild(h3s[i].firstChild.cloneNode(true)); li.onclick = (function(tab,handle){ tab.className = 'hidden'; tab.setAttribute('role','tabpanel'); tab.hcard_validator_handle = handle; return function(e) { switchToTab(tab,e); return false; } })(h3s[i].parentNode,li); li.onkeydown = function(e) { if (e.keyCode == 32 || e.keyCode == 13) return this.onclick(e); } } tabs.insertBefore(ul,tabs.firstChild); switchToTab(document.getElementById("url") || h3s[0]); ]]></script> <h2>Credits</h2> <p>Written by <span class="vcard"><a class='fn email href="mailto:me" ' href = " &#x20;ma&#105;&#x6C;t&#111;&#x3a;&#x20;%&#x36;&#x38;ca&#x72;&#100;&#x25;&#52;&#48;g&#x25;&#x36;5e%6b&#x68;oo&#37;&#x36;&#52;&#x25;&#50;&#x65;%&#x36;&#101;&#x25;&#54;5&#37;&#x37;&#x34; ">Kornel Lesiński </a></span>. Icons are from <a href="http://tango.freedesktop.org/">Tango Icon Library</a>. Test cases include <a href="http://microformats.org/wiki/Acid_Test">hCard Acid test</a> by Dmitry Baranovskiy, examples from <a href="http://microformats.org/">microformats.org</a> and <a href="http://ufxtract.com/testsuite/hcard/">hCard test suite</a>.</p> <p><a href="http://code.google.com/p/hcardvalidator/">Source code is available</a> under the <a href="http://www.opensource.org/licenses/bsd-license.php" rel="license">BSD license</a>.</p> <hr/> <div id="footnotes"> <p>¹ It's not a validator in the <abbr>XML</abbr>/<abbr>SGML</abbr> sense.</p> </div> <script src="/sblam.js.php" type="text/javascript"></script> </body> </html></pre> </div> <div> <h3>Parsed source</h3> <pre xml:space="preserve"><html xmlns="http://www.w3.org/1999/xhtml" lang="en"> <head profile="http://www.w3.org/2006/03/hcard"> <title>hCard Validator</title> <link rel="stylesheet" href="/i/style.css"/> <link rel="icon" href="/i/favicon.png"/> <link rel="alternate" hreflang="en" href="http://en.hcard.geekhood.net/"/> <link rel="alternate" hreflang="pl" href="http://pl.hcard.geekhood.net/"/> <link rel="alternate" hreflang="fr" href="http://fr.hcard.geekhood.net/"/> </head> <body> <h1>hCard micro<b>format</b> Validator <small>(beta, of course)</small></h1> <p>This is an unofficial validator<a href="#footnotes" shape="rect">¹</a>/conformance checker of the <a href="http://microformats.org/wiki/hcard" shape="rect">hCard microformat</a>.</p> <p class="langs"> <a hreflang="pl" href="http://pl.hcard.geekhood.net/" shape="rect">Po polsku</a> <a hreflang="fr" href="http://fr.hcard.geekhood.net/" shape="rect">En français</a> <br/>(translations welcome!) </p> <h2>Input</h2> <div id="tabs"> <form action="/#result" method="get" enctype="application/x-www-form-urlencoded"> <h3><abbr>URL</abbr></h3> <p>Check entire <abbr>XHTML</abbr> or <abbr>HTML</abbr> page by entering its <abbr>HTTP</abbr> <abbr>URL</abbr>.</p> <div><label for="url">Address:</label><input type="url" name="url" id="url"/></div> <p><input type="submit" value="Validate URL"/></p> </form> <form action="/#result" method="post" enctype="application/x-www-form-urlencoded"> <h3>Fragment</h3> <p>Paste <strong>well-formed <abbr>XHTML</abbr></strong> fragment or complete document containing hCard.</p> <div><label for="fragment"><abbr>XHTML</abbr> fragment</label> <textarea name="fragment" id="fragment" cols="80" rows="15"/> </div> <p><input type="submit" value="Validate fragment"/></p> </form> <form action="/#result" method="post" enctype="multipart/form-data"> <h3>Upload</h3> <p>Upload <abbr>HTML</abbr> or <abbr>XHTML</abbr> file to validate it. For this to work <strong>your browser must be setting <abbr>MIME</abbr> types properly</strong>.</p> <div><label for="file">Upload file</label><input id="file" type="file" name="file" accept="application/xhtml+xml,text/html,application/xml,text/xml"/></div> <p><input type="submit" value="Validate file"/></p> </form> <form action="/#result" method="get" enctype="application/x-www-form-urlencoded"> <h3>Example</h3> <p>If searching for <a href="http://microformats.org/wiki/hcard-examples-in-wild-reviewed" shape="rect">hCards in the wild</a> is tiring, check one of the test-cases:</p> <div><label for="example">Example file</label> <select name="example" id="example" onchange="this.form.fragment.value=''"> <option value="examples/acid.html">acid.html</option><option value="examples/agent.html">agent.html</option><option value="examples/example 10.html">example 10.html</option><option value="examples/example 11.html">example 11.html</option><option value="examples/example 1.html">example 1.html</option><option value="examples/example 2.html">example 2.html</option><option value="examples/example 3.html">example 3.html</option><option value="examples/example 4.html">example 4.html</option><option value="examples/example 5.html">example 5.html</option><option value="examples/example 6.html">example 6.html</option><option value="examples/example 7.html">example 7.html</option><option value="examples/example 8.html">example 8.html</option><option value="examples/example 9.html">example 9.html</option><option value="examples/geo 1.html">geo 1.html</option><option value="examples/geo 2.html">geo 2.html</option><option value="examples/hcard100.htm">hcard100.htm</option><option value="examples/hcard10.htm">hcard10.htm</option><option value="examples/hcard11.htm">hcard11.htm</option><option value="examples/hcard12.htm">hcard12.htm</option><option value="examples/hcard15.htm">hcard15.htm</option><option value="examples/hcard16.htm">hcard16.htm</option><option value="examples/hcard1.htm">hcard1.htm</option><option value="examples/hcard2.htm">hcard2.htm</option><option value="examples/hcard3.htm">hcard3.htm</option><option value="examples/hcard4.htm">hcard4.htm</option><option value="examples/hcard5.htm">hcard5.htm</option><option value="examples/hcard6.htm">hcard6.htm</option><option value="examples/hcard7.htm">hcard7.htm</option><option value="examples/hcard8.htm">hcard8.htm</option><option value="examples/hcard99.htm">hcard99.htm</option><option value="examples/hcard9.htm">hcard9.htm</option><option value="examples/ignored_classes.html">ignored_classes.html</option><option value="examples/im invalid.html">im invalid.html</option><option value="examples/implied n.html">implied n.html</option><option value="examples/im valid.html">im valid.html</option><option value="examples/include 2.html">include 2.html</option><option value="examples/include 3.html">include 3.html</option><option value="examples/include.html">include.html</option><option value="examples/missing_fields.html">missing_fields.html</option><option value="examples/nested.html">nested.html</option><option value="examples/obfuscated_email.html">obfuscated_email.html</option><option value="examples/orphan_adr.html">orphan_adr.html</option><option value="examples/value_problems 1.html">value_problems 1.html</option><option value="examples/value_problems 2.html">value_problems 2.html</option><option value="examples/values.html">values.html</option><option value="examples/xhtml_multi_profile.html">xhtml_multi_profile.html</option><option value="examples/xhtml_no_head.html">xhtml_no_head.html</option><option value="examples/xhtml_no_profile.html">xhtml_no_profile.html</option><option value="examples/xhtml_wrong_profile.html">xhtml_wrong_profile.html</option><option value="examples/xhtml_xmlns.html">xhtml_xmlns.html</option> </select> <a href="/examples/" shape="rect">Browse examples</a> </div> <p><input type="submit" value="Validate example"/></p> </form> <div class="api-and-other"> <h3>API &amp; Other</h3> <h4>Any page by <code>Referer</code></h4> <p><code>&lt;a href="http://hcard.geekhood.net/refe<strong>rr</strong>er/"&gt;Validate hCards&lt;/a&gt;</code></p> <h4>Bookmarklet</h4> <p><a class="button" href="javascript:window.location='http://hcard.geekhood.net/?url='+escape(window.location)" onclick="alert('Please drag it to your bookmarks bar');return false;" rel="bookmark" shape="rect">hCard?</a></p> <h4><abbr>REST</abbr>ful <abbr>JSON</abbr> <abbr>API</abbr></h4> <p>Send <code>GET</code> request to <code>http://hcard.geekhood.net/?url=<var>URL to validate</var>&amp;output=json</code>.</p><p>Output will be roughly compatible with the <a href="http://wiki.whatwg.org/wiki/Validator.nu_JSON_Output" shape="rect">Validator.nu <abbr>JSON</abbr> <abbr>API</abbr></a>. Likely to change in the future.</p> <p>Please use this <abbr>API</abbr> for validation, not just as an converter/extraction tool.</p> <hr/> </div> <form action="/" method="post" enctype="application/x-www-form-urlencoded"> <h3>Send Feedback</h3> <p>You can <a class=" href=&quot;mailto:me&quot; " href=" mailto: %68card%40g%65e%6bhoo%64%2e%6e%65%74 " shape="rect">send feedback via e-mail</a> or the form below.</p> <p>If you're <a href="http://github.com/pornel/hCardValidator/issues" shape="rect">reporting a bug</a> or have a suggestion, don't forget to include example hCard code.</p> <div><label for="feedbackname">Your name</label><input type="text" id="feedbackname" name="feedbackname" value=""/></div> <div><label for="feedback">Your comment</label><textarea id="feedback" name="feedback" cols="70" rows="10"/></div> <p><input type="submit" value="Send feedback"/></p> </form> </div> <script type="text/javascript" xml:space="preserve"> var tabs = document.getElementById('tabs'); var i,h3s = tabs.getElementsByTagName('h3'); var li,ul = document.createElement('ul'); ul.className = 'tablist'; ul.setAttribute('role','tablist'); var currentTab; function switchToTab(tab,e) { while(tab) { if (tab.hcard_validator_handle) break; tab = tab.parentNode; } if (!tab) return; if (currentTab) { currentTab.className = 'hidden'; currentTab.setAttribute('aria-hidden','true'); currentTab.hcard_validator_handle.className = ''; } currentTab = tab; tab.className = 'active'; currentTab.setAttribute('aria-hidden','false'); tab.hcard_validator_handle.className = 'active'; if (e &amp;&amp; e.type &amp;&amp; (''+e.type).toLowerCase() == 'keydown') { setTimeout(function(){tab.elements[0].focus();},1); // Opera 9.5 has broken (and probably insecure) leak of events on focus() } } for(i=0; i &lt; h3s.length; i++) { ul.appendChild(li=document.createElement('li')); li.setAttribute('tabindex',0); li.setAttribute('role','tab'); li.appendChild(h3s[i].firstChild.cloneNode(true)); li.onclick = (function(tab,handle){ tab.className = 'hidden'; tab.setAttribute('role','tabpanel'); tab.hcard_validator_handle = handle; return function(e) { switchToTab(tab,e); return false; } })(h3s[i].parentNode,li); li.onkeydown = function(e) { if (e.keyCode == 32 || e.keyCode == 13) return this.onclick(e); } } tabs.insertBefore(ul,tabs.firstChild); switchToTab(document.getElementById("url") || h3s[0]); </script> <h2>Credits</h2> <p>Written by <span class="vcard"><a class="fn email href=&quot;mailto:me&quot; " href=" mailto: %68card%40g%65e%6bhoo%64%2e%6e%65%74 " shape="rect">Kornel Lesiński </a></span>. Icons are from <a href="http://tango.freedesktop.org/" shape="rect">Tango Icon Library</a>. Test cases include <a href="http://microformats.org/wiki/Acid_Test" shape="rect">hCard Acid test</a> by Dmitry Baranovskiy, examples from <a href="http://microformats.org/" shape="rect">microformats.org</a> and <a href="http://ufxtract.com/testsuite/hcard/" shape="rect">hCard test suite</a>.</p> <p><a href="http://code.google.com/p/hcardvalidator/" shape="rect">Source code is available</a> under the <a href="http://www.opensource.org/licenses/bsd-license.php" rel="license" shape="rect">BSD license</a>.</p> <hr/> <div id="footnotes"> <p>¹ It's not a validator in the <abbr>XML</abbr>/<abbr>SGML</abbr> sense.</p> </div> <script src="/sblam.js.php" type="text/javascript" xml:space="preserve"/> </body> </html></pre> </div> </div> </div> <h2>Credits</h2> <p>Written by <span class="vcard"><a class="fn email href="mailto:me" " href=" mailto: %68card%40g%65e%6bhoo%64%2e%6e%65%74 " shape="rect">Kornel Lesiński </a></span>. Icons are from <a href="http://tango.freedesktop.org/" shape="rect">Tango Icon Library</a>. Test cases include <a href="http://microformats.org/wiki/Acid_Test" shape="rect">hCard Acid test</a> by Dmitry Baranovskiy, examples from <a href="http://microformats.org/" shape="rect">microformats.org</a> and <a href="http://ufxtract.com/testsuite/hcard/" shape="rect">hCard test suite</a>.</p> <p><a href="http://code.google.com/p/hcardvalidator/" shape="rect">Source code is available</a> under the <a href="http://www.opensource.org/licenses/bsd-license.php" rel="license" shape="rect">BSD license</a>.</p> <hr/> <div id="footnotes"> <p>¹ It's not a validator in the <abbr>XML</abbr>/<abbr>SGML</abbr> sense.</p> </div> <script src="/sblam.js.php" type="text/javascript" xml:space="preserve"/> </body> </html>
Written by Kornel Lesiński . Icons are from Tango Icon Library. Test cases include hCard Acid test by Dmitry Baranovskiy, examples from microformats.org and hCard test suite.
Source code is available under the BSD license.
¹ It's not a validator in the XML/SGML sense.