Функция date-time () в XSLT неизвестна в ALTOVA XmlSpy - PullRequest
2 голосов
/ 14 марта 2012

Добрый день!Я скачал пробную версию Altova XMLSpy, установил FOP 0.95 и попытался выполнить преобразование XSLT (версия 1.0).Мой шаблон действителен, но во время преобразования происходит сбой в строке, содержащей функцию "date-time ()":

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format" xmlns:dt="http://exslt.org/dates-and-times" xmlns:exsl="http://exslt.org/common" extension-element-prefixes="dt exsl">
<xsl:output method="html" encoding="utf-8" indent="yes"/>

<xsl:template match="/">
    <html>
        <body>
            <xsl:value-of select="dt:date-time()"/>
        </body>
    </html>
</xsl:template>

</xsl:stylesheet>

Сообщение об ошибке:

Error in XPath expression
Unknown function - Name and number of arguments do not match any function signature in
the static context - 'http://exslt.org/dates-and-times:date-time'

Пожалуйста, как сделатьэта функция доступна?Я уверен, что эта функция существует.Шаблон работает, например, в этом онлайн-тестере XSLT: http://markbucayan.appspot.com/xslt/index.html

Заранее спасибо!Vojtech

ОБНОВЛЕНИЕ: Я установил SAXON 9 (HE и EE), настроил ALTOVA для его использования, но снова та же ошибка.

Ответы [ 3 ]

4 голосов
/ 14 марта 2012

Если вы используете Altova или saxon, вы можете использовать XSLT2, а не XSLT1, поэтому не нужно загружать расширения EXSLT, в xpath2 встроена эта функция

select="current-dateTime()"

http://www.w3.org/TR/xpath-functions/#func-current-dateTime

0 голосов
/ 30 июля 2013

Пожалуйста, используйте версию Altova xml spy 9, которая поддерживает XSL 2.0.

Спасибо, Aditya

0 голосов
/ 30 июля 2013
`<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:msxsl="urn:schemas-microsoft-com:xslt" extension-element-prefixes="msxsl" xmlns:local="urn:local>
<msxsl:script language="CSharp" implements-prefix="local">


public string dateTimeNow()
    {       
      return DateTime.Now.ToString("yyyy-MM-ddTHH:mm:ssZ"); 
    } 

</msxsl:script> </xsl:stylesheet>`

и затем используйте его вот так <xsl:param name="dnes" select="local:dateTimeNow()"/>

...