<?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>Ксдыщь! &#187; xslt</title>
	<atom:link href="http://flack.ru/tag/xslt/feed/" rel="self" type="application/rss+xml" />
	<link>http://flack.ru</link>
	<description>Дилетантские заметки про XSLT/XPath, HTML/CSS и всякую фигню</description>
	<lastBuildDate>Sun, 13 Feb 2011 21:53:59 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.4</generator>
		<item>
		<title>Проверка на наличие текстового содержимого в элементе</title>
		<link>http://flack.ru/2010/12/23/check-no-text-in-element/</link>
		<comments>http://flack.ru/2010/12/23/check-no-text-in-element/#comments</comments>
		<pubDate>Thu, 23 Dec 2010 01:45:38 +0000</pubDate>
		<dc:creator>Flack</dc:creator>
				<category><![CDATA[XSLT/XPath]]></category>
		<category><![CDATA[Рецептарий]]></category>
		<category><![CDATA[xslt]]></category>

		<guid isPermaLink="false">http://flack.ru/?p=256</guid>
		<description><![CDATA[С детства известно: если сожрал конфеты, то заворачивать камешки в фантик &#8212; последнее дело. В данном случае разочаровывающий фантик выглядит примерно так: &#60;checks&#62; &#60;child&#62;&#60;/child&#62; &#60;child2&#62; &#60;grand&#62; &#60;/grand&#62; &#60;/child2&#62; &#60;child3&#62; &#60;grand&#62; &#60;grand attribute-we-dont-care-about="some value"&#62; &#60;grand&#62; &#60;/grand&#62; &#60;/grand&#62; &#60;/grand&#62; &#60;/child3&#62; &#60;child4&#62; &#60;grand&#62; &#60;grand attribute-we-dont-care-about="some value"&#62; &#60;grand&#62; 20 &#60;/grand&#62; &#60;/grand&#62; &#60;/grand&#62; &#60;/child4&#62; &#60;/checks&#62; Нас интересует только child 4, [...]]]></description>
			<content:encoded><![CDATA[<p>С детства известно: если сожрал конфеты, то заворачивать камешки в фантик &mdash; последнее дело.</p>
<p>В данном случае разочаровывающий фантик выглядит примерно так:</p>
<pre><code>&lt;checks&gt;
    &lt;child&gt;&lt;/child&gt;
    &lt;child2&gt;
        &lt;grand&gt;    &lt;/grand&gt;
    &lt;/child2&gt;
    &lt;child3&gt;
        &lt;grand&gt;
            &lt;grand attribute-we-dont-care-about="some value"&gt;
                &lt;grand&gt;

                &lt;/grand&gt;
            &lt;/grand&gt;
        &lt;/grand&gt;
    &lt;/child3&gt;
    &lt;child4&gt;
        &lt;grand&gt;
            &lt;grand attribute-we-dont-care-about="some value"&gt;
                &lt;grand&gt;
                    20
                &lt;/grand&gt;
            &lt;/grand&gt;
        &lt;/grand&gt;
    &lt;/child4&gt;
&lt;/checks&gt;</code></pre>
<p>Нас интересует только child 4, так как у него есть потомок, в значении которого есть что-то кроме вайтспейсов, а именно &#8220;20&#8243;. Конфета, другими словами. <a href="http://flack.ru/2010/12/23/check-no-text-in-element/#more-256" class="more-link">(more&#8230;)</a></p>
]]></content:encoded>
			<wfw:commentRss>http://flack.ru/2010/12/23/check-no-text-in-element/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Еще один пост про группировку в XSLT 1.0</title>
		<link>http://flack.ru/2010/11/19/yet-another-xsl-group/</link>
		<comments>http://flack.ru/2010/11/19/yet-another-xsl-group/#comments</comments>
		<pubDate>Thu, 18 Nov 2010 22:53:01 +0000</pubDate>
		<dc:creator>Flack</dc:creator>
				<category><![CDATA[XSLT/XPath]]></category>
		<category><![CDATA[Рецептарий]]></category>
		<category><![CDATA[xslt]]></category>

		<guid isPermaLink="false">http://flack.ru/?p=166</guid>
		<description><![CDATA[В этом посте мы рассмотрим, сюрприз, группировку посредством XSLT 1.0. Тема уже обжевана изрядно, но не лишать же мне вас удовольствия ознакомиться с ней и в этом уютном бложике. Допустим, с сервера пришел совершенно бесталанный XML. &#60;marks&#62; &#60;mark&#62;Buick&#60;/mark&#62; &#60;mark&#62;Citroen&#60;/mark&#62; &#60;mark&#62;Daewoo&#60;/mark&#62; &#60;mark&#62;Chery&#60;/mark&#62; &#60;mark&#62;Audi&#60;/mark&#62; &#60;mark&#62;Chevrolet&#60;/mark&#62; &#60;mark&#62;Alfa Romeo&#60;/mark&#62; &#60;mark&#62;BMW&#60;/mark&#62; &#60;mark&#62;Cadillac&#60;/mark&#62; &#60;mark&#62;Daihatsu&#60;/mark&#62; &#60;mark&#62;Aston Martin&#60;/mark&#62; &#60;mark&#62;Dodge&#60;/mark&#62; &#60;mark&#62;Bentley&#60;/mark&#62; &#60;mark&#62;Chrysler&#60;/mark&#62; &#60;/marks&#62; Мы [...]]]></description>
			<content:encoded><![CDATA[<p>В этом посте мы рассмотрим, сюрприз, группировку посредством XSLT 1.0. Тема уже обжевана изрядно, но не лишать же мне вас удовольствия ознакомиться с ней и в этом уютном бложике.</p>
<p>Допустим, с сервера пришел совершенно бесталанный XML.</p>
<pre><code>&lt;marks&gt;
    &lt;mark&gt;Buick&lt;/mark&gt;
    &lt;mark&gt;Citroen&lt;/mark&gt;
    &lt;mark&gt;Daewoo&lt;/mark&gt;
    &lt;mark&gt;Chery&lt;/mark&gt;
    &lt;mark&gt;Audi&lt;/mark&gt;
    &lt;mark&gt;Chevrolet&lt;/mark&gt;
    &lt;mark&gt;Alfa Romeo&lt;/mark&gt;
    &lt;mark&gt;BMW&lt;/mark&gt;
    &lt;mark&gt;Cadillac&lt;/mark&gt;
    &lt;mark&gt;Daihatsu&lt;/mark&gt;
    &lt;mark&gt;Aston Martin&lt;/mark&gt;
    &lt;mark&gt;Dodge&lt;/mark&gt;
    &lt;mark&gt;Bentley&lt;/mark&gt;
    &lt;mark&gt;Chrysler&lt;/mark&gt;
&lt;/marks&gt;
</code></pre>
<p>Мы хотим из него получить алфавитный список, группированный по первой букве и отсортированный в нужном порядке:</p>
<pre><code>&lt;alphabet-listing&gt;
    &lt;letter name="A"&gt;
        &lt;mark&gt;Alfa Romeo&lt;/mark&gt;
        &lt;mark&gt;Aston Martin&lt;/mark&gt;
        &lt;mark&gt;Audi&lt;/mark&gt;
    &lt;/letter&gt;
    &lt;letter name="B"&gt;
        &lt;mark&gt;Bentley&lt;/mark&gt;
        &lt;mark&gt;BMW&lt;/mark&gt;
        &lt;mark&gt;Buick&lt;/mark&gt;
    &lt;/letter&gt;
    &lt;letter name="C"&gt;
        &lt;mark&gt;Cadillac&lt;/mark&gt;
        &lt;mark&gt;Chery&lt;/mark&gt;
        &lt;mark&gt;Chevrolet&lt;/mark&gt;
        &lt;mark&gt;Chrysler&lt;/mark&gt;
        &lt;mark&gt;Citroen&lt;/mark&gt;
    &lt;/letter&gt;
    &lt;letter name="D"&gt;
        &lt;mark&gt;Daewoo&lt;/mark&gt;
        &lt;mark&gt;Daihatsu&lt;/mark&gt;
        &lt;mark&gt;Dodge&lt;/mark&gt;
    &lt;/letter&gt;
&lt;/alphabet-listing&gt;
</code></pre>
<p>Для решения задачи нам потребуется метод, броско именуемый <del>организованной преступной</del> группировкой Мюнха. <a href="http://flack.ru/2010/11/19/yet-another-xsl-group/#more-166" class="more-link">(more&#8230;)</a></p>
]]></content:encoded>
			<wfw:commentRss>http://flack.ru/2010/11/19/yet-another-xsl-group/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Разница между xsl:copy и xsl:copy-of</title>
		<link>http://flack.ru/2010/11/18/xslcopy/</link>
		<comments>http://flack.ru/2010/11/18/xslcopy/#comments</comments>
		<pubDate>Wed, 17 Nov 2010 22:20:10 +0000</pubDate>
		<dc:creator>Flack</dc:creator>
				<category><![CDATA[XSLT/XPath]]></category>
		<category><![CDATA[Рецептарий]]></category>
		<category><![CDATA[xslt]]></category>

		<guid isPermaLink="false">http://flack.ru/?p=136</guid>
		<description><![CDATA[Постараюсь с минимумом воды раскрыть сабж. Итак, разница такова: xsl:copy-of осуществляет глубокое копирование (deep copy), а xsl:copy поверхностное (shallow copy). Не особо непонятно? Заценим на примере. Создадим перечень самых отстойных рок-альбомов 21 столетия: &#60;albums criteria="worst"&#62; &#60;item id="1"&#62; &#60;name&#62;Chinese Democracy&#60;/name&#62; &#60;artist&#62;Guns N' Roses&#60;/artist&#62; &#60;length&#62;71:18&#60;/length&#62; &#60;label released="November 23, 2008"&#62;Geffen&#60;/label&#62; &#60;/item&#62; &#60;item id="2"&#62; &#60;name&#62;Dark Horse&#60;/name&#62; &#60;artist&#62;Nickelback&#60;/artist&#62; &#60;length&#62;43:38&#60;/length&#62; &#60;label [...]]]></description>
			<content:encoded><![CDATA[<p>Постараюсь с минимумом воды раскрыть сабж. Итак, разница такова: xsl:copy-of осуществляет глубокое копирование (deep copy), а xsl:copy поверхностное (shallow copy).</p>
<p>Не особо непонятно? Заценим на примере. </p>
<p>Создадим перечень самых отстойных рок-альбомов 21 столетия:</p>
<pre><code>&lt;albums criteria="worst"&gt;
    &lt;item id="1"&gt;
        &lt;name&gt;Chinese Democracy&lt;/name&gt;
        &lt;artist&gt;Guns N' Roses&lt;/artist&gt;
        &lt;length&gt;71:18&lt;/length&gt;
        &lt;label released="November 23, 2008"&gt;Geffen&lt;/label&gt;
    &lt;/item&gt;
    &lt;item id="2"&gt;
        &lt;name&gt;Dark Horse&lt;/name&gt;
        &lt;artist&gt;Nickelback&lt;/artist&gt;
        &lt;length&gt;43:38&lt;/length&gt;
        &lt;label released="November 18, 2008"&gt;EMI&lt;/label&gt;
    &lt;/item&gt;
    &lt;item id="3"&gt;
        &lt;name&gt;St. Anger&lt;/name&gt;
        &lt;artist&gt;Metallica&lt;/artist&gt;
        &lt;length&gt;75:01&lt;/length&gt;
        &lt;label released="June 5, 2003"&gt;Vertigo&lt;/label&gt;
    &lt;/item&gt;
&lt;/albums&gt;
</code></pre>
<p>Теперь создадим xsl, который в точности копирует этот XML в результирующее дерево. <a href="http://flack.ru/2010/11/18/xslcopy/#more-136" class="more-link">(more&#8230;)</a></p>
]]></content:encoded>
			<wfw:commentRss>http://flack.ru/2010/11/18/xslcopy/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Генерация URL’ов в XSLT 1.0</title>
		<link>http://flack.ru/2007/12/13/urls-generation-in-xslt-10/</link>
		<comments>http://flack.ru/2007/12/13/urls-generation-in-xslt-10/#comments</comments>
		<pubDate>Wed, 12 Dec 2007 22:42:34 +0000</pubDate>
		<dc:creator>Flack</dc:creator>
				<category><![CDATA[XSLT/XPath]]></category>
		<category><![CDATA[Рецептарий]]></category>
		<category><![CDATA[urls]]></category>
		<category><![CDATA[xml]]></category>
		<category><![CDATA[xslt]]></category>

		<guid isPermaLink="false">http://flack.ru/2007/12/13/urls-generation-in-xslt-10/</guid>
		<description><![CDATA[В первой версии XSLT самой слабой, пожалуй, остаётся работа со строками. Наиболее часто проблемы из-за этого возникают с генерацией URL&#8217;ов. Допустим, мы имеем страницу с адресом: http://example.com/index.xml?section=catalog&#38;cat-id=10&#38;item-id=1404&#38;item-unique-key=809124 Нам нужно, скажем, сгенерировать три ссылки: на главную страницу категории (cat-id), главную страницу (section) и независимую от категории страницу итема (item-id, item-unique-key). Способов много, я по-началу даже использовал [...]]]></description>
			<content:encoded><![CDATA[<p>В первой версии XSLT самой слабой, пожалуй, остаётся работа со строками.</p>
<p>Наиболее часто проблемы из-за этого возникают  с генерацией URL&#8217;ов. Допустим, мы имеем страницу с адресом:</p>
<pre><code>http://example.com/index.xml?section=catalog&amp;cat-id=10&amp;item-id=1404&amp;item-unique-key=809124</code></pre>
<p>Нам нужно, скажем, сгенерировать три ссылки: на главную страницу категории (cat-id), главную страницу (section) и независимую от категории страницу итема (item-id, item-unique-key).</p>
<p>Способов много, я по-началу даже использовал substring, но потом ради разнообразия включил моск и набросал небольшой шаблончик. Открытием для хоть сколько-то опытных разработчиков он не будет, так что будем считать это очередным self-note. <a href="http://flack.ru/2007/12/13/urls-generation-in-xslt-10/#more-91" class="more-link">(more&#8230;)</a></p>
]]></content:encoded>
			<wfw:commentRss>http://flack.ru/2007/12/13/urls-generation-in-xslt-10/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Комод</title>
		<link>http://flack.ru/2007/09/28/komodo/</link>
		<comments>http://flack.ru/2007/09/28/komodo/#comments</comments>
		<pubDate>Fri, 28 Sep 2007 13:44:00 +0000</pubDate>
		<dc:creator>Flack</dc:creator>
				<category><![CDATA[Свалка]]></category>
		<category><![CDATA[komodo]]></category>
		<category><![CDATA[xml]]></category>
		<category><![CDATA[xslt]]></category>
		<category><![CDATA[редакторы]]></category>

		<guid isPermaLink="false">http://flack.ru/2007/09/28/komodo/</guid>
		<description><![CDATA[Пользуясь случаем, выражаю своё уважение создателям Komodo Edit, который, после перехода на ubuntu, стал моим главным редактором на рабочей машине. Передаю так же, что автокомплит XML/XSL сосет вприсядку по сравнению с Altov&#8217;ой. Надо фигачить. Ну а тому, кто нарисовал темную подсветку синтаксиса, я готов пожертвовать почку. Всем привет.]]></description>
			<content:encoded><![CDATA[<p>Пользуясь случаем, выражаю своё уважение создателям <a href="http://www.activestate.com/Products/komodo_edit/">Komodo Edit</a>, который, после перехода на ubuntu, стал моим главным редактором на рабочей машине.</p>
<p>Передаю так же, что автокомплит XML/XSL сосет вприсядку по сравнению с Altov&#8217;ой. Надо фигачить.</p>
<p>Ну а тому, кто нарисовал темную подсветку синтаксиса, я готов пожертвовать почку.</p>
<p>Всем привет.</p>
]]></content:encoded>
			<wfw:commentRss>http://flack.ru/2007/09/28/komodo/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
	</channel>
</rss>

