Допустим, у меня есть функция f:get-map()
, которая возвращает карту.
Как использовать результат этой функции в другой функции?
Прямо сейчас я делаю это так:
<xsl:function name = "f:get-another-map" as = "map(*)">
<xsl:variable name = "result" select = "f:get-map()"/>
<xsl:map>
<xsl:map-entry key = "'key1'" select = "map:get($result, 'key1')"/>
<xsl:map-entry key = "'key2'" select = "map:get($result ,'key2')"/>
</xsl:map>
</xsl:function>
Но это довольно громоздко. Есть лучший способ сделать это?
@MartinHonnen Мой пример, вероятно, слишком упрощен, но действительно, xsl:sequence
помогает, спасибо.
Я преобразовал предложение из комментария в ответ, чтобы вы могли принять его и отметить вопрос как решенный.
В общем, чтобы вернуть любой результат вызова функции из функции, вы используете xsl:sequence
с выражением select
, вызывающим функцию, например. <xsl:sequence select = "f:get-map()"/>
возвращает результат вызова f:get-map()
.
Мне не понятно в чем проблема, в заголовке вы спрашиваете "Как мне вернуть карту из функции...?" а затем в первом предложении вы говорите, что у вас уже есть «функция f:get-map(), которая возвращает карту». Так как же выглядит эта функция? Вы хотите просто вернуть результат вызова функции
f:get-map()
? Тогда используйте<xsl:sequence select = "f:get-map()"/>
. Но я не понимаю, зачем вам вообще нужна эта функцияf:get-another-map
, мне показалось бы громоздким вообще иметь эту вторую функцию, если вы хотите получить только первую функцию.