如何从输入XML获取标记值,其中标记名称存储在变量中

时间:2014-08-24 11:33:18

标签: xml xslt xslt-2.0

我的代码无法从输入XML返回值。变量名称基于字符串映射到单独的xml中。

步骤1:我需要从另一个映射XML中提取XML标记。 (我得到了它)

步骤2:XML标记保存在变量中并使用根标记,我无法获取值

这是XSLT:

    <xsl:template match="SUBSCRIBER">

            <xsl:variable name="expiry_date" select="$docStringAccountMapping/STRING_ACCOUNTS_LIST/STRING_ACCOUNTS_INFO[NSN_STRING='ThirdAccount']/AEXPIRY_DATE"/>

    <!-- this returns a string "EXPIRY_DATE_1" -->

            <xsl:value-of select="SUBSCRIBER/$expiry_date"/>


        </xsl:template>

这是XML:

    <SUBSCRIBER>
        <EXPIRY_DATE_1>2014-07-09 23:59:59</EXPIRY_DATE_1>
    </SUBSCRIBER>

1 个答案:

答案 0 :(得分:4)

首先,您可能不想选择&#34; SUBSCRIBER ......任何事情&#34;如果您的模板与SUBSCRIBER匹配。当前节点将是SUBSCRIBER元素,因此从那里开始您的XPath。然后...

如果$expiry_date包含完整的元素名称,包括命名空间组件:

<xsl:value-of select="*[name()= $expiry_date]"/>

如果$expiry_date仅包含元素的本地名称,不包括命名空间组件:

<xsl:value-of select="*[local-name()= $expiry_date]"/>