Heller Постоянный участник
зарегистрирован: 23.06.2005 сообщений: 98 откуда: Moscow |
написано: 26 июля 2006г. 07:08:24 |
ответить • правка • инфо • #5895 |
математик, "XSL" = "XSLT" + "XPath" + "XSL-FO"
XSLT - Трансформация XML-документа в любой другой документ. Фактически, XML-парсер, который на выходе выдает уже готовый для просмотра график png, html-страничку, вордовый документ или что-либо еще. Очень удобная штука. Можно, например, иметь одну RSS-ленту и выводить ее содержимое как агрегаторам стандартными путями, так и браузерам в формате HTML, используя для преобразования XSLT (при этом имеется обширный набор правил для преобразования - это не какой-то там CSS - здесь можно менять блоки данных местами в произвольном порядке, обращаться как к данным к атрибутам, например, и т. д. и т. п. - средство практически универальное, во всяком случае мне сложно представить себе задачу, которую нельзя решить с помощью XSLT достаточно тривиальным путем).
XPath - Адресация внутри документа. Аналог конструкций вложенности, псевдоклассов и проч. в CSS. Опять же, значительно шире по функционалу - в том же CSS нельзя, например, указать, что "у этого бокса должна быть такая же ширина, как и того вон слева". Для XPath подобные ссылки - простейшая задача.
XSL-FO - правила формирования (отображения) XML-документа. Фактически тот же парсер, но в отличие от XSLT он преобразовывает документ не к другому формату, а задает именно отображение на экране. Он полностью реализует идею "отделение содержимого от представления", в отличие от CSS. Скажем так, XSL-FO - это полноценный язык программирования со всеми циклами, if'ами, переменными и прочим, но только значительно упрощенный, так как ограничен отображением на экран в Вебе. Очень похож по сути на CSS - те же боксы, позиционирование, float'ы и прочее, но только XML-FO гораздо более широкие "полномочия". Это все же не таблица стилей, а язык программирования со всеми отсюда вытекающими. Допустим, XML-документ описывает список mp3. Чтобы получить полноценную веб-страницу нам совершенно не нужно дополнительно в XML-документе описыть меню, которое должно присутствовать и все прочие кнопочки, что необходимо при работе в связке HTML+CSS. XSL-FO сам обо всем позаботится.
Не знаю, смог ли я убедить, но XSL - это круто. Я сам не большой знаток, но мне приходилось делать пару проектов на чистом XML+XSL. Когда опять вернулся к повседневному CSS было такое ощущение, что мне сломали ногу и выдали костыли - настолько колоссальная разница в уровне технологий. Разница между HTML+CSS и XML+XSL примерно такая же, как разница между табличной и блочной версткой, только в случае XSL отсутствуют многочисленные проблемы CSS вроде убогой адресации, невозможностью изменить порядок следования боксов, сослаться на атрибуты (возможно, введенные мной самим и не определенные в HTML), создать новый бокс, вставить в страницу отформатированный все той же CSS'кой кусок данных из другой страницы и многое многое другое.
И это я только вкратце рассказал про XSL. А ведь есть еще XLink, XQuery, XPointer, XSD, XML DOM, XForms, SOAP, RDF, E4X, MathML и проч. и проч. и проч. Про каждую технологию можно написать отдельный рассказ. Говорить, что XML не будет работать в вебе значит сильно заблуждаться. Если браузеры не поддерживают XML-технологии, то это не значит, что они не используются. В Студии Лебедева, например, все страницы пишутся на связке XML+XSLT, просто парсинг происходит на стороне сервера. Intenet Explorer уже давно имеет полную поддержку XSLT, но оно там не используется, так как эту технологию игнорируют Opera и Gecko (и мне в общем-то понятно почему MS в ответку игнорирует CSS2). Повсеместно используются WAP и RSS 2.0, которые тоже являются XML-технологией. Практически все девелоперкие программы для серьезной разработки хранят свои данные в XML и именно для того, чтобы не ограничеваться какой-то одной областью их применения, а иметь возможность быстро с помощью XSL преобразовать их к десятку различных видов (например, из одного такого XML-документа можно сформировать и bugtracker, и презентацию, и version history, и отчет для начальства). XML имеет самую широкую поддержку (не считая браузеров) - Apache, Perl, PHP, .Net Framework 2.0, MPEG, ISS, InfoPath, JPEG, WikiMedia - назови любую технологию и я скажу тебе, зачем там XML и как оно поддерживается. Даже AIML (язык разметки "знаний" для искусственного интеллекта; не будем спорить о целесообразности - просто примем как факт отсутствие альтернатив) является полностью XML-совместимым. При таком глобальном проникновении XML рано или поздно сопротивление Opera-Gecko просто обязано рухнуть, к тому же принципы XML дейстивтельно имеют очень много плюсов. Конечно, XML-технологии еще зачастую далеки от идеала, но оно и понятно - технология новая. Однако альтернативы-то нет. Каждый, кто хоть одну страницу сверстал в XML+XSLT в эту технологию влюбляется.
Это если в двух словах. |
|