my $input := open 935956.xml ; my $student_hash := hash concat(@name, '#', @number) $input/xml/data/student ; my $semister_hash := hash ../@number $input/xml/data/semister/@subject_names ; my $out := create xml ; for my $university in $input/xml/university { my $new_uni := cp $university into $out/xml ; for my $student in $new_uni//student { cp xsh:lookup('student_hash', concat($student/@name, '#', $student/@number))/@address into $student ; for $student/semester cp xsh:lookup('semister_hash', ./@number) into . ; } } save :f 935956-out.xml $out ;