Какое-то древнее дерьмо

Живёт тупо потому, что за хостинг уплачено на годы вперед

Записи в разделе 'xslt'

Проверка на наличие текстового содержимого в элементе

23 декабря 2010 · XSLT/XPath, Рецептарий

С детства известно: если сожрал конфеты, то заворачивать камешки в фантик — последнее дело.

В данном случае разочаровывающий фантик выглядит примерно так:

<checks>
    <child></child>
    <child2>
        <grand>    </grand>
    </child2>
    <child3>
        <grand>
            <grand attribute-we-dont-care-about="some value">
                <grand>

                </grand>
            </grand>
        </grand>
    </child3>
    <child4>
        <grand>
            <grand attribute-we-dont-care-about="some value">
                <grand>
                    20
                </grand>
            </grand>
        </grand>
    </child4>
</checks>

Нас интересует только child 4, так как у него есть потомок, в значении которого есть что-то кроме вайтспейсов, а именно “20”. Конфета, другими словами. Читать дальше →

Еще один пост про группировку в XSLT 1.0

19 ноября 2010 · XSLT/XPath, Рецептарий

В этом посте мы рассмотрим, сюрприз, группировку посредством XSLT 1.0. Тема уже обжевана изрядно, но не лишать же мне вас удовольствия ознакомиться с ней и в этом уютном бложике.

Допустим, с сервера пришел совершенно бесталанный XML.

<marks>
    <mark>Buick</mark>
    <mark>Citroen</mark>
    <mark>Daewoo</mark>	
    <mark>Chery</mark>
    <mark>Audi</mark>
    <mark>Chevrolet</mark>
    <mark>Alfa Romeo</mark>
    <mark>BMW</mark>
    <mark>Cadillac</mark>
    <mark>Daihatsu</mark>
    <mark>Aston Martin</mark>
    <mark>Dodge</mark>
    <mark>Bentley</mark>
    <mark>Chrysler</mark>
</marks>

Мы хотим из него получить алфавитный список, группированный по первой букве и отсортированный в нужном порядке:

<alphabet-listing>
    <letter name="A">
        <mark>Alfa Romeo</mark>
        <mark>Aston Martin</mark>
        <mark>Audi</mark>
    </letter>
    <letter name="B">
        <mark>Bentley</mark>
        <mark>BMW</mark>
        <mark>Buick</mark>
    </letter>
    <letter name="C">
        <mark>Cadillac</mark>
        <mark>Chery</mark>
        <mark>Chevrolet</mark>
        <mark>Chrysler</mark>
        <mark>Citroen</mark>
    </letter>
    <letter name="D">
        <mark>Daewoo</mark>
        <mark>Daihatsu</mark>
        <mark>Dodge</mark>
    </letter>
</alphabet-listing>

Для решения задачи нам потребуется метод, броско именуемый организованной преступной группировкой Мюнха. Читать дальше →

Разница между xsl:copy и xsl:copy-of

18 ноября 2010 · XSLT/XPath, Рецептарий

Постараюсь с минимумом воды раскрыть сабж. Итак, разница такова: xsl:copy-of осуществляет глубокое копирование (deep copy), а xsl:copy поверхностное (shallow copy).

Не особо непонятно? Заценим на примере.

Создадим перечень самых отстойных рок-альбомов 21 столетия:

<albums criteria="worst">
    <item id="1">
        <name>Chinese Democracy</name>
        <artist>Guns N' Roses</artist>
        <length>71:18</length>
        <label released="November 23, 2008">Geffen</label>
    </item>
    <item id="2">
        <name>Dark Horse</name>
        <artist>Nickelback</artist>
        <length>43:38</length>
        <label released="November 18, 2008">EMI</label>
    </item>
    <item id="3">
        <name>St. Anger</name>
        <artist>Metallica</artist>
        <length>75:01</length>
        <label released="June 5, 2003">Vertigo</label>
    </item>
</albums>

Теперь создадим xsl, который в точности копирует этот XML в результирующее дерево. Читать дальше →

Генерация URL’ов в XSLT 1.0

13 декабря 2007 · XSLT/XPath, Рецептарий

В первой версии XSLT самой слабой, пожалуй, остаётся работа со строками.

Наиболее часто проблемы из-за этого возникают с генерацией URL’ов. Допустим, мы имеем страницу с адресом:

http://example.com/index.xml?section=catalog&cat-id=10&item-id=1404&item-unique-key=809124

Нам нужно, скажем, сгенерировать три ссылки: на главную страницу категории (cat-id), главную страницу (section) и независимую от категории страницу итема (item-id, item-unique-key).

Способов много, я по-началу даже использовал substring, но потом ради разнообразия включил моск и набросал небольшой шаблончик. Открытием для хоть сколько-то опытных разработчиков он не будет, так что будем считать это очередным self-note. Читать дальше →

Комод

28 сентября 2007 · Свалка

Пользуясь случаем, выражаю своё уважение создателям Komodo Edit, который, после перехода на ubuntu, стал моим главным редактором на рабочей машине.

Передаю так же, что автокомплит XML/XSL сосет вприсядку по сравнению с Altov’ой. Надо фигачить.

Ну а тому, кто нарисовал темную подсветку синтаксиса, я готов пожертвовать почку.

Всем привет.