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

转帖|其它|编辑:郝浩|2008-07-15 14:10:28.000|阅读 879 次

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

# 界面/图表报表/文档/IDE等千款热门软控件火热销售中 >>

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


标签:

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@evget.com

文章转载自:CSDN

为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
扫码咨询


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP