Beispiel Mischen test83: Mische Details von beiden Dateien

Basissteuerung-Datei: cmp83.xml
<?xml version="1.0" encoding="UTF-8"?>
<delivery>
	<list_person>
		<person>
			<name          ident_text="true"   />
			<firstname     ident_text="true"   />
			<list_hobby>
				<hobby ident_att_name="true"/>
			</list_hobby>
		</person>
	</list_person>
</delivery>
Erläuterung

Dieses Beispiel "test83" ist nahezu gleich mit Beispiel "test82".
Es unterscheidet sich lediglich in den Mischregeln und im Mischergebnis.

Eingabe:
Die Dateien "test83a.xml" und "test83b.xml" sollen gemäß den Mischreglen der Datei "merge83.xml" gemischt werden.
Person "Fischer Werner" existiert in beiden Dateien.
Person "Fischer Albert" existiert nur in Datei "test83a.xml".
Person "Bauer Willi" existiert nur in Datei "test83b.xml".
Alle Personen haben verschieden Hobbys in den beiden Dateien.
Mischregeln:
Die Mischregeln bedeuten: Nehme alle Personen von beiden Dateien und nehme alle Hobbys von beiden Dateien.
Mischergebnis:
Das Mischergebnis enthält alle drei Personen mit all ihren Hobbys von beiden Dateien.

Mischsteuerungs-Datei: merge83.xml
<?xml version='1.0' encoding='UTF-8'?>
<!--
Element <identity>: Explanation of the merge-Attributes:

     merge='??'
            ||
            |If rows are equal:
            |________________________________________________________
            |0 = take no row from input1 or input2
            |3 = merge rows from input1 and input2.
            |________________________________________________________
            |
            If rows are not equal:
            _________________________________________________________
            0 = take no row from input1 or input2
            1 = take only row from input1
            2 = take only row from input2
            3 = take row from input1 and input2.

Element <value>: Explanation of the merge-Attributes:

     merge='???'
            |||
            ||If element/attribute-name are equal but contents are not equal:
            ||_______________________________________________________
            ||0 = take no attribute/element from input1 or input2
            ||1 = take attribute/element from input1
            ||2 = take attribute/element from input2
            ||3 = take attribute/element from input1 and input2 (not possible if path is an attribute)
            ||
            |If element/attribute-name and content are equal:
            |________________________________________________________
            |0 = take no element/attribute from input1 or input2
            |3 = take element/attribute from input1 or input2
            |________________________________________________________
            |
            If element/attribute-name are not equal:
            _________________________________________________________
            0 = take no element/attribute from input1 or input2
            1 = take only element/attribute from input1
            2 = take only element/attribute from input2
            3 = take element/attribute from input1 and input2.
-->
<merge>
<identity path='/delivery/list_person/person'   merge='33' >
    <identity path='/list_hobby/hobby'          merge='33' >
    </identity>
</identity>
</merge>
Datei: test83a.xml
<?xml version='1.0' encoding='UTF-8'?>
<delivery>
	<list_person>
		<person>
			<name>Fischer</name>
			<firstname>Werner</firstname>
			<list_hobby>
				<hobby name="hiking"/>
				<hobby name="hunting"/>
			</list_hobby>
		</person>
		<person>
			<name>Fischer</name>
			<firstname>Albert</firstname>
			<list_hobby>
				<hobby name="cooking"/>
			</list_hobby>
		</person>
	</list_person>
</delivery>
Datei: test83b.xml
<?xml version='1.0' encoding='UTF-8'?>
<delivery>
	<list_person>
		<person>
			<name>Fischer</name>
			<firstname>Werner</firstname>
			<list_hobby>
				<hobby name="reading"/>
			</list_hobby>
		</person>
		<person>
			<name>Bauer</name>
			<firstname>Willi</firstname>
			<list_hobby>
				<hobby name="jogging"/>
			</list_hobby>
		</person>
	</list_person>
</delivery>


merge-result on stdout
<?xml version='1.0' encoding='UTF-8'?>
<delivery>
	<list_person>
		<person>
			<name>Bauer</name><firstname>Willi</firstname>
			<list_hobby>
				<hobby name='jogging'>
				</hobby>
			</list_hobby>
		</person>
		<person>
			<name>Fischer</name><firstname>Albert</firstname>
			<list_hobby>
				<hobby name='cooking'>
				</hobby>
			</list_hobby>
		</person>
		<person>
			<name>Fischer</name><firstname>Werner</firstname>
			<list_hobby>
				<hobby name='hiking'>
				</hobby>
				<hobby name='hunting'>
				</hobby>
				<hobby name='reading'>
				</hobby>
			</list_hobby>
		</person>
	</list_person>
</delivery>