利用XSLT将两个XML文件合成一个XML文件

来源:互联网 发布:oracle创建数据库 编辑:程序博客网 时间:2024/05/17 03:54

这个是论坛里的问题,但这个功能经常遇到,贴出来供以后参考,这里的关键是XPATH的使用。

file1.xml

<?xml version="1.0" encoding="utf-8" ?><?xml-stylesheet type="text/xsl" href="xslt1.xsl"?><staffs>  <staff order = "1">    <name>wang </name>    <age>27 </age>  </staff>  <staff order = "2">    <name>Li </name>    <age>24 </age>  </staff>  <staff order = "3">    <name>Q1 </name>    <age>29 </age>  </staff></staffs>
file2.xml
<?xml version="1.0" encoding="utf-8" ?><staffs>  <staff order = "1">    <name>wang </name>    <Money>100 </Money>  </staff>  <staff order = "2">    <name>Li </name>    <Money>200 </Money>  </staff>  <staff order = "3">    <name>Q1 </name>    <Money>400 </Money>  </staff></staffs>
xslt1.xsl
<?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" omit-xml-declaration="yes"/><xsl:variable name="file2" select="document('file2.xml')"/><xsl:template match="/">    <staffs>        <xsl:for-each select="/staffs/staff">        <xsl:variable name="CurrentOrder"><xsl:value-of select = "attribute::order" /></xsl:variable>        <staff>        <xsl:attribute name="order"><xsl:value-of select="@order" /></xsl:attribute>        <xsl:copy-of select="name" />        <xsl:copy-of select="age" />        <xsl:copy-of select="$file2/staffs/staff[@order=$CurrentOrder]/Money" />        </staff>        </xsl:for-each>    </staffs></xsl:template></xsl:stylesheet>
原创粉丝点击