这个是论坛里的问题,但这个功能经常遇到,贴出来供以后参考,这里的关键是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>