Функция XSLT для передачи аргумента узла, конкатенации строки и возврата значения элемента - PullRequest
0 голосов
/ 07 декабря 2018

Я довольно новичок в xslt, но я просмотрел темы, чтобы выяснить, есть ли для меня совпадение, но так как я не могу понять большую часть языка, я не могу найти их полезными.

* 1002Вот то, чего я пытаюсь достичь.По сути, я хочу пользовательскую функцию, которая может объединить строку с путем к узлу и вернуть значение элемента без совпадения шаблона.Может быть, вы можете привести пример кода функции, который может это сделать, и я могу просмотреть его.

В основном я хочу передать узел </root/AccountDetails/plantype> функции, подобной <xsl:value-of select=”testlang(/root/AccountDetails/plantype)”/>

В функции она выполнит языковой тест и вернет значение элемента узла (обратите внимание, что много английских и французских узлов вложено в разные уровни), поэтому я прохожу весь путь.Я ограничен XSLT 1.0 и не могу изменить переданный XML

Пример XML

<root>
<AccountDetails>
    <plantype>RRSP</plantype>
    <plantype_fr>CELI</plantype_fr>
</AccountDetails>
<ClientDetails>
    <salutation>Mr.</salutation>
    <salutation_fr>Monseiur</salutation_fr>
</ClientDetails>
<lang>fr</lang>
</root>

Возможный код функции

<xsl:function name=”testlang”>
<xsl:param name=”str”/>
<xsl:choose>
<xsl:when test=”/root/lang[.=’fr’]>
            <xsl:value-of select=”concat($str,’_fr’)”/>
</xsl:when>
<xsl:otherwise>
            <xsl:value-of select=”$str”/>
</xsl:otherwise>
</xsl:choose>
</xsl:function>
...