zoukankan      html  css  js  c++  java
  • 利用xslt合并多个xml文件到一个文件

    直接上代码

    1.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <JobRecords>
        <JobRecord>
            <Brand>Corporate1</Brand>
            <WorkTypes>
                <WorkTypeRecord>
                    <Title>Permanent1</Title>
                </WorkTypeRecord>
            </WorkTypes>
        </JobRecord>
    </JobRecords>

    2.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <JobRecords>
        <JobRecord>
            <Brand>Corporate2</Brand>
            <WorkTypes>
                <WorkTypeRecord>
                    <Title>Permanent2</Title>
                </WorkTypeRecord>
            </WorkTypes>
        </JobRecord>
    </JobRecords>

    merge.xslt

    <?xml version="1.0" encoding="UTF-8" ?>
    
    <!-- New XSLT document created with EditiX XML Editor (http://www.editix.com) at Thu Nov 12 14:29:49 CST 2020 -->
    
    <xsl:stylesheet version="2.0" exclude-result-prefixes="xs xdt err fn" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:fn="http://www.w3.org/2005/xpath-functions" xmlns:xdt="http://www.w3.org/2005/xpath-datatypes" xmlns:err="http://www.w3.org/2005/xqt-errors">
        <xsl:output method="xml" indent="yes"/>
        <xsl:template match="/">
            <xsl:copy>
            <xsl:apply-templates mode="rootcopy"></xsl:apply-templates>
            </xsl:copy>
        </xsl:template>
        
        <xsl:template match="node()" mode="rootcopy">
    
            <xsl:copy>
    
                <xsl:variable name="folderURI" select="resolve-uri('.',base-uri())"/>
    
                <xsl:for-each select="collection(concat($folderURI, '?select=*.xml;recurse=yes'))/*/node()">
    
                    <xsl:apply-templates mode="copy" select="."/>
    
                </xsl:for-each>
    
            </xsl:copy>
    
        </xsl:template>
        
        <xsl:template match="node()|@*" mode="copy">
    
            <xsl:copy>
    
                <xsl:apply-templates mode="copy" select="@*"/>
    
                <xsl:apply-templates mode="copy"/>
    
            </xsl:copy>
    
        </xsl:template>
    
    
    
        <!-- Handle default matching -->
    
        <xsl:template match="*"/>
    </xsl:stylesheet>

    输出结果:

    <?xml version="1.0" encoding="UTF-8"?>
    <JobRecords>
        <JobRecord>
            <Brand>Corporate1</Brand>
            <WorkTypes>
                <WorkTypeRecord>
                    <Title>Permanent1</Title>
                </WorkTypeRecord>
            </WorkTypes>
        </JobRecord>
    
        <JobRecord>
            <Brand>Corporate2</Brand>
            <WorkTypes>
                <WorkTypeRecord>
                    <Title>Permanent2</Title>
                </WorkTypeRecord>
            </WorkTypes>
        </JobRecord>
    
    </JobRecords>
  • 相关阅读:
    ES6--Promise讲解
    JavaScript原型链以及Object,Function之间的关系
    webpack中利用require.ensure()实现按需加载
    js中cssText批量修改元素样式
    js判断数组中是否有重复元素
    vue生命周期小总结
    学习vue生命周期
    [异步请求]ajax、axios、fetch之间的详细区别以及优缺点
    [Es6]原生Promise的使用方法
    [javascript]原生js实现Ajax
  • 原文地址:https://www.cnblogs.com/DomoYao/p/13964259.html
Copyright © 2011-2022 走看看