I would approach that more like this:
DECLARE @xml XML
SET @xml = (
SELECT
(
SELECT
'ZID' AS "@_Name",
'789' AS "@_Value",
'ZID' AS "@_ID"
FOR XML PATH('KEY'), TYPE
),
(
SELECT
ZLN,
ZTLA,
ZMR,
ZCLS,
ZPITIP
FROM #ZDL ZL
FOR XML AUTO, ELEMENTS, TYPE
),
(
SELECT
ZBN,
ZFN,
ISNULL(ZMN,'') AS ZMN,
ZLL
FROM #ZBL ZB
FOR XML AUTO, ELEMENTS, TYPE
) AS ZBS,
(
SELECT
ZSN,
ZCE
FROM #ZCC ZC
FOR XML AUTO, ELEMENTS, TYPE
) AS ZCC,
(
SELECT
ZPT,
ZPP,
ZNU
FROM #ZP ZL
FOR XML AUTO, ELEMENTS, TYPE
)
FOR XML PATH(''), ELEMENTS, ROOT('TEST_DATA')
)
-- Fix up the header; NVARCHAR hack
SET @xml = REPLACE( CAST( @xml AS NVARCHAR(MAX) ), '<TEST_DATA>', '<TEST_DATA xmlns="http://www.TestData.com/Schema/Test">' )
SELECT @xml x