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