用xslt合并两个xml文件

link.xml 文件 <?xml version="1.0" encoding="utf-8"?>
<root>
  <stu>
    <sno>001</sno>
    <sname>张三</sname>
    <ssex>男</ssex>
    <sadd>上海</sadd>
    <sid>1</sid>

  </stu>
  <stu>
    <sno>002</sno>
    <sname>李四</sname>
    <ssex>男</ssex>
    <sadd>湖南</sadd>
    <sid>2</sid>
  </stu>
</root> 

link2.xml 文件  <?xml version="1.0" encoding="utf-8"?>
<root>
  <info>
    <sid>1</sid>
    <sexamid>2008002</sexamid>
  </info>
  <info>
    <sid>2</sid>
    <sexamid>2008001</sexamid>
  </info>
  <info>
    <sid>3</sid>
    <sexamid>2008003</sexamid>
  </info>
  <info>
    <sid>4</sid>
    <sexamid>2008004</sexamid>
  </info>
</root>

link.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" version ="1.0" encoding ="gb2312" indent="yes"/>
  <xsl:variable name ="temp" select ="document('link2.xml')//info"/>
  <xsl:template match="/">
    <xsl:call-template name ="stu"/>
  </xsl:template>

  <xsl:template name ="stu">
    <root>
      <xsl:for-each select="//stu">
        <xsl:variable name ="id" select ="sid"/>
        <stu>
          <xsl:copy-of  select ="./*"/>
          <xsl:copy-of select="$temp[sid=$id]/sexamid"/>
        </stu>
      </xsl:for-each>
    </root>
  </xsl:template>
</xsl:stylesheet>

结合后的结果是:

<?xml version="1.0" encoding="gb2312"?>
<root>
  <stu>
    <sno>001</sno>
    <sname>张三</sname>
    <ssex>男</ssex>
    <sadd>上海</sadd>
    <sid>1</sid>
    <sexamid>2008002</sexamid>
  </stu>
  <stu>
    <sno>002</sno>
    <sname>李四</sname>
    <ssex>男</ssex>
    <sadd>湖南</sadd>
    <sid>2</sid>
    <sexamid>2008001</sexamid>
  </stu>
</root>

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值