Слияние двух XML-файлов (EPD формата) с помощью XSLT шаблона в один XML-файл

Автор:Izmajlov
Дата:11.11.2009
Просмотров:7270
Скачиваний:958
Оценка: - , Оценок - 0
Скачать (rar-файл; Размер - 803)

Обсудить в форуме

Описание

Слияние двух XML-файлов (EPD формата) с помощью XSLT шаблона в один XML-файл
инструкция по применению внутри файла. Так же выкладываю код файла как текст

Измайлов Ф.В.

Текст примера

 <xsl:stylesheet 
	xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
	xmlns:ed="urn:cbr-ru:ed:v2.0" version="1.0"
	xmlns:msxsl="urn:schemas-microsoft-com:xslt" > 

<xsl:output method="xml" encoding="Windows-1251"/> 
<!-- --------------------------------------------------------------------------- -->
<!-- Слияние двух EPD файлов с помощью XSLT                                      -->
<!-- Измайлов Ф.В. 11-11-2009                                                    -->
<!-- msxsl.exe имяПервогоEPDфайла ed-0102ver5.xsl -o ИмяРезультирующегоФайла.XML -->
<!-- расширения файлов любые, лишь бы были по содержанию XML                     -->
<!-- --------------------------------------------------------------------------- -->

<!-- ---------------------------------------------------------- -->
<!-- Надо изменить имя файла, который будет сливаться с первым. -->
<xsl:variable name="file02"  select="'epd02.dvc'"/>
<!-- ---------------------------------------------------------- -->
<xsl:template match="*">
	<PacketEPD>
		<xsl:for-each select="@*">

			<xsl:attribute name="{name()}">
			<xsl:choose>
				<xsl:when test="name()='EDQuantity'">
					<xsl:value-of select="number(/ed:PacketEPD/@EDQuantity)+number(document($file02)/ed:PacketEPD/@EDQuantity)"/>
				</xsl:when>
				<xsl:when test="name()='Sum'">
					<xsl:value-of select="number(/ed:PacketEPD/@Sum)+number(document($file02)/ed:PacketEPD/@Sum)"/>
				</xsl:when>
				<xsl:otherwise>
					<xsl:value-of select="."/>
				</xsl:otherwise>
			</xsl:choose>

			</xsl:attribute>
		</xsl:for-each>
	<xsl:copy-of select="document($file02)/ed:PacketEPD/*"/>
	<xsl:copy-of select="././*"/> 
	</PacketEPD>			
</xsl:template>

</xsl:stylesheet>