Я пытаюсь реализовать динамическую оценку выражения с использованием расширения Exslt dyn: оценивать ($ expression) в XSLT1.0, но я Получается ошибка ниже.
BW-XML-100006 Job-261000 Error in [Transform_MCIN_XML/Dyn.process/Transform XML]
The [net.sf.saxon.trans.XPathException] occurred during XSLT transformation:
net.sf.saxon.trans.XPathException:
Cannot find a matching 1-argument function named {http://exslt.org/dynamic}evaluate()
caused by: ; SystemID: tibcr://; Line#: 6; Column#: -1
net.sf.saxon.trans.XPathException:
Cannot find a matching 1-argument function named {http://exslt.org/dynamic}evaluate()
Я могу сделать то же самое с помощью Saxon: оценки ($ ехрг) в Saxon-B XSLT 2.0 двигатель. Однако мне нужно сделать это в XSLT 1.0.
Как устранить эту ошибку и реализовать ее в XSLT 1.0 в Tibco BW?
Любые предложения будут высоко оценены.
спасибо.
Пример XSLT:
<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"
xmlns:dyn="http://exslt.org/dynamic"
extension-element-prefixes="dyn">
<xsl:variable name="expr" select="not(1=1)"/>
<xsl:template match="/">
<eval>
<xsl:value-of select="dyn:evaluate($expr)"/>
</eval>
</xsl:template>
</xsl:stylesheet>
Я не понимаю, почему вы хотите ограничить себя использованием XSLT 1.0 с расширением EXSLT, поскольку сообщение об ошибке, ссылающееся на «net.sf.saxon.trans», ясно указывает, что вы используете некоторую версию Saxon 8 или 9, которая должна поддерживать XSLT 2.0 и Saxon. –
Я пытаюсь достичь этого в xslt 1.0, потому что проверка даты проста здесь (tib: validate-dateTime()). Есть ли в XSLT2.0 одна функция проверки даты в строке? – Guru
Я не знаком с tibco и его функциями. С помощью XSLT/XPath 2.0, чтобы проверить, может ли строка быть проанализирована как значение «xs: dateTime», вы можете проверить «foo castable as xs: dateTime». Это пытается проанализировать в соответствии с синтаксисом схемы «xs: dateTime» W3C «yyyy-mm-ddThh: mm: ss» плюс дополнительная информация о часовом поясе, см. Http://www.w3.org/TR/xmlschema-2/# dateTime для деталей. Для других форматов вам нужно будет написать регулярное выражение и/или извлечь компоненты и проверить их, соответственно, попытаться построить 'dateTime'. –