我有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没有任何经验.
给定以下输入文件:
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>