我是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>
答案 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>