From what I can see, your HTML TD tag terminates and there is a blank character before the character data you have in your title. Move the start of your title to be right up against the ">" character if you have an issue with an imbedded blank.
It looks to me as though:
1) you are using a custom tagset template
2) you are using a custom HTML tagset template (because of the mso-number-format syntax)
3) you are calling the file .XLS because you want Excel to launch and render the file.
When you use ODS to create a file for Excel to open, you are generally using one of these 3 methods:
1) ODS CSV (or a modified tagset template based on ODS CSV) -- file type created is ASCII text comma separated value file that Excel can open and render.
2) ODS HTML (or a modified tagset template based on ODS HTML, ODS MSOFFICE2K, ODS HTML3, ODS CHTML or any of the other HTML-based templates) -- file type created is ASCII text HTML file that Excel can open and render
3) ODS TAGSETS.EXCELXP (or a modified tagset template based on ODS TAGSETS.EXCELXP) -- file created is an ASCII Spreadsheet Markup Language XML file that Excel can open and render
Since your code snippet refers to tagset=test, it is unclear which one of these 3 tagset templates you used as the parent for your custom tagset template. However, keep in mind that mso-number-format will ONLY work with HTML-based output from ODS -- not with CSV or ExcelXP output.
It is very tricky to post code with < or > to the forum. And, besides, someone really needs to look at your PROC TEMPLATE code and your entire program to see what might be happening in your tagset template definition. If you wrote your template to have a mix of XML and HTML, you might not get the results you want when Excel opens the file.
This is the kind of question that is best directed to Tech Support, as they can look at -ALL- your code and help you find some resolution.