--- /dev/null
+#!/bin/sh
+# converts the <rules>.xml file to the old format <rules>.lst file
+# Usage: xml2lst < filename.xml > filename.lst
+
+var=0 com=0 nam=''
+
+printf '! model\n'
+while read -r l || [ "$l" ]; do case $l in
+ *'<name>'*) n=${l#*>} n=${n%<*};;
+ *'<description>'*) l=${l#*>}; printf ' %-15s %s\n' "$n" "${l%<*}" ;;
+ *'</modelList>'*) break
+esac; done
+
+printf '\n! layout\n'
+while read -r l || [ "$l" ]; do case $l in
+ *'<variantList>'*) var=1;;
+ *'</variantList>'*) var=0;;
+ *'</layoutList>'*) break;;
+
+ *'<name>'*)
+ l="${l#*>}"
+ [ "$var" -eq 0 ] && ln=${l%<*} || n=${l%<*}
+ ;;
+
+ *'<description>'*)
+ l=${l#*>}
+
+ case $var in
+ 0) printf ' %-15s %s\n' "${ln}" "${l%<*}" ;;
+ *) nam="${nam%x} $(printf '%-15s %s: %s\nx' "$n" "$ln" "${l%<*}")"
+ esac
+ ;;
+esac; done
+
+printf '\n! variant\n%s\n! option\n' "${nam%x}"
+while read -r l || [ "$l" ]; do case $l in
+ *'-->'*) com=0;;
+ *'<!--'*) com=1;;
+ *'</optionList>'*) break;;
+ *'<name>'*) n=${l#*>} n=${n%<*} ;;
+
+ *'<description>'*)
+ l=${l#*>}
+
+ [ "$com" -ne 0 ] || printf ' %-20s %s\n' "$n" "${l%<*}"
+ ;;
+esac; done