XML如何将更多元素合并到一个元素

时间:2014-04-14 22:38:16

标签: xml xslt-2.0

谢谢你。凯。但我尝试了你的代码,仍然没有工作。 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>

1 个答案:

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

我没有尝试解决日期重新格式化问题,只需为此添加另一个模板规则。

相关问题