6

I have 2 xml files which I need to merge together using a style sheet

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

One is ApplicationData and the other one is MetricList. here is what I have done but it is nothing close to what it should be

<?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>

Please help me. I don't have any experience with XSLT.

1
  • You have described the structure of your output, but what's the structure of your input XML files? Commented Sep 26, 2013 at 7:13

2 Answers 2

8

Given the following input files:

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 />

the following transformation merge.xsl applied to 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>

produces the correct output of

<?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>
Sign up to request clarification or add additional context in comments.

Comments

0

You should be replace your line as below:-

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

with this below line one:

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

i think this may help you..

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.