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