XSLT如何在变量等于节点名称时获取值



我继承了一个XSLT1.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变量等于节点名称时,我需要做什么来获得节点的值?

您需要检查元素子级的local-name,因此

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

当$source="AFW"时,我想要得到"XML-AP",当$source="SAGITTA"时,我们想要得到"XML"。

我相信这将转化为:

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

或者很快:

<Home Source="{$lookupFileSource/Source/codes/*[name()=$source]}"/>

相关内容

  • 没有找到相关文章

最新更新