
Format ten postanowiłem stworzyć, ponieważ modny stał się ostatnio portal Nasza Klasa, wcześniej zaś popularny był Epuls. Zresztą takich różnych portali cała wuchta napowstawała.
W czym jednak problem? Każdy z nich osobno pokazuje jakieś dane o zarejestrowanych osobach, żaden nie umie zrobić użytku z danych zgromadzonych w innych. Ba! Nasza Klasa w ogóle nawet nie przewiduje możliwości pochwalenia się swoją strona albo blogiem, co mogło by ułatwić dotarcie do informacji np. na Onetowym blogu czy w Epulsowej galerii.
Wobec powyższych problemów chcę utworzyć format pozwalający w jednorodny sposób zawrzeć informacje znajdujące się na stronach tego typu serwisów w dokumencie XML. Najsampierw tworzę tylko definicję formatu, ale jako iż liczenie że autorzy takich portali dodadzą wsparcie dla niego do swoich stron jest naiwnością, więc kolejnym krokiem będzie napisanie (w Pythonie albo PHP) parsera który pobierał by strony z portali i tłumaczył HTMLową reprezentację informacji na rzeczony XMLowy format.
Na koniec jeszcze jedna sprawa — istnieją inne formaty opisujące profile użytkowników, jak np. „XML User Profiles”, jednak jego struktura mi nie odpowiadała (zbyt duży nacisk na podobieństwo do HTML'a nie pozwala np. zdefiniować sobie nowego komunikatora tak, aby programy nie znające go wiedziały że jest to komunikator, a ponadto nie pozwala jednoznacznie oznaczyć imienia i nazwiska itp.) więc zdecydowałem się na własny.
Pokażmy ją w formie pseudokodu:
<?xml version="1.0" encoding="utf-8" ?>
<person>
<-- Komunikatory („rel” jest opcjonalne i może być dowolne) -->
<msg type="msg_type" rel="domowy">numer/identyfikator komunikatora</msg>
<-- Adresy stron -->
<url type="url_type">URL</url>
<-- Imiona, nazwiska i ksywki -->
<nick>JaBoJa</nick>
<name>Jakub</name><name>Bogusław</name>
<surname>Jagiełło</surname><surname>ewentualne nazwisko panieńskie</surname>
<-- Adresy - kolejność elementów nie ma znaczenia, żaden nie jest wymagany. -->
<address>
<name>Pan Ździchu Pędzel</name>
<street>ul. Kaszankowa</street><number>nr. domu/nr. mieszkania</number>
<code>61-224</code><locality>Poznań</locality>
<country>Poland</country>
<-- jeśli miejscowość w locality nie ma poczty -->
<post>Poznań</post>
</address>
<-- Płeć (m - mężczyzna, f - kobieta). Żeby już nie szaleć z unicodem
nie wprowadzam ♂ i ♀, acz ładniej by wtedy wyglądało. -->
<sex>m|f</sex>
<-- Data urodzenia albo wiek (niedopuszczalne oba naraz).
Preferowany format jak poniżej, ale dopuszczalny każdy bezwzględny
format zrozumiałym dla strtotime() z PHP. „now” itp. niedopuszczalne -->
<born>[dd-mm-]yyyy</born>
<age>20</age>
<-- Zdjęcia, rysunki, obrazy i ilustracje (wymagany atrybut url lub href).
„date” jest datą publikacji w serwisie. „thumb” musi być w formacie GIF,
JPEG lub PNG. „src” w dowolnym formacie graficznym, ale jeśli nie jest to
żaden z wymienionych to parametr „mime” staje się obowiązkowy. -->
<img src="url" thumb="url" href="iri" mime="application/x-shockwave-flash"
date="dd-mm-yyyy" size="20kB" type="img_type">
<-- Jeśli nie ma podziału na tytuł i opis należy pominąć dwa następne zna-
czniki i wpisać tytuł zdjęcia nie objęty żadnym dodatkowym znacznikiem. -->
<title>Tytuł</title>
<descr>Opis</descr>
<-- Komentarze. Parametr „href” jest wymagany. Jeśli strona nie ma
licznika komentarzy znacznik może być pusty. -->
<comments href="iri">ilośc komentarzy</comments>
</img>
</person>
Typy komunikatorów (msg_type):
Typy adresów stron (url_type):
Typy zdjęć i ilustracji (img_type) — trzy, z których zawsze występuje dokładnie jeden (choćby domyślny), oraz dwa dodatkowe, które mogą być do niego dodawane. Wspomniane trzy podstawowe:
I dwa dodatkowe:
Poszczedólne typy rozdzielamy spacjami. Kilka przykładów: