Altova Mailing List Archives>Archive Index >comp.text.xml Archive Home >Recent entries >Thread Prev - Joining XML files? [Thread Next] Re: Joining XML files?To: NULL Date: 7/6/2008 6:53:00 PM rhino wrote: > > Given that these are two separate XML files but that there is some common > information, specifically the department number, could I use XSLT to > generate a report that shows me each department name followed by the names > of the people who work in the department? Something like this: > > Marketing > Department Number: 001 > Location: New York > Manager: T. Jones > > Other Staff > E. Humperdinck > E. Presley > J. Hendrix > > Information Systems > Department Number: 666 > Location: Toronto > Manager: M. Slate > > Other Staff > F. Flintstone > B. Rubble > J. Rockhead > Just in case you (or someone else) might be interested in a non-XSLT solution: here a small xgawk script that does the job. $ cat departments.xml <?xml version="1.0" encoding="UTF-8"?> <departments> <department> <department_number>001</department_number> <name>Marketing</name> <location>New York</location> <manager>T. Jones</manager> </department> <department> <department_number>666</department_number> <name>Information Systems</name> <location>Toronto</location> <manager>M. Slate</manager> </department> </departments> $ cat employees.xml <?xml version="1.0" encoding="UTF-8"?> <employees> <employee> <name>E. Humperdinck</name> <department_number>001</department_number> </employee> <employee> <name>E. Presley</name> <department_number>001</department_number> </employee> <employee> <name>J. Hendrix</name> <department_number>001</department_number> </employee> <employee> <name>F. Flintstone</name> <department_number>666</department_number> </employee> <employee> <name>B. Rubble</name> <department_number>666</department_number> </employee> <employee> <name>J. Rockhead</name> <department_number>666</department_number> </employee> </employees> $ cat join.awk @load xml XMLSTARTELEM {data = "" ; next} XMLCHARDATA {data = $0 ; next} XMLDEPTH == 3 && XMLENDELEM { a[XMLENDELEM] = data dept = a["department_number"] } NR == FNR && XMLENDELEM == "employee" { o[dept] = o[dept] sep[dept] " " a["name"] sep[dept] = "\n" next } XMLENDELEM == "department" { print a["name"] print " Department Number: " dept print " Location: " a["location"] print " Manager: " a["manager"] print ORS " Other Staff" ORS o[dept] ORS } END {if (XMLERROR) print XMLERROR} $ xgawk -f join.awk employees.xml departments.xml Marketing Department Number: 001 Location: New York Manager: T. Jones Other Staff E. Humperdinck E. Presley J. Hendrix Information Systems Department Number: 666 Location: Toronto Manager: M. Slate Other Staff F. Flintstone B. Rubble J. Rockhead | ||||||
| Company | Legal | Press | Partners | Careers | Sitemap | Contact Us | Altova Blog | Mobile | Full Site | |||
|
