使用XSL进行XML转换

时间:2012-08-05 12:54:59

标签: java xml xslt saxon xalan

我想使用XSLT将XML文件传输到其他XML。我想进行转换,因为XML文件不是纯树形文档。

以前是我的文件:

<uglyStartTag></uglyStartTag>
    <name>content</name>
<uglyEndTag></uglyEndTag>

<uglyStartTag/>
    <name>content</name>
<uglyEndTag/>

以下是我的文件:

<beautyTag>
    <name>content</name>
</beautyTag>

我该怎么办?我对XSLT并不熟悉,所以我会感谢任何建议。

1 个答案:

答案 0 :(得分:1)

此转化

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
     <xsl:output omit-xml-declaration="yes" indent="yes"/>
     <xsl:strip-space elements="*"/>

     <xsl:template match=
      "node()[preceding-sibling::uglyStartTag
            and
              following-sibling::uglyEndTag
              ][1]">
      <beautyTag>
        <xsl:copy-of select=
         "../node()[preceding-sibling::uglyStartTag
                  and
                    following-sibling::uglyEndTag
                   ]
         "/>
      </beautyTag>
     </xsl:template>
</xsl:stylesheet>

应用于此XML文档(由评论中的OP提供):

<t>
    <uglyStartTag />
    <name>dgsdgsdgsdg</name>
    <uglyEndTag />
</t>

会产生想要的正确结果:

<beautyTag>
   <name>dgsdgsdgsdg</name>
</beautyTag>