Поскольку вы используете XSLT 2.0, вы можете использовать функцию index-of
, чтобы получить индекс CountryCode
из переменной $CountryCode
, а затем использовать значение индекса, чтобы получить CountryName
из $CountryName
.
Пожалуйста, попробуйте изменить шаблон, соответствующий <CountryCode>
, как показано ниже.
<xsl:template match="CountryCode">
<!-- Store input in a variable -->
<xsl:variable name="InputCode" select="." />
<xsl:copy>
<!-- Removed the upper-case function and retained the sequence -->
<xsl:variable name="CountryCode" select="('HK','USA','SG')"/>
<xsl:variable name="CountryName" as="element()*">
<Name>HongKong</Name>
<Name>United States of America</Name>
<Name>Singapore</Name>
</xsl:variable>
<!-- Added the index-of function to get the index of the input country
code from the sequence and then extract the country name from the
other sequence -->
<xsl:value-of select="$CountryName[index-of($CountryCode, upper-case($InputCode))]"/>
</xsl:copy>
</xsl:template>
Для ввода
<CountryCode>USA</CountryCode>
приведенный выше шаблон выдаст вывод как
<CountryCode>United States of America</CountryCode>