Поддержка wso2ei-6.4.0 и XSLT 3.0 - PullRequest
0 голосов
/ 14 января 2019

Я планирую использовать XSL версии 3.0 для моего приложения WSO2 EI. Потому что мне нужно сопоставить JSON с JSON и JSON с XML в моем приложении. В настоящее время я пробую с версией 2.0. Пожалуйста, обратитесь к следующему коду для текущей реализации.

Мне нужно знать, как изменить эту версию и какой jar требуется в WSO2EI для версии 3.0 xsl.

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="2.0"
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output method="xml" />
    <xsl:param name="STATIC_BODY_PARAM"></xsl:param>
    <xsl:template match="/availabilityRequest">

        <availabilityRequest>
            <control>
                <userName>
                    <xsl:value-of select="control/userName" />
                </userName>
                <passWord>
                    <xsl:value-of select="control/passWord" />
                </passWord>
            </control>
             ....................
        </availabilityRequest>

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

Когда я использовал версию как 3.0, я получил следующее сообщение об ошибке. Я добавил вашу дальнейшую ссылку.

ERROR - XSLTMediator Error creating XSLT transformer using : Value {name ='null', expression =fn:concat('gov:repository/transformation/',$ctx:uri.var.travel_type,'_',$ctx:uri.var.activity,'_',$ctx:uri.var.supplier_id,'_in.xslt')}
net.sf.saxon.trans.LicenseException: Requested feature (XSLT 3.0) requires Saxon-PE
    at net.sf.saxon.Configuration.checkLicensedFeature(Configuration.java:584)
    at net.sf.saxon.PreparedStylesheet.setStylesheetDocument(PreparedStylesheet.java:331)
    at net.sf.saxon.PreparedStylesheet.prepare(PreparedStylesheet.java:207)
    at net.sf.saxon.TransformerFactoryImpl.newTemplates(TransformerFactoryImpl.java:132)
    at org.apache.synapse.mediators.transform.XSLTMediator.createTemplate(XSLTMediator.java:467)

Ответы [ 2 ]

0 голосов
/ 14 января 2019

Я исправил вышеуказанную проблему, используя следующую информацию.

  • Я получил 30-лицензионный лицензионный ключ с регистрацией http://www.saxonica.com/download/download.xml (saxon-license.lic) и поместил его в папку /wso2ei-6.4.0/
  • Удалите этот jar (saxon.he_9.4.0.wso2v1.jar) в следующем месте. (/wso2ei-6.4.0/wso2/components/plugins)
  • Также поместите эту банку (saxon9ee.jar) http://www.saxonica.com/download/SaxonEE9-4-0-6J.zip в /wso2ei-6.4.0/lib location
  • Перезагрузите сервер wso2ei-6.4.0
  • Теперь xsl: stylesheet version = "3.0" работает без проблем.

Я получил эти данные по следующей ссылке. Большое спасибо за это. http://nandikajayawardana.blogspot.com/2012/12/how-to-replace-saxonhe940wso2v1jar-in.html

0 голосов
/ 14 января 2019

Я ничего не знаю конкретно о WSO2EI, но (по вашей ссылке) выясняется, что он в настоящее время работает с какой-то более старой версией Saxon-HE.

Простая замена файла JAR Saxon 9.9 на тот, который распространяется вместе с продуктом, может работать или не работать. С большой вероятностью это сработает, но вполне возможно, что таблицы стилей или вызывающее приложение зависят от того, что изменилось в Saxon.

Если вы что-то пробовали, нет смысла говорить нам, что это не работает. Вы должны точно сказать нам, как это не удалось.

Вы должны попробовать запустить таблицу стилей, которая выводит значение system-property('xsl:product-version'), чтобы у вас было положительное подтверждение того, какая саксонская версия выбирается.

Вам не нужно вносить какие-либо изменения в таблицы стилей, чтобы использовать функции XSLT 3.0, но рекомендуется поменять атрибут version на version="3.0" по причинам, связанным с документацией.

...