IT-Expert
  IT-Expert / Веблог / Ключевые слова / XSLT
Авторизация
Логин:
Пароль:


 
Поиск по записям:

Ключевые слова:
Записей в блоге
 за 2015 год
 за 2014 год
 за 2013 год
 за 2012 год
 за 2011 год

     за 2010 год

       за 2009 год
       за 2008 год
       за 2007 год
       за 2006 год
       за 2005 год
      RSS лента Лента новостей IT-Expert 
      Лента подкастов IT-Expert IT-Expert audiopodcasts
      входит в:
      Web Development

      XSLT

      Не фича при использовании format-number

      12:17, 13 января 2006 ( )

      Частенько приходится отображать числа в денежном формате, так вот, format-number честно откусывает нули в дробной части, если мы пользуем конструкцию вроде этой:

      <xsl:value-of select="format-number(@cost, '###,###,###.##')"/>

      Поэтму делаем форматирование средствами языка, и не мучаем xslt.

       

      Расцветка таблицы "полосами" используя XSLT

      10:00, 22 июля 2005 ( )

      Всегда приятнеее смотреть, да и просто ориентироваться в данных когда дизайн таблицы выполнен в "полосатом" стиле.

      Следать это довольно просто. Имеем, к примеру, входной XML следующего вида:

      <test>
        <value>1</value>
        <value>2</value>
        <value>3</value>
      </test>

      и хотим получить из этого "полосатую" таблицу.

      Нам поможет XSLT преобразование следующего вида:

      <xsl:template match="test">
        <table class="simple" cellpadding="5" cellspacing="0" border="0">
        <xsl:for-each select="value">
         <xsl:variable name="c" select="position() mod 2+1"/>
          <tr>
            <td class="td{$c}"><xsl:value-of select="."/></td>
          </tr>
         </xsl:for-each>
         </table>
      </xsl:template>

      Кстати, в таблице стилей должно быть определено два стиля: .td1 и .td2 которые и будут означать цвета чередующихся строк.

      Здесь стоит обратить внимание на    <xsl:variable name="c" select="position() mod 2+1"/>,
      эта инструкция задает вычисление четности-нечетности на основе позиции элемента. Берем остаток от деления, + 1 для красоты, ибо возвращаемые значения остатка будут 0 и 1. А мы хотим 1 и 2 :) <td class="td{$c}"> будет динамически подставлять класс в ячейку.

      Вот и все :)

       

      О пользе функции XSLT format-number()

      09:46, 21 июля 2005 ( )

      Когда требуется особым образом отформатировать число, в нашем случае как
      12,123,234 для восприятия значений трафика, на помощь приходит функция XSLT
      format-number()
      в нашем случае была попользована как:

      <xsl:value-of select="format-number(bytes,'###,###,###,###'")"/>

      Результатом функции является нужное нам форматирование числа.
      Также можно использовать для отображения - не отображения дробной части после запятой+регулировать количество знаков.

       

      Многоязычные сайты, XML и XSLT

      13:47, 20 июня 2005 ( )

      функция lang

      Luzhnikovskiy | konst@design.ru 10.01.2003 17:48

      1. есть аттрибут, именумый xml:lang
      2. есть функция lang(), которая дает true/false в зависимости от того, совпадает ли ее аргумент со значением xml:lang данной ноды.
      3. как отмечено выше - можно передать параметр

      Имеем:
      <caption>
      <content xml:lang="ru">Заголовок</content>
      <content xml:lang="en">Title</content>
      </caption>
      Тогда просто трансформим по параметру:
      <xsl:apply-templates select="content[lang($langParam)]" />
      ну или типа того...

       

      Будущее web разработок

      16:01, 24 марта 2005 ( )
      Позволю себе немножко заглянуть в будущее WWW и сервисов, предоставляемых по протоколу http и направления их развития.

      Проблемы браузеров при взаимодействии с пользователем.
      На сегодняшний день мы имеем практически тот же HTML 4.01 стандарт, который был принят в далеких, по меркам ИТ, девяностых. Элементы форм <input> устраивают далеко не всех разработчиков, которые пишут что-то, что сложнее новостной ленты. Многие используют различные надстройки над встроенным в IE редактором(который Microsoft, кстати, официально и не доделали), что является в корне неправильным подходом к редактированию и публикации документа, данных. Единственно "правильной" реализацией идеи публикации web документа, на мой взгляд, является реализация Xopus, выполненная в виде HTA приложения с визуальным редактированием XML.

      Административный GUI интерфейс.
      Пользовательский интерфейс должен быть в первую очередь УДОБНЫМ для пользователя.

      .NET Smart Client, WebParts, SharePoint Portal Server, Frontpage 2003.

      Mozilla XUL
      http://www.mozilla.org/projects/xul/


      Самый "правильный" подход к публикации web-документов.
      Xopus
      http://www.xopus.com 

      Рекурсивное построение дерева из "плоского XML"

      14:58, 24 марта 2005 ( )

      Преобразование "плоского" XML в древовидный.
      С помощью этого форум пишется раз-два.
      И код в примере "пишем форум" сокращается до минимума.
      Исходный XML :
      <?xml version="1.0" encoding="windows-1251"?>
      <collection>
       <item text="test5" id="5" pid="3"/>
       <item text="test1" id="1" pid="0"/>
       <item text="test2" id="2" pid="0"/>
       <item text="test3" id="3" pid="1"/>
       <item text="test4" id="4" pid="2"/>
      </collection>
      Наш XSL :
      <?xml version="1.0" encoding="windows-1251"?>
      <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
      <xsl:output method="xml" encoding="windows-1251"/>
       <xsl:param name="topid" select="0"/>

           <xsl:template match="collection">
           <test>
                   <xsl:value-of select="."/>
                   <xsl:apply-templates select="item[@pid=$topid]">
          <xsl:with-param name="x" select="1"/>
          </xsl:apply-templates>
       </test>
           </xsl:template>

           <xsl:template match="item">
        <xsl:param name="x"/>
               <item id="{@id}" name="{@text}" pid="{@pid}" depth="{$x}">
                  <xsl:apply-templates select="//item[@pid=current()/@id]">
          <xsl:with-param name="x" select="$x+1"/>
         </xsl:apply-templates>
               </item>

           </xsl:template>

      </xsl:stylesheet>
      Получаем :
        <?xml version="1.0" encoding="windows-1251" ?>
       <test>
       <item id="1" name="test1" pid="0" depth="1">
              <item id="3" name="test3" pid="1" depth="2">
                   <item id="5" name="test5" pid="3" depth="3" />
               </item>
        </item>
        <item id="2" name="test2" pid="0" depth="1">
               <item id="4" name="test4" pid="2" depth="2" />
        </item>
        </test>

       

      преобразовать в таблицу по 3 ячейки в строку

      14:39, 21 марта 2005 ( )


      <xsl:template match="photos">
          <xsl:for-each select="photo[position() mod 3 = 1]">
              <tr>
                  <xsl:aplly-templates select=".|following-sibling::photo[position() &lt; 3]" />
              </tr>
          </xsl:for-each>
      </xsl:template>

      <xsl:template match="photo">
          <td>
              <xsl:value-of select="@title"/>
              <xsl:value-of select="@id"/>
          </td>
      </xsl:template>
      Автор: Luzhnikovskiy

       

      XSLT: Учим оси ;-)

      13:43, 21 марта 2005 ( )

      Luzhnikovskiy | konst@design.ru 20.04.2004 14:41


      <xsl:template match="/">
       <!-- тут будет путь... -->
       <!-- находим нужную страницу -->
       <xsl:apply-templates select="//Страница[@Ид = '1005']" mode="path-to-root" />
       <!-- путь есть... -->
      </xsl:template>

      <xsl:template match="Страница" mode="path-to-root">
       <!-- читаем доку по осям (XPath) -->
       <xsl:for-each select="ancestor-or-self::*">
        <!-- просили @Ид? получайте! -->
        <xsl:value-of select="@Ид" />
        <!-- ну и разделитель до кучи -->
        <xsl:text> | </xsl:text>
       </xsl:for-each>
      </xsl:template>

       
      © Максим Прокопов 2005-2016 О сервере