Может ли XSLT вставить текущую дату?



2 Answers

Для анализатора MSXML попробуйте следующее:

<xsl:stylesheet version="1.0"
                xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                xmlns:msxsl="urn:schemas-microsoft-com:xslt"
                xmlns:my="urn:sample" extension-element-prefixes="msxml">

    <msxsl:script language="JScript" implements-prefix="my">
       function today()
       {
          return new Date(); 
       } 
    </msxsl:script> 
    <xsl:template match="/">

        Today = <xsl:value-of select="my:today()"/>

    </xsl:template> 
</xsl:stylesheet>

Также прочитайте скрипт стилей XSLT, используя скрипт msxsl: скрипт и расширение XSLT с помощью JScript, C # и Visual Basic .NET.

Question

Программа, которую мы используем в моем офисе, экспортирует отчеты, переведя XML-файл, который он экспортирует с XSLT-файлом в XHTML. Я переписываю XSLT, чтобы изменить форматирование и добавить дополнительную информацию из исходного XML-файла.

Я хотел бы включить дату, когда файл был создан в окончательном отчете. Но текущая дата / время не включена в исходный файл XML, и я не могу контролировать, как создается файл XML. Кажется, что в XSLT нет никаких функций построения даты, которые вернут текущую дату.

Кто-нибудь знает, как я могу включить текущую дату во время преобразования XSLT?




...
    xmlns:msxsl="urn:schemas-microsoft-com:xslt"
    xmlns:local="urn:local" extension-element-prefixes="msxsl">

    <msxsl:script language="CSharp" implements-prefix="local">
        public string dateTimeNow()
        {       
          return DateTime.Now.ToString("yyyy-MM-ddTHH:mm:ssZ"); 
        } 
    </msxsl:script>  
...
    <xsl:value-of select="local:dateTimeNow()"/>



Поздний ответ, но мое решение работает в Eclipse XSLT. Eclipse использует XSLT 1 во время написания этой статьи. Вы можете установить движок XSLT 2, такой как Saxon. Или вы можете использовать решение XSLT 1 ниже, чтобы вставить текущую дату и время.

<xsl:value-of select="java:util.Date.new()"/>

Это вызовет класс данных Java для вывода даты. Это не сработает, если вы также не поместите следующее определение «java:» в тэг <xsl:stylesheet> .

<xsl:stylesheet [...snip...]
         xmlns:java="java"
         [...snip...]>

Надеюсь, это поможет кому-то. Этот простой ответ мне трудно найти.




Related



Tags

xslt   xhtml