W takim razie dlaczego FB go udostępnia ? Jaki ma w tym cel ?
Chodzilo o to, by odseparowac elementy HTML od znacznikow powiazanych z protokolem open graph - w teorii inne sieci spolecznosciowe by mogly korzystac z informacji zawartych w znacznikach OG (og:property - cos takiego jest w kodzie jak sobie zobaczysz), a skoro juz sie wybrali w tym kierunku, to swoja implementacje dodali jako jezyk FBML (w kodzie znaczniki zaczynajace sie od <fb: ).
Dokumenty XHTML sa plikami XML, wiec obsluguja przestrzenie nazw (czyli rozszerzanie jezyka o nowe znaczniki, jak og: i fb: przez dodanie atrybutu xmlns do tagu html). Jesli dodac xmlns facebooka, to strona bedzie sie walidowac, ale nie zawracaja tym glowy ludziom na stronie z widgetem.
Strony HTML4 i HTML5 nie sa z zalozenia plikami XML, wiec nie obsluguja atrybutu xmlns - dlatego sie nie waliduja nawet, jesli sie doda kod do tagu html.
Warto przy tym zauwazyc, ze stary kod FB zawiera tez atrybut property znacznika meta, ktory jest poprawny tylko przy uzyciu DTD HTML4 lub XHTML
z obsluga RDFa. Mozna ominac zmiane DTD na zawierajacy RDFa, zamykajac te tagi w komentarze HTML - wtedy sie bedzie walidowalo i bedzie dzialac.
Podsumowujac, myslenie mieli dobre i da sie to wszystko zrobic tak, by strona sie walidowala z ich starym kodem. W praktyce malo kto rozroznia nawet xhtml i html, a html5 nie bedzie wymagal zgodnosci z xmlem, wiec sie wycofali z tego zagmatwanego pomyslu i wypuscili iframe oraz kod zgodny z html5.