# # Utility Functions to output XML # # xml_escape () { local res="$2" res=${res/\&/\&} res=${res/\"/\"} res=${res/\'/\'} res=${res/\/\>} eval "${1}=\"${res}\"" } xml_element () { if [ -z $1 ]; then echo "ERROR: missing element name" return -1 fi local count=1 local tag="" local data="" local val="" for i in $@ ; do if [ $count = 1 ]; then xml_escape "tag" "${i}" printf "<${tag}" elif [ $((count % 2)) -eq 0 ]; then xml_escape "data" "${i}" else xml_escape "val" "${i}" printf " ${data}=\"${val}\"" data="" fi let ++count done if [ ! -z ${data} ]; then printf ">${data}" fi return 0 } start_xml_element () { if [ -z $1 ]; then echo "ERROR: missing element name" return -1 fi local count=1 local tag="" local data="" local val="" for i in $@ ; do if [ $count = 1 ]; then xml_escape "tag" "${i}" printf "<${tag}" elif [ $((count % 2)) -eq 0 ]; then xml_escape "data" "${i}" else xml_escape "val" "${i}" printf " ${data}=\"${val}\"" data="" fi let ++count done if [ ! -z ${data} ]; then echo "ERROR: missing value for attribute ${data}" return -1 fi printf ">" return 0 } close_xml_element () { if [ -z $1 ]; then echo "ERROR: missing element name" return -1 fi local tag="" xml_escape "tag" "${1}" printf "" return 0 } # ex:ts=4:et: