谢谢你。凯。但我尝试了你的代码,仍然没有工作。 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" encoding="UTF-8" />
<xsl:template match="/">
<Transakcie>
<A1><xsl:apply-templates/></A1>
</xsl:template>
<xsl:template match="Export/*">
<xsl:attribute name="{substring-before(Export(), '_')}" select="."/>
</xsl:template>
</Transakcie>
</xsl:stylesheet>
还有完整的源码xml:
<?xml version="1.0" encoding="UTF-8"?>
<dataroot xmlns:od="urn:schemas-microsoft-com:officedata" generated="2014-04-12T13:31:13">
<Export>
<F_x003D_>140100378</F_x003D_>
<Den_x003D_>29.01.2014</Den_x003D_>
<Z_x003D_>26.25</Z_x003D_>
<D_x003D_>5.25</D_x003D_>
<S_x003D_>20</S_x003D_>
</Export>
<Export>
<F_x003D_>140400002</F_x003D_>
<Den_x003D_>07.01.2014</Den_x003D_>
<Z_x003D_>-22.08</Z_x003D_>
<D_x003D_>-4.42</D_x003D_>
<S_x003D_>20</S_x003D_>
</Export>
<Export>
<F_x003D_>140400008</F_x003D_>
<Den_x003D_>20.01.2014</Den_x003D_>
<Z_x003D_>-21.67</Z_x003D_>
<D_x003D_>-4.33</D_x003D_>
<S_x003D_>20</S_x003D_>
</Export>
</dataroot>
输出XML我需要遵循:
<Transakcie>
<A1 F="140100378" Den="2014-01-29" Z="26.25" D="5.25" S="20"/>
<A1 F="140400002" Den="2014-01-07" Z="22.08" D="-4.42" S="20"/>
<A1 F="140400008" Den="2014-01-20" Z="-21.67" D="-4.33" S="20"/>
</Transakcie>
答案 0 :(得分:2)
以下是一个好的开始:
<xsl:template match="root"><!-- where 'root' is the containing element -->
<A1><xsl:apply-templates/></A1>
</xsl:template>
<xsl:template match="root/*">
<xsl:attribute name="{substring-before(name(), '_')}" select="."/>
</xsl:template>
我没有尝试解决日期重新格式化问题,只需为此添加另一个模板规则。