2014-06-29 167 views
-1

如何将这个XML文件转换:通过使用XSLT 1.0如何使用XSLT将一个XML文件转换为另一个XML文件?

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

到这个XML文件:

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

此外,如果您有任何关于这个问题的资源,请张贴因为我有很多更的XSLT文件代码。感谢

+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> 
+0

+1我同意,它确实不那么冗长 – InferOn

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> 
+2

XSLT是详细的,但它不需要*表示*详细。您可以通过直接将它们写入结果树来输出文字元素,并且可以使用*属性值模板*来缩短代码。 http://www.w3.org/TR/xslt/#section-Creating-Elements-and-Attributes –

+1

@ michael.hor257k请发表您的回答,我想看看你打算怎么样 – InferOn

+1

有你去.. –

相关问题