На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
Дорогие друзья! Поздравляем вас с днём Победы!
msm.ru
Модераторы: ANDLL
  
> XSL & Date(Now)
    Есть ли в XSL аналог функций Now или GetDate()?
    Задесь http://www.w3.org/TR/xpath-functions/#func-subtract-dates ничего не нашёл.
      Цитата MIF @
      Задесь http://www.w3.org/TR/xpath-functions/#func-subtract-dates ничего не нашёл.

      http://www.w3.org/TR/xpath-functions/#func-current-dateTime ?
        Не получается запустить функцию. Использую такой stylesheet:
        ExpandedWrap disabled
           <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"  version="2.0">
            <xsl:output  method="xml" indent="yes" omit-xml-declaration="yes"/>
               <yyy>
                  <xsl:value-of  select="current-date()"/>
               </yyy>
            </xsl:template>
          </xsl:stylesheet>

        При попытке трансформации получаю ошибку: 'current-date' is not a valid XSLT or XPath function.

        Чего не так?
          XML-IN
          ExpandedWrap disabled
            <aaa/>

          XSL
          ExpandedWrap disabled
                
            <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0">
             <xsl:output
               method="xml"
               indent="yes"
               omit-xml-declaration="yes"
             />
             <xsl:template  match="/aaa">
                 <xxx>
                     <xsl:value-of  select="current-dateTime()"/>
                 </xxx>
                 <yyy>
                     <xsl:value-of  select="current-date()"/>
                 </yyy>
                 <zzz>
                     <xsl:value-of  select="current-time()"/>
                 </zzz>
              </xsl:template>
            </xsl:stylesheet>

          XML-OUT
          ExpandedWrap disabled
            <xxx>2005-12-13T14:13:28.443+01:00</xxx>
            <yyy>2005-12-13+01:00</yyy>
            <zzz>14:13:28.443+01:00</zzz>


          http://www.zvon.org/xxl/XSL-Ref/Tutorials/Date-Time/dt1.html

          Все работает. Вообще реализация функций сильно зависит от XSLT-процессора.
          Сообщение отредактировано: inkoGnitoo -
            Цитата inkoGnitoo @
            реализация функций сильно зависит от XSLT-процессора

            Пробовал встроенный в .Net 1.1. XSLT-процессор и (на другом компутере) msxsl.exe. В обоих случаях вываливается ошибка.
              Решил задачу с использованием шарпа.
              ExpandedWrap disabled
                ...
                  <msxsl:script language="c#" implements-prefix="mm">
                    public System.DateTime getCurrentDate()
                    {
                   return DateTime.Now;
                    }
                  </msxsl:script>
                  <xsl:template  match="/">
                    <root>
                      <yyy>
                        <xsl:value-of select="mm:getCurrentDate()"/>
                ...

              Так и не понял, почему нативные функции не исполняются. :wall:
                Все дело в том что эти функции относятся XPath2.0, вот они у вас и не работают.
                  inkoGnitoo, какие надо сделать измененния, чтобы функции XPath2.0 заработали?
                    Знаеш я с MS-парсерами не работал. Но выход это написать расширение, например для xsltproc(процессор основанный на libxml2) есть SDK для написания расширений, если твоя задача позволяет тебе пользовать C# то твой выхлд тоже неплох.
                    0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                    0 пользователей:


                    Рейтинг@Mail.ru
                    [ Script execution time: 0,0771 ]   [ 15 queries used ]   [ Generated: 12.05.24, 02:08 GMT ]