The IFS variable is for input not for output.
Most of your script seems to be creating a file that is embedded in the script. Your script doesn't seem to be calling another script however. Look at "here" documents in the bash info manual. (section 3.6.5) That is how embedded scripts & files are usually written. The scripts can contain variables which are expanded, depending on how the terminator is written after the << characters.
Code:
cat >>$XMLHOME/$NAME << -EOF
<product>
<itemNumber>$WC</itemNumber>
<name>Shopping Cart Cover</name>
<price>59.99</price>
<description>$i</description>
<pic>$SM/$i.jpg</pic>
<picture>$BM/$i.jpg</picture>
<size>No Options</size>
<color>No Shipping Options,</color>
</product>
EOF
Your code could perhaps construct an xml file in parts. First cat'ing a file (>) that contains your standard header. Second adding a <product>..</product> entry for each product entry you need (>>), and finally adding the last line(s) which may contain a closing tags if any from the first header part.
This is how a lot of software was distributed in the past. An installation script would contain a number of embedded files which were created when the script was run.