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