专注于互联网--专注于架构

最新标签
网站地图
文章索引
Rss订阅

首页 »XML教程 » xmlxslt:使用XSLT将两个XML文件合成一个XML文件 »正文

xmlxslt:使用XSLT将两个XML文件合成一个XML文件

来源: 发布时间:星期四, 2009年2月12日 浏览:88次 评论:0


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

file1.xml

view plaincopy to clipboardpr?
<?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 clipboardpr?
file2.xml

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

view plaincopy to clipboardpr?<?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> <?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>

view plaincopy to clipboardpr?xslt1.xsl xslt1.xsl
view plaincopy to clipboardpr?<PRE =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> view plaincopy to clipboardpr?<?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> <?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>
0

相关文章

读者评论

发表评论

  • 昵称:
  • 内容: