Вызов Java в XSL, неправильный тип параметра

1

Поэтому у меня есть XLST для заполнения многих полей в заголовке SOAP. Одно из этих полей нужно вызвать функцию java, чтобы заполнить значение. Параметры java-функции являются параметрами String, но я не знаю, как создавать параметры в виде строки. Я не могу использовать XSLT 2.0, поэтому я не могу объявить параметр как строку.

Любая идея как преобразовать параметры strBS и strCC в строку?

Когда я выполняю xsl, то возвращает мне ошибку:

Несовместимые типы

Ниже моя таблица стилей:

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"     
                xmlns:n0="http://soap.sforce.com/schemas/class/serviceReenvioVale" 
                xmlns:ser="http://soap.sforce.com/schemas/class/serviceReenvioVale" 
                xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
                xmlns:javamap="java:dafiti.getloginhandler"  
                xmlns:func="http://exslt.org/functions" 
                exclude-result-prefixes="n0">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="no"/>

<xsl:param name="strBS">"BS_DFD_300"</xsl:param>

<xsl:param name="strCC">"CC_RFC_RCV"</xsl:param>

<xsl:param name="container" />

<xsl:template match="/">     
    <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
        <soapenv:Header>
            <SessionHeader>
                <sessionId>
                    <xsl:value-of select="javamap:GetHandler($strBS,$strCC, $container)"/>
                </sessionId>   
            </SessionHeader>        
        </soapenv:Header>
        <soapenv:Body>
            <ser:ReenviarVale>
                <xsl:copy>
                    <xsl:apply-templates select="n0:ReenviarVale/*"/>
                </xsl:copy>
            </ser:ReenviarVale>             
        </soapenv:Body>
    </soapenv:Envelope>    
</xsl:template>

<xsl:template match="*">                                                                                                                                                                                                                       
    <xsl:element name="{local-name()}">                                                                                                                                                                    
        <xsl:apply-templates select="@*|node()"/>                                                                                                                                                                                                    
    </xsl:element>                                                                                                                                                                                                                                
</xsl:template>  

<xsl:template match="@*">                                                                                                                                                                                                                      
    <xsl:attribute name="{local-name()}">
        <xsl:value-of select="."/>
    </xsl:attribute>                                                                                                                                                               
</xsl:template>                                                                                                                                                                                          

</xsl:stylesheet>                                                                     
Теги:
string
xslt

1 ответ

0
Лучший ответ

Попробуйте использовать функцию string() :

<xsl:value-of select="javamap:GetHandler(string($strBS), 
                                         string($strCC), 
                                         string($container))"/>

Кроме того, ваши значения strBS и strCC содержат кавычки как часть их значения. Это то, что вы хотите? Вы уверены, что не собираетесь определять их так:

<xsl:param name="strBS">BS_DFD_300</xsl:param>
<xsl:param name="strCC">CC_RFC_RCV</xsl:param>

Вам нужно было бы только обернуть значения в кавычках, если бы вы задавали буквальные строковые значения в атрибуте select, например:

<xsl:param name="strBS" select="'BS_DFD_300'"/>
<xsl:param name="strCC" select="'CC_RFC_RCV'"/>
  • 0
    благодарю ваш быстрый ответ

Ещё вопросы

Сообщество Overcoder
Наверх
Меню