【问题标题】:Merging two XML files using XSLT使用 XSLT 合并两个 XML 文件
【发布时间】:2013-10-02 00:09:13
【问题描述】:

我有 2 个 xml 文件需要使用样式表合并在一起

<AssessmentInput>
  <ApplicationData>...</AppicationData>
  <MetricList>...</MetricList>
</AssessmentInput>

一个是ApplicationData,另一个是MetricList。 这是我所做的,但它与它应该做的相差无几

<?xml version="1.0" encoding="ascii"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:exslt="http://exslt.org/common" exclude-result-prefixes="xsl exslt">
    <xsl:output omit-xml-declaration="yes" method="xml" encoding="UTF-8"/>
    <xsl:param name="ApplicationData" select="/"/>
    <xsl:param name="MetricList"/>
    <xsl:template match="/">
        <xsl:apply-templates select="$ApplicationData/ApplicationData"/>
    </xsl:template>
    <xsl:template match="ApplicationData">
        <xsl:copy>
            <xsl:apply-templates select="@*"/>
            <xsl:apply-templates select="*"/>
        </xsl:copy>
    </xsl:template>
    <xsl:template match="@* | node()">
        <xsl:copy>
            <xsl:apply-templates select="@* | node()"/>
        </xsl:copy>
    </xsl:template>
</xsl:stylesheet>

请帮助我。我对 XSLT 没有任何经验。

【问题讨论】:

  • 您已经描述了输出的结构,但是输入 XML 文件的结构是什么?

标签: xml xslt xpath


【解决方案1】:

给定以下输入文件:

ApplicationData.xml

<?xml version="1.0" ?>
<ApplicationData>
    Whatever data you have in here.
</ApplicationData>

MetricList.xml

<?xml version="1.0" ?>
<MetricList>
    Whatever list you have in here.
</MetricList>

AssessmentInput.xml

<?xml version="1.0" ?>
<AssessmentInput />

以下转换 merge.xsl 应用于 AssessmentInput.xml

<?xml version="1.0" ?>
<xsl:transform
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    version="1.0">
    <xsl:template match="/AssessmentInput">
        <xsl:copy>
            <xsl:copy-of select="document('ApplicationData.xml')" />
            <xsl:copy-of select="document('MetricList.xml')" />
        </xsl:copy>
    </xsl:template>
</xsl:transform>

产生正确的输出

<?xml version="1.0" encoding="UTF-8"?>
<AssessmentInput>
    <ApplicationData>
        Whatever data you have in here.
    </ApplicationData>
    <MetricList>
        Whatever list you have in here.
    </MetricList>
</AssessmentInput>

【讨论】:

    【解决方案2】:

    你应该如下替换你的行:-

    <xsl:param name="ApplicationData" select="/"/>
      <xsl:param name="MetricList"/>
    

    下面的第一行:

       <xsl:variable name="Application_Data" select="document('Application_Data.xml')/ApplicationData"/>
     <xsl:variable name="'Metric_List" select="document('Application_Data.xml')/MetricList"/>
    

    我认为这可能会对你有所帮助..

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-08-25
      • 1970-01-01
      • 1970-01-01
      • 2019-01-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多