如何使用XSLT将一个XML文件转换为另一个XML文件?

时间:2014-06-29 15:08:18

标签: xml xslt xslt-1.0

如何转换此XML文件:

<file>
  <text ID="201" date="2014-05-04">
    <user_name>user_11</user_name>
    <message> HELLO </message>
  </text>
</file>

使用XSLT 1.0进入此XML文件:

<doc>
  <user name="user_11">
    <text id="201" date="2014-05-04"> HELLO </text> 
  </user>
</doc>

此外,如果您有关于此主题的任何资源,请发布,因为我有更多的XSLT文件代码。感谢

2 个答案:

答案 0 :(得分:4)

<xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>

<xsl:template match="/">
    <doc>
        <xsl:for-each select="file/text">
            <user name="{user_name}">
                <text id="{@ID}" date="{@date}">
                    <xsl:value-of select="message" />
                </text> 
            </user>
        </xsl:for-each>
    </doc>
</xsl:template>

</xsl:stylesheet>

答案 1 :(得分:2)

我假设你XML中有一个文件容器,无论如何你正在寻找这样的东西:

<?xml version="1.0" encoding="ISO-8859-1"?>

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:template match="/">
  <docs>
    <xsl:for-each select="files/file">
      <xsl:element name="doc">
        <xsl:element name="text">
         <xsl:attribute name="name">
          <xsl:value-of select="text/user_name" />
         </xsl:attribute>  
          <xsl:element name="text">
           <xsl:attribute name="id">
            <xsl:value-of select="text/@ID" />
           </xsl:attribute> 
           <xsl:attribute name="date">
            <xsl:value-of select="text/@date" />
           </xsl:attribute> 
           <xsl:value-of select="text/message" />
          </xsl:element>
        </xsl:element>      
      </xsl:element>       
    </xsl:for-each>
  </docs>
</xsl:template>
</xsl:stylesheet>