Beispiel Umgruppieren test88: Drehen einer Hierarchie

Basissteuerung-Datei: cmp88.xml
<?xml version="1.0" encoding="UTF-8"?>
<delivery>
	<list_person>
		<person>
			<firstname                         ident_text="true"  />
			<name                              ident_text="true"  />
			<list_address>
				<address>
					<street            ident_text="true"  />
					<houseno           ident_text="true"  />
					<residence         ident_text="true"  />
				</address>
			</list_address>
		</person>
	</list_person>
</delivery>
Konvertierungssteuerungs-Datei: toxml88.xml
<?xml version="1.0" encoding="UTF-8"?>
<delivery>
	<list_address>
		<address>
			<street                     ident_text="true"  />
			<houseno                    ident_text="true"  />
			<residence                  ident_text="true"  />

			<list_person>
				<person>
					<firstname  ident_text="true"  />
					<name       ident_text="true"  />
				</person>
			</list_person>

		</address>
	</list_address>
</delivery>

Erläuterung

Die Datei "test88.xml" enthält eine Liste von Personen mit deren Adressen.
Diese Xml-Daten sollen konvertiert werden.
Es sollen alle Adressen gelistet werden mit all den Personen, die an der jeweiligen Adresse leben.
Somit wird die Hierarchie gleichsam gedreht und auf den Kopf gestellt.

Datei: test88.xml
<?xml version='1.0' encoding='UTF-8'?>
<delivery>
	<list_person>
		<person>
			<name>Fischer</name>
			<firstname>Hildegard</firstname>
			<list_address>
				<address>
					<residence>Frankfurt</residence>
					<street>Mainstr.</street>
					<houseno>2</houseno>
				</address>
			</list_address>
		</person>
		<person>
			<name>Fischer</name>
			<firstname>Josef</firstname>
			<list_address>
				<address>
					<residence>Frankfurt</residence>
					<street>Mainstr.</street>
					<houseno>2</houseno>
				</address>
			</list_address>
		</person>
		<person>
			<name>Bauer</name>
			<firstname>Josef</firstname>
			<list_address>
				<address>
					<residence>Frankfurt</residence>
					<street>Mainstr.</street>
					<houseno>3</houseno>
				</address>
			</list_address>
		</person>
	</list_person>
</delivery>

Konvertierungsergebnis auf stdout
<?xml version='1.0' encoding='UTF-8'?>
<delivery>
	<list_address>
		<address>
			<street>Mainstr.</street><houseno>2</houseno><residence>Frankfurt</residence>
			<list_person>
				<person>
					<firstname>Hildegard</firstname><name>Fischer</name>
				</person>
				<person>
					<firstname>Josef</firstname><name>Fischer</name>
				</person>
			</list_person>
		</address>
		<address>
			<street>Mainstr.</street><houseno>3</houseno><residence>Frankfurt</residence>
			<list_person>
				<person>
					<firstname>Josef</firstname><name>Bauer</name>
				</person>
			</list_person>
		</address>
	</list_address>
</delivery>