使用XSLT更改XML文件中的字段名
我需要创建一个xslt转换文件,该文件实质上读取xml文件并更改字段名,同时保持相同的字段值,然后输出一个新的xml文件和这些更改。我很难从第二个和第三个字段标记中获取值。以下是传入的xml:使用XSLT更改XML文件中的字段名,xml,xslt-1.0,Xml,Xslt 1.0,我需要创建一个xslt转换文件,该文件实质上读取xml文件并更改字段名,同时保持相同的字段值,然后输出一个新的xml文件和这些更改。我很难从第二个和第三个字段标记中获取值。以下是传入的xml: <?xml version="1.0"?> <AUTHENTICATOR> <LOGINID>johndoe</LOGINID> <DATE>20150601</DATE> <USERTOKEN>vLk3pRdlQX
<?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>
约翰多
20150601
vLk3pRdlQXX1JcO2s1QzAJfU050>
我需要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>
名字
姓氏
电子邮件
一个简单的:
<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>