На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
Модераторы: ANDLL
  
> XPath выражение в XSLT , не понимается explorer'ом
    Я только начинаю работать с xml/xslt. И у меня возникли вот такие проблемы.
    Имеется XML файл:
    ExpandedWrap disabled
      <?xml version="1.0" encoding="windows-1251"?>
      <?xml-stylesheet type='text/xsl' href='test_vir.xsl'?>
       
      <drwebvirustop period="24" top="5" updatedutc="2006-05-14 08:02:01">
      <item>
      <vname>Win32.HLLM.Perf</vname>
      <place>1</place>
      <percents>28.7912969678266</percents>
      </item>
      <item>
      <vname>Win32.HLLM.MyDoom</vname>
      <place>2</place>
      <percents>24.9172131779955</percents>
      </item>
      <item>
      <vname>Win32.HLLM.Netsky</vname>
      <place>3</place>
      <percents>17.2042280688219</percents>
      </item>
      <item>
      <vname>Trojan.Bankfraud.272</vname>
      <place>4</place>
      <percents>13.3539078774786</percents>
      </item>
      <item>
      <vname>Win32.HLLM.Beagle</vname>
      <place>5</place>
      <percents>5.23539850320191</percents>
      </item>
      </drwebvirustop>

    И я обрабарываю его вот таким xslt-преобразованием - строю табличку:
    ExpandedWrap disabled
      <?xml version="1.0" encoding="windows-1251"?>
      <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/TR/WD-xsl">
       
      <xsl:template match="/">
       
        <table border="1">
          <td colspan="3">
          <p align="center">
          <b>Топ-<xsl:value-of select="drwebvirustop/@top"/></b> на
          <b><xsl:value-of select="drwebvirustop/@updatedutc"/>
          (<xsl:value-of select="drwebvirustop/@period"/>h.)</b>
          </p>
          </td>
       
          <xsl:apply-templates select="//item"/>
        </table>
       
      </xsl:template>
       
      <xsl:template match="item">
       
        <tr>  
          <td>
            [B]<xsl:value-of select="place"/>.[/B]
          </td>
          <td>
            <b><xsl:value-of select="vname"/></b>
          </td>
          <td>
              
            <xsl:value-of select="percents"/> %
          </td>
        </tr>
       
      </xsl:template>
       
       
      </xsl:stylesheet>

    1я проблема) Когда открываю xml эксплорером - ok, когда firefox'ом - получаю сообщение
    Ошибка загрузки таблицы стилей: Ошибка разбора таблицы стилей XSLT.
    2я проблема) Когда я пробую использовать XPath выражение в селекте, например
    ExpandedWrap disabled
      <xsl:value-of select="count(place)"/>.

    получаю сообщение
    Неизвестный метод. -->count(place<--)
    Что не так. Если можно, помогите со второй проблемой в свете того, что хочу уменьшить к-во знаков в процентах.
      Цитата belochub @
      Что не так
      Попробуй использовать другой namespace в xsl-файле, например:
      ExpandedWrap disabled
        <xsl:stylesheet     version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
      С таким xmlns у меня никогда проблем не было и твой пример правильно обрабатывается (в том числе и <xsl:value-of select="count(place)"/>)
      Цитата belochub @
      хочу уменьшить к-во знаков в процентах
      Используй функцию format-number(value,'pattern'):
      ExpandedWrap disabled
        <xsl:value-of select="format-number(percents,'#.00')"/> %
        Спасибо.
        Что интересно, после изменеия namespace файл стал открываться firefox'ом (как простой текст). Но перестал открываться explorer'ом. После добавления
        ExpandedWrap disabled
          <xsl:output method="html" encoding="windows-1251"/>

        firefox стал отображать таблицу (эксплорер - как раньше(в смысле, не открывает <_< )).
        Сообщение отредактировано: belochub -
          <xsl:output> надо всегда использовать, когда хочешь получить данные в сериализованном виде.
          Цитата belochub @
          эксплорер - как раньше(в смысле, не открывает)
          Странно, я только эксплорером и проверяла - все работает. А версия IE какая?
            Цитата silentium @
            А версия IE какая?


            5.0
              Цитата belochub @
              5.0
              У IE 5.0 встроенный xslt-процессор, который использует свой диалект XSLT (как раз тот, который ты вначале использовал - WD-xsl). Этот диалект отличается от спецификации XSLT, поэтому и не работает (если ссылаться на http://www.w3.org/1999/XSL/Transform). Поэтому для IE скачай и установи MSXML
                Цитата silentium @
                Цитата (belochub @ Сегодня, 12:36)
                5.0
                У IE 5.0 встроенный xslt-процессор, который использует свой диалект XSLT (как раз тот, который ты вначале использовал - WD-xsl). Этот диалект отличается от спецификации XSLT, поэтому и не работает (если ссылаться на http://www.w3.org/1999/XSL/Transform). Поэтому для IE скачай и установи MSXML


                Поставил 6й эксполорер - работает ;)
                0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                0 пользователей:


                Рейтинг@Mail.ru
                [ Script execution time: 0,0290 ]   [ 15 queries used ]   [ Generated: 28.04.24, 04:55 GMT ]