XSLT将字段值赋给变量

时间:2015-06-02 14:11:19

标签: xml xslt

我是xslt的新手,并且遇到什么应该是一件容易的事情。我想从输入xml文件中获取一个字段的值,将其分配给变量并尝试输出该变量。似乎很容易,但似乎无法让它工作?

XML输入文件:

<?xml version="1.0"?>
<AUTHENTICATOR>
<LOGINID>johndoe</LOGINID> 
<DATE>06022015</DATE> 
<USERTOKEN> 
    <vLk3pRdlQXX1JcO2s1QzAJfU050>
</USERTOKEN> 
<USERINFO> 
    <field value="John" name="FirstName"/> 
    <field value="Doe" name="LastName"/> 
    <field value="johndoe@hotmail.com" name="Email"/> 
</USERINFO> 
</AUTHENTICATOR>

XSLT转换文件:

<?xml version="1.0" encoding="UTF‐8"?>
<xsl:stylesheet version="1.0"     xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes"/>
<xsl:template match="/AUTHENTICATOR">

<USERINFO>
    <!--Set Variables-->
    <xsl:variable name="UserName" select="field[@name='FirstName']"></xsl:variable>

    <!--Output Variables-->
    <xsl:text>First Name: </xsl:text>
    <xsl:value-of select="$UserName" />     
</USERINFO>

</xsl:template>
</xsl:stylesheet>

2 个答案:

答案 0 :(得分:0)

你应该注意上下文。与Authenticator节点匹配时,您处于此节点的上下文中。 xpath“字段”不会导致任何节点,因为在上下文中没有任何节点auf“Authenticator”。也许试试USERINFO / field吧!

答案 1 :(得分:0)

(您的XML格式不正确...... vLk3pRdlQXX1JcO2s1QzAJfU050标记未关闭)

假设XML格式正确,以下XSLT应该可以工作......

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes"/>
<xsl:template match="/AUTHENTICATOR">
    <USERINFO>
        <!--Set Variables-->
        <xsl:variable name="UserName" select="USERINFO/field[@name='FirstName']/@value"></xsl:variable>
        <!--Output Variables-->
        <xsl:text>First Name: </xsl:text>
        <xsl:value-of select="$UserName" />
    </USERINFO>
</xsl:template>