我正在尝试使用xslt将XML转换为csv,我不熟悉xslt所以只是阅读一些教程和其他在线资源。 这是我的XML
<?xml version="1.0" encoding="UTF-8"?>
<impex>
<test>
<Employee />
<UID>auma</UID>
<Name>HR Manager</Name>
<Groups />
<Password>228781</Password>
</test>
<test>
<Employee />
<UID>auma1</UID>
<Name>HR Manager</Name>
<Groups />
<Password>2287811</Password>
</test>
</impex>
我使用以下XSL将xml转换为csv
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:f="Functions"
version="2.0">
<xsl:output method="text" />
<xsl:param name="headerVal" select="'INSERT_UPDATE Employee;UID[unique=true];name;groups(uid);password'"/>
<xsl:template match="/impex">
<xsl:apply-templates select="test[1]/*" mode="header"/>
<xsl:apply-templates select="test" />
</xsl:template>
<xsl:template match="*" mode="header" >
<xsl:value-of select="$headerVal" />
</xsl:template>
<xsl:template match="test">
<xsl:apply-templates select="*"/>
</xsl:template>
<xsl:template match="*" >
<xsl:value-of select="."/>
<xsl:choose>
<xsl:when test="position()=last()">
<xsl:text> </xsl:text>
</xsl:when>
<xsl:otherwise>;</xsl:otherwise>
</xsl:choose>
</xsl:template>
</xsl:stylesheet>
我正在尝试定义我的csv标头,但这对我不起作用
csv输出
INSERT_UPDATEEmployeeUID[unique=true]namegroups(uid)password
INSERT_UPDATEEmployeeUID[unique=true]namegroups(uid)password
INSERT_UPDATEEmployeeUID[unique=true]namegroups(uid)password
INSERT_UPDATEEmployeeUID[unique=true]namegroups(uid)password
INSERT_UPDATEEmployeeUID[unique=true]namegroups(uid)password
;auma;HR Manager;;228781
;auma1;HR Manager;;2287811
如下行
<xsl:param name="headerVal" select="'INSERT_UPDATE Employee;UID[unique=true];name;groups(uid);password'"/>
我假设它是由于;
select
中的{{1}},但我甚至删除了它,甚至删除了空间但没有任何帮助
我已经搜索了这个,但无法找到如何在我的xsl文件中定义此标头的方法,以便我可以使用此标头为我的csv
提前致谢
答案 0 :(得分:1)
问题解决了。
<xsl:apply-templates select="test[1]/*" mode="header"/>
这里我选择了test[1]
中的所有元素,在我的XML中,我在test
元素中有五个元素,所以我只是将这一行改为:
<xsl:apply-templates select="test[1]" mode="header"/>
它工作正常。