利用XSLT將兩個XML文件合成一個XML文件

這個是論壇裏的問題,但這個功能經常遇到,貼出來供以後參考,這裏的關鍵是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>

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章