Как FB создал FBML? - PullRequest
       7

Как FB создал FBML?

0 голосов
/ 07 января 2011

Мне действительно интересно, как FB создал FBML и как создать нечто подобное.Они написали процессор C ++, который заменяет FBML HTML, или они используют XSLT или что они делали для создания языка шаблонов, подобного этому?Я хочу сделать это в основном для своих собственных знаний и для развлечения в свободное время, чтобы посмотреть, смогу ли я создать что-то подобное.Я пытался посмотреть, как они это сделали, но все, что я получаю, это способы использовать FBML.

Ответы [ 2 ]

3 голосов
/ 07 января 2011

Если это приложение Facebook, то браузер, такой как FF или IE, подключается к app.facebook.com/some_app, а сервер Facebook подключается к www.foobar.com/blah (который создатель приложения регистрирует в Facebook) для кода FBML и Facebookможно изменить на что угодно - изменить FBML на XHTML.Они могут использовать анализаторы для синтаксического анализа кода FBML и преобразования его в XHTML соответственно.

0 голосов
/ 07 января 2011

Ну, есть 3 способа написания парсера для XML, который конвертирует в HTML:

  1. написать парсер в лекс и бизон
  2. использовать библиотеку синтаксического анализатора XML для чтения XML в память и использовать «нормальный» язык программирования для преобразования XML в HTML.
  3. используйте XSLT
  4. использовать некоторые веб-фреймворки, поддерживающие пользовательские библиотеки тегов, которые могут преобразовывать теги FBML в HTML.

Вариант № 1 принципиально не выполнен, поскольку вы всегда можете использовать вместо него № 2.

Судя по тому факту, что некоторые теги должны взаимодействовать с ресурсами вне XML-файла (например, fb:if-can-see), # 2 и # 4 кажутся более вероятными, чем # 3 - оба имеют более легкий доступ к SQL базы данных или базы данных NoSQL и тому подобное.

(Библиотеки XSLT на многих языках позволяют определять пользовательские функции, которые могут обращаться к произвольным источникам данных на языке, на котором они реализованы, поэтому # 3 не является невозможным).

...