我需要创建一个xslt转换文件,该文件基本上读取xml文件并更改字段名称,同时保持相同的字段值,然后输出带有这些更改的新xml文件。我很难从第二个和第三个字段标记中获取值。这是传入的xml:
<?xml version="1.0"?>
<AUTHENTICATOR>
<LOGINID>johndoe</LOGINID>
<DATE>20150601</DATE>
<USERTOKEN>vLk3pRdlQXX1JcO2s1QzAJfU050></USERTOKEN>
<USERINFO>
<field name="First" value="John"/>
<field name="Last" value="Doe"/>
<field name="mail" value="johndoe@hotmail.com"/>
</USERINFO>
</AUTHENTICATOR>
我需要outpur xml将字段名称设为'FirstName','LastName'和'Email',但保留相同的值。这是我的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">
<AUTHENTICATOR>
<LOGINID><xsl:value-of select="LOGINID"/></LOGINID>
<DATE><xsl:value-of select="DATE"/></DATE>
<USERTOKEN><xsl:value-of select="USERTOKEN"/></USERTOKEN>
<USERINFO>
<xsl:element name="field">
<xsl:attribute name="name">FirstName</xsl:attribute>
<xsl:attribute name="value">
<xsl:value-of select="USERINFO/field/@value"/>
</xsl:attribute>
</xsl:element>
<xsl:element name="field">
<xsl:attribute name="name">LastName</xsl:attribute>
<xsl:attribute name="value">
<xsl:value-of select="USERINFO/field/@value"/>
</xsl:attribute>
</xsl:element>
<xsl:element name="field">
<xsl:attribute name="name">Email</xsl:attribute>
<xsl:attribute name="value">
<xsl:value-of select="USERINFO/field/@value"/>
</xsl:attribute>
</xsl:element>
</USERINFO>
</AUTHENTICATOR>
</xsl:template>
</xsl:stylesheet>
答案 0 :(得分:0)
如何简单:
<xsl:template match="/AUTHENTICATOR">
<xsl:copy>
<xsl:copy-of select="LOGINID | DATE | USERTOKEN"/>
<USERINFO>
<field name="FirstName" value="{USERINFO/field[@name='First']/@value}"/>
<field name="LastName" value="{USERINFO/field[@name='Last']/@value}"/>
<field name="Email" value="{USERINFO/field[@name='mail']/@value}"/>
</USERINFO>
</xsl:copy>
</xsl:template>