首页 > 解决方案 > 当变量等于节点名称时,XSLT如何获取值?

问题描述

我继承了一个 XSLT 1.0 项目,但我对 XSLT 了解不多。

我有一个带有代码列表的外部 XML 文件。我想使用这个文件来获取基于变量的节点的值。当 $source = "AFW" 时,我想获得 "XML-AP",而当 $source = "SAGITTA" 时,我想获得 "XML"。

XML 查找文件的部分列表:

<codes name="AcordToMSA_CodeLists">
    <Source>
        <codes>
            <AFW>XML-AP</AFW>
            <SAGITTA>XML</SAGITTA>
        </codes>
    </Source>
</codes>

XML 查找文件的 XSLT:

<xsl:variable name="lookupFileSource" select="document('XSL/AcordToMSA_CodeLists.xml')/codes" />



<Home>
    <xsl:variable name="source" select="Top/ClientApp/Name"/>
    <xsl:attribute name="Source"><xsl:value-of select="$lookupFileSource/Source/codes[local-name() = 'AFW']"/></xsl:attribute>
</Home>

我上面的属性行返回一个空字符串。当 $source 变量等于节点名称时,我需要做什么来获取节点的值?

标签: xsltxslt-1.0

解决方案


您需要检查元素 child's local-name,所以

<xsl:attribute name="Source"><xsl:value-of select="$lookupFileSource/Source/codes/*[local-name() = 'AFW']"/></xsl:attribute>

推荐阅读