Merge XML files (English)

Download ApplyMergeXSLT.zip

ApplyMergeXSLT è un'applicazione Java che consente di fondere in un unico file un insieme di files XML codificati UTF-8. Questi files devono avere lo stesso elemento radice. L'applicazione usa una trasformazione XSLT per fondere i files XML. La struttura fisica del pacchetto scompattato è la seguente:

 -- ApplyMergeXSLT
	-- bin
	-- lib
	-- src
	-- X_OUTPUT
	-- X_SOURCE
	-- xslt
	-- run.bat
	-- run_wrapper.bat					
			

La directory X_SOURCE deve contenere i files XML che vogliamo fondere. La procedura è ricorsiva, quindi all'interno di X_SOURCE possono esserci anche altre directories contenenti files XML da fondere tra loro.

I due files .bat rappresentano il punto di accesso all'applicazione da una macchina Windows (è facile scrivere un file .sh da usare in un sistema Unix). ”run.bat” si usa quando si vuole ottenere un unico file XML in output, risultante dalla fusione di vari files XML con lo stesso elemento radice. Ad esempio:

File1.xml
<Publisher>
    <Journal>
	<JournalInfo>
		<JournalElectronicISSN>2080-2218</JournalElectronicISSN>
		<JournalTitle>Advances in Cell Biology</JournalTitle>
	</JournalInfo>
    </Journal>
</Publisher>

File2.xml
<Publisher>
    <Journal>
	<JournalInfo>
		<JournalPrintISSN>0004-1254</JournalPrintISSN>
		<JournalTitle>Archives of Industrial Hygiene</JournalTitle>
	</JournalInfo>
    </Journal>
</Publisher>

merged.xml
<Publisher>
    <Journal>
	<JournalInfo>
		<JournalElectronicISSN>2080-2218</JournalElectronicISSN>
		<JournalTitle>Advances in Cell Biology</JournalTitle>
	</JournalInfo>
    </Journal>
    <Journal>
	<JournalInfo>
		<JournalPrintISSN>0004-1254</JournalPrintISSN>
		<JournalTitle>Archives of Industrial Hygiene</JournalTitle>
	</JournalInfo>
    </Journal>
</Publisher>
			

L'altro eseguibile, “run_wrappper.bat”, va usato quando si vuole mantenere l'elemento radice, ma anche la struttura del documento. Ogni documento, quindi, viene messo in un elemento wrapper. Ciò ha senso in quei casi in cui all'interno dell'elemento radice ci sono più figli. Si consideri l'esempio:

File1.xml
<Publisher>
	<PublisherInfo>
		<PublisherName>Birkhäuser-Verlag</PublisherName>
	</PublisherInfo>
	<Journal OutputMedium="All">
		<JournalInfo JournalProductType="ArchiveJournal">
			<JournalPrintISSN>0004-069X</JournalPrintISSN>
			<JournalElectronicISSN>1661-4917</JournalElectronicISSN>
			<JournalTitle>Archivum Immunologiae</JournalTitle>
		</JournalInfo>
	</Journal>
</Publisher>

File2.xml
<Publisher>
	<PublisherInfo>
		<PublisherName>Birkhäuser-Verlag</PublisherName>
	</PublisherInfo>
	<Journal OutputMedium="All">
		<JournalInfo JournalProductType="ArchiveJournal">
			<JournalPrintISSN>0004-069X</JournalPrintISSN>
			<JournalElectronicISSN>1661-4917</JournalElectronicISSN>
			<JournalTitle>Archivum Immunologiae</JournalTitle>
		</JournalInfo>
	</Journal>
</Publisher>

merged.xml
<Publisher>
	<wrapper>
		<PublisherInfo>
			<PublisherName>Birkhäuser-Verlag</PublisherName>
		</PublisherInfo>
		<Journal OutputMedium="All">
		    <JournalInfo JournalProductType="ArchiveJournal">
			<JournalPrintISSN>0004-069X</JournalPrintISSN>
			<JournalElectronicISSN>1661-4917</JournalElectronicISSN>
			<JournalTitle>Archivum Immunologiae</JournalTitle>
		    </JournalInfo>
		</Journal>
	</wrapper>
	<wrapper>
		<PublisherInfo>
			<PublisherName>Birkhäuser-Verlag</PublisherName>
		</PublisherInfo>
		<Journal OutputMedium="All">
		    <JournalInfo JournalProductType="ArchiveJournal">
			<JournalPrintISSN>0004-069X</JournalPrintISSN>
			<JournalElectronicISSN>1661-4917</JournalElectronicISSN>
			<JournalTitle>Archivum Immunologiae</JournalTitle>
		    </JournalInfo>
		</Journal>
	</wrapper>
</Publisher>
			

Nota: il file di output “merged.xml” si trova nella cartella X_OUTPUT. Inoltre, ogni dichiarazione di DTD viene troncata.