当前位置导航:炫浪网>>网络学院>>网页制作>>XML/WebService教程

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

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

file1.xml

view plaincopy to clipboardprint?
〈?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>   〈?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>
view plaincopy to clipboardprint?
file2.xml   file2.xmlview plaincopy to clipboardprint?
〈PRE class=xml name="code">〈?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>   〈/PRE>   〈PRE class=xml name="code">xslt1.xsl〈/PRE>   〈PRE class=xml name="code">〈PRE class=xml name="code">〈?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>      〈/PRE>      〈/PRE>

相关内容
赞助商链接