<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Chase Your Dreams! &#187; XML</title>
	<atom:link href="http://sunchaser.info/category/it/xml/feed" rel="self" type="application/rss+xml" />
	<link>http://sunchaser.info</link>
	<description>Christian Archer</description>
	<lastBuildDate>Fri, 18 May 2012 11:42:41 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>Psi Options &#8211;&gt; Jabber Roster Utility (XSLT)</title>
		<link>http://sunchaser.info/2009/08/13/psi-options-jabber-roster-utility-xslt.html</link>
		<comments>http://sunchaser.info/2009/08/13/psi-options-jabber-roster-utility-xslt.html#comments</comments>
		<pubDate>Thu, 13 Aug 2009 22:13:26 +0000</pubDate>
		<dc:creator>SunChaser</dc:creator>
				<category><![CDATA[Jabber]]></category>
		<category><![CDATA[XML]]></category>
		<category><![CDATA[jabber roster utility]]></category>
		<category><![CDATA[psi]]></category>
		<category><![CDATA[xslt]]></category>

		<guid isPermaLink="false">http://www.sunchaser.info/?p=844</guid>
		<description><![CDATA[Сервер с моим основным аккаунтом лёг. Видимо, наконец решил оправдать своё имя — unstable.nl Соответственно встал вопрос о переносе контактов на новый сервер. Чем это можно сделать? Конечно же Jabber Roster Utility, чем же еще? Но! JRE сначала должен получить контакты со старого, а сервер-то лежит. Ростер, конечно же, скеширован клиентом, коим у меня является [...]]]></description>
			<content:encoded><![CDATA[<p>Сервер с моим основным аккаунтом лёг. Видимо, наконец решил оправдать своё имя — unstable.nl</p>
<p>Соответственно встал вопрос о переносе контактов на новый сервер. Чем это можно сделать? Конечно же Jabber Roster Utility, чем же еще? Но! JRE сначала должен получить контакты со старого, а сервер-то лежит. Ростер, конечно же, скеширован клиентом, коим у меня является Psi. Но формат-то там неподходящий! Если перебивать ручками, то проще покажется добавить ручками же контакты прямо в клиенте. Не вариант.</p>
<p>Сначала в голову полезла шальная мысль написать парсер, но она была сразу отброшена. Psi хранит настройки в XML, a значит можно поступить проще.</p>
<p>Возьмем нужный нам файл настроек: %psidatadir%/profiles/%profilename%/accounts.xml и применим к нему xslt-стиль. Стиль этот очень прост:</p>
<blockquote><p>&lt;?xml version=&#8221;1.0&#8243; encoding=&#8221;UTF-8&#8243;?&gt;</p>
<p>&lt;xsl:stylesheet version=&#8221;1.0&#8243; xmlns:xsl=&#8221;http://www.w3.org/1999/XSL/Transform&#8221; xmlns=&#8221;http://psi-im.org/options&#8221;&gt;<br />
&lt;xsl:output method=&#8221;text&#8221;/&gt;</p>
<p>&lt;xsl:template match=&#8221;/accounts/accounts/*&#8221;&gt;<br />
Account &lt;xsl:value-of select=&#8221;jid&#8221;/&gt;&lt;xsl:apply-templates select=&#8221;roster-cache&#8221;/&gt;<br />
&lt;/xsl:template&gt;</p>
<p>&lt;xsl:template match=&#8221;roster-cache/*&#8221;&gt;+,&lt;xsl:value-of select=&#8221;jid&#8221;/&gt;,&lt;xsl:value-of select=&#8221;name&#8221;/&gt;,none,&lt;xsl:value-of select=&#8221;groups/item&#8221;/&gt;&lt;/xsl:template&gt;</p>
<p>&lt;/xsl:stylesheet&gt;</p></blockquote>
<p>В результате мы получим ростеры всех прописанных туда аккаунтов в формате, который хавает JRE</p>
<blockquote><p>Account jid@domain.tld<br />
+,elem1@dom1.tld,Element 1,none,Group<br />
+,elem2@dom2.tld,Element 2,none,Group<br />
+,elem3@dom3.tld,Element 3,none,Group 2</p>
<p>Account jid2@domain2.tld<br />
+,elem1@dom1.tld,Element 1,none,<br />
+,elem4@dom4.tld,Element 2,none,</p></blockquote>
<p>Вуаля, кормим JRE.</p>
<p><strong>Как применить стиль?</strong></p>
<p>Самый простой способ — браузер. Открываем accounts.xml (рекомендую сделать копию и издеваться над ней, а не резать по живому), вписываем первой строкой</p>
<blockquote><p>&lt;?xml-stylesheet type=&#8221;text/xsl&#8221; href=&#8221;accounts-xslt.xml&#8221;?&gt;</p></blockquote>
<p>копируем стиль в папку с этим accounts.xml и открываем accounts.xml в браузере.</p>
<p>Если не сработает, удаляем из accounts.xml строку &lt;!DOCTYPE accounts&gt;  и элемент xmlns=&#8221;http://psi-im.org/options&#8221;</p>
<p>Знаю, что не по фэн-шую, но мне почему-то помогло.</p>
<p><strong>Скачать стиль:</strong> <a href="http://misc.sunchaser.info/software/psi2jre.zip">http://misc.sunchaser.info/software/psi2jre.zip</a></p>
]]></content:encoded>
			<wfw:commentRss>http://sunchaser.info/2009/08/13/psi-options-jabber-roster-utility-xslt.html/feed</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>И коротко о XSLT и браузерах</title>
		<link>http://sunchaser.info/2009/07/16/i-korotko-o-xslt-i-brauzerax.html</link>
		<comments>http://sunchaser.info/2009/07/16/i-korotko-o-xslt-i-brauzerax.html#comments</comments>
		<pubDate>Thu, 16 Jul 2009 17:35:46 +0000</pubDate>
		<dc:creator>SunChaser</dc:creator>
				<category><![CDATA[Web Development]]></category>
		<category><![CDATA[XML]]></category>
		<category><![CDATA[arora]]></category>
		<category><![CDATA[internet explorer]]></category>
		<category><![CDATA[xslt]]></category>

		<guid isPermaLink="false">http://www.sunchaser.info/?p=821</guid>
		<description><![CDATA[Работает везде, кроме Arora (если точнее, виноват сам QtWebkit) Ахда, в любых XML документах нельзя указывать DTD, иначе Internet Explorer пойдет по указанному адресу его скачать. Всё бы ничего, но он этим ddos-ит www.w3.org, поэтому там забанен. А значит, он просто вместо документа покажет ошибку]]></description>
			<content:encoded><![CDATA[<p>Работает везде, кроме Arora (если точнее, виноват сам QtWebkit)</p>
<p>Ахда, в любых XML документах нельзя указывать DTD, иначе Internet Explorer пойдет по указанному адресу его скачать. Всё бы ничего, но он этим ddos-ит www.w3.org, поэтому там забанен. А значит, он просто вместо документа покажет ошибку</p>
]]></content:encoded>
			<wfw:commentRss>http://sunchaser.info/2009/07/16/i-korotko-o-xslt-i-brauzerax.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>XSLT и поисковики</title>
		<link>http://sunchaser.info/2009/07/16/xslt-i-poiskoviki.html</link>
		<comments>http://sunchaser.info/2009/07/16/xslt-i-poiskoviki.html#comments</comments>
		<pubDate>Thu, 16 Jul 2009 17:35:31 +0000</pubDate>
		<dc:creator>SunChaser</dc:creator>
				<category><![CDATA[Web Development]]></category>
		<category><![CDATA[XML]]></category>
		<category><![CDATA[aport]]></category>
		<category><![CDATA[bing]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[rambler]]></category>
		<category><![CDATA[xslt]]></category>
		<category><![CDATA[yahoo]]></category>
		<category><![CDATA[yandex]]></category>

		<guid isPermaLink="false">http://www.sunchaser.info/?p=820</guid>
		<description><![CDATA[Провел давно обещаное исследование о том как сайты на основе XSLT индексируются поисковиками. Проверялось на примере avalon.com.ru 1) Google Индексирует, игнорируя стили. Отчасти даже лучше — оформление не попадает в индекс и не мешается при поиске, но для полноты индексации надо делать sitemap. 2) Yahoo! Применяет стиль и индексирует результат. Вах! То, что надо. 3) [...]]]></description>
			<content:encoded><![CDATA[<p>Провел <a href="http://sunchaser.info/2009/01/03/xslt-and-web">давно обещаное исследование</a> о том как сайты на основе XSLT индексируются поисковиками.</p>
<p>Проверялось на примере <a href="http://www.avalon.com.ru/">avalon.com.ru</a></p>
<p><strong>1) Google</strong></p>
<p>Индексирует, игнорируя стили. Отчасти даже лучше — оформление не попадает в индекс и не мешается при поиске, но для полноты индексации надо делать sitemap.</p>
<p><strong>2) Yahoo!</strong></p>
<p>Применяет стиль и индексирует результат. Вах! То, что надо.</p>
<p><strong>3) Yandex, Rambler, Aport, Microsoft Bing, Baidu</strong></p>
<p>Никак. Стыд и позор!</p>
<p>Что ж&#8230; к сожалению, такой технически удачный подход к созданию сайтов слегка нежизнеспособен.</p>
<p>Правда, выход есть — прогонять XML через серверный скрипт, который при необходимости (для поисковиков или неподдерживаемых браузеров) будет применять стиль прямо на сервере, а иначе просто отдавать чистый XML.</p>
]]></content:encoded>
			<wfw:commentRss>http://sunchaser.info/2009/07/16/xslt-i-poiskoviki.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>XSLT and Web</title>
		<link>http://sunchaser.info/2009/01/03/xslt-and-web.html</link>
		<comments>http://sunchaser.info/2009/01/03/xslt-and-web.html#comments</comments>
		<pubDate>Sat, 03 Jan 2009 21:26:51 +0000</pubDate>
		<dc:creator>SunChaser</dc:creator>
				<category><![CDATA[Web Development]]></category>
		<category><![CDATA[XML]]></category>
		<category><![CDATA[xslt]]></category>

		<guid isPermaLink="false">http://www.sunchaser.info/?p=616</guid>
		<description><![CDATA[XSLT (Extensible Stylesheet Language Transformations) — часть спецификации XSL, задающая язык преобразований XML-документов. Спецификация XSLT является рекомендацией W3C.[1] Обычно XSLT в вебе используется для преобразования XML-документов в XHTML на стороне сервера. В результате получается обычная HTML-ка, которая передается в браузер. Это не интересно и никак не отражает некоторых прелестей XSLT-преобразования. Работа с XML и, в [...]]]></description>
			<content:encoded><![CDATA[<p>XSLT (Extensible Stylesheet Language Transformations) — часть спецификации XSL, задающая язык преобразований XML-документов. Спецификация XSLT является рекомендацией W3C.<a href="http://ru.wikipedia.org/wiki/XSLT">[1]</a></p>
<p>Обычно XSLT в вебе используется для преобразования XML-документов в XHTML на стороне сервера. В результате получается обычная HTML-ка, которая передается в браузер. Это не интересно и никак не отражает некоторых прелестей XSLT-преобразования.</p>
<p>Работа с XML и, в частности, XSLT-преобразование является стандартной функцией современных браузеров. Почему бы не заюзать преобразования на стороне клиента?</p>
<p>Выглядит, скажем, наша главная страница как</p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1"><span class="sc3"><span class="re1">&lt;page</span> <span class="re0">title</span>=<span class="st0">&quot;Главная&quot;</span><span class="re2">&gt;</span></span></div>
</li>
<li class="li1">
<div class="de1"><span class="sc3"><span class="re1">&lt;hello</span><span class="re2">/&gt;</span></span></div>
</li>
<li class="li1">
<div class="de1"><span class="sc3"><span class="re1">&lt;search</span><span class="re2">/&gt;</span></span></div>
</li>
<li class="li1">
<div class="de1"><span class="sc3"><span class="re1">&lt;newsblock<span class="re2">&gt;</span></span></span></div>
</li>
<li class="li2">
<div class="de2"><span class="sc3"><span class="re1">&lt;news</span> <span class="re0">date</span>=<span class="st0">&quot;2009-01-02&quot;</span> <span class="re0">link</span>=<span class="st0">&quot;/page1.xml&quot;</span><span class="re2">&gt;</span></span>Новость<span class="sc3"><span class="re1">&lt;/news<span class="re2">&gt;</span></span></span></div>
</li>
<li class="li1">
<div class="de1"><span class="sc3"><span class="re1">&lt;news</span> <span class="re0">date</span>=<span class="st0">&quot;2009-01-12&quot;</span> <span class="re0">link</span>=<span class="st0">&quot;/page2.xml&quot;</span><span class="re2">&gt;</span></span>Еще новость<span class="sc3"><span class="re1">&lt;/news<span class="re2">&gt;</span></span></span></div>
</li>
<li class="li1">
<div class="de1"><span class="sc3"><span class="re1">&lt;/newsblock<span class="re2">&gt;</span></span></span></div>
</li>
<li class="li1">
<div class="de1"><span class="sc3"><span class="re1">&lt;/page<span class="re2">&gt;</span></span></span></div>
</li>
</ol>
</div>
<p>И уже в браузере формируется в приветствие, блок поиска и блок новостей и оборачивается в оформление сайта.</p>
<p>Такой подход используется, например на сайте <a href="http://www.starcraft2.com">starcraft2.com</a> и сайте <a href="http://www.avalon.com.ru/">avalon.com.ru</a>, над которым я время от времени и колдую.</p>
<p>Посмотрим на достоинства и недостатки:</p>
<p>Достоинтсва:</p>
<ol>
<li>Разделение данных и представления. Это типа хорошо и этого всегда добиваются</li>
<li>Снижение нагрузки на сервер. Точнее, на вебовский фронт-энд, так как ему уже не надо по куче шаблонов формировать удобочитаемое представление</li>
<li>Снижение трафика. Шаблоны достаточно скачать один раз и закешировать. Собственно, тот же эффект, что и от CSS</li>
</ol>
<p>Недостатки:</p>
<ol>
<li>Требуется более высокое качество кода. Корявый HTML коряво отображается. <strong>Корявый XML не отображается вообще</strong> (на самом деле это достоинство, но моду диктуют &#8220;индусы&#8221; и другие быдлокодеры)</li>
<li>Нагрузка на клиента. Современные браузеры на XSLT-страничках заметно подтормаживают, особенно, разумеется, Internet Explorer. Тонкий клиент как бы &#8220;толстеет&#8221;</li>
<li>Browser Wars. Стоит просто у валидной XHTML-странички сменить тип с text/html на text/xml, сразу же всплывают какие-то странные несовместимости у браузеров. А, например, открытые реализации KHTML/WebKit (напр, Konqueror и Arora) вообще XSLT не понимают</li>
</ol>
<p>Непонятки:</p>
<ol>
<li>Поисковики. Как поисковики относятся к XSLT? А хз. Требует дополнительного исследования</li>
</ol>
<p>В целом, снятие нагрузки с интерпретатора на сервере и с моих мозгов перевешивает для меня минусы подхода. В скором будущем напишу подробнее о поддержке браузерами и, если что узнаю, поисковиками</p>
]]></content:encoded>
			<wfw:commentRss>http://sunchaser.info/2009/01/03/xslt-and-web.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

