5e2115
1,/
5e2115
5e2115
# on each new iso-code process the current one
5e2115
\!\(<iso_639_entry\|</iso_639_entries>\)!{
5e2115
    x
5e2115
    s/^$//
5e2115
    # we are on the first iso-code--nothing to process here
5e2115
    t
5e2115
    # process and write to output
5e2115
    s/\s\+/ /g
5e2115
    s/
5e2115
    s!/\s*>!!
5e2115
    # use '%' as a separator of parsed and unparsed input
5e2115
    s/\(.*\)iso_639_2T_code="\([^"]\+\)"\(.*\)/\2 % \1 \3/
5e2115
    s/\([^%]\+\)%\(.*\)iso_639_2B_code="\([^"]\+\)"\(.*\)/\1\t\3 % \2 \4/
5e2115
    #  clear subst. memory for the next t
5e2115
    t clear
5e2115
    :clear
5e2115
    s/\([^%]\+\)%\(.*\)iso_639_1_code="\([^"]\+\)"\(.*\)/\1\t\3 % \2 \4/
5e2115
    t name
5e2115
    # no 639-1 code--write xx
5e2115
    s/%/\tXX %/
5e2115
    :name
5e2115
    s/\([^%]\+\)%\(.*\)name="\([^"]\+\)"\(.*\)/\1\t\3/
5e2115
    s/ \t/\t/g
5e2115
    p
5e2115
    b
5e2115
    :noout
5e2115
}
5e2115
5e2115
H