Document Printer Template (XAML) empty string

Is there a way for the document printer template to skip rendering elements that are empty strings?

[SORTED ORDER TAGS]
-- Format for order tags

<Table FontSize="10" CellSpacing="0" Margin="0" Padding="0">
	<Table.Columns>
		<TableColumn Width="45*"/>
		<TableColumn Width="15*"/>
		<TableColumn Width="20*"/>
		<TableColumn Width="20*"/>
	</Table.Columns>
	<TableRowGroup>
		<TableRow>
			<TableCell Padding="0"><Paragraph Margin="0" TextAlignment="Left"><![CDATA[[= F(TN('{ORDER TAG PRICE}')) != 0 ? '     {ORDER TAG NAME}' : '']]]></Paragraph></TableCell>
			<TableCell Padding="0"><Paragraph Margin="0" TextAlignment="Center">[= F(TN('{ORDER TAG PRICE}')) != 0 ? F({ORDER TAG QUANTITY}*{QUANTITY},'#.#') : '']</Paragraph></TableCell>
			<TableCell Padding="0"><Paragraph Margin="0" TextAlignment="Center">[= F(TN('{ORDER TAG PRICE}')) != 0 ? '{ORDER TAG PRICE}' : '']</Paragraph></TableCell>
			<TableCell Padding="0"><Paragraph Margin="0" TextAlignment="Right">[= F(TN('{ORDER TAG PRICE}')) != 0 ? F({ORDER TAG PRICE}*{ORDER TAG QUANTITY}*{QUANTITY}) : '']</Paragraph></TableCell>
		</TableRow>
	</TableRowGroup>
</Table>

Wrapping the whole thing in ternary expression works.

[SORTED ORDER TAGS]
-- Format for order tags

[=TN('{ORDER TAG PRICE}') != 0 ? '<Table FontSize="10" CellSpacing="0" Margin="0" Padding="0"><Table.Columns><TableColumn Width="45*"/><TableColumn Width="15*"/><TableColumn Width="20*"/><TableColumn Width="20*"/></Table.Columns><TableRowGroup><TableRow><TableCell Padding="20,0,0,0"><Paragraph Margin="0" TextAlignment="Left">{ORDER TAG NAME}</Paragraph></TableCell><TableCell Padding="0"><Paragraph Margin="0" TextAlignment="Center">' + F({ORDER TAG QUANTITY}*{QUANTITY},'#.#') + '</Paragraph></TableCell><TableCell Padding="0"><Paragraph Margin="0" TextAlignment="Center">{ORDER TAG PRICE}</Paragraph></TableCell><TableCell Padding="0"><Paragraph Margin="0" TextAlignment="Right">' + F({ORDER TAG PRICE}*{ORDER TAG QUANTITY}*{QUANTITY}) + '</Paragraph></TableCell></TableRow></TableRowGroup></Table>' : '']

But you wont be able to sanitize the name with <![CDATA[{ORDER TAG NAME}]]> within the ternary expression. And you don’t want to experience this error mid service when printing templates

Automation > Scripts > Add Script
Name: Utils
Handler: util
Script:

function xmlEncode(text) {
    return text.replace(/&/g, '&amp;')
        .replace(/</g, '&lt;')
        .replace(/>/g, '&gt;')
        .replace(/"/g, '&quot;')
        .replace(/'/g, '&apos;')
        .replace(/[\x00-\x08\x0B\x0C\x0E-\x1F]/g, '');
}

Since you cant use native CDATA to sanitize text, you have to call this script to clean up
{CALL:util.xmlEncode('{ORDER TAG NAME}')}

[SORTED ORDER TAGS]
-- Format for order tags
[=TN('{ORDER TAG PRICE}') != 0 ? '<Table FontSize="10" CellSpacing="0" Margin="0" Padding="0"><Table.Columns><TableColumn Width="45*"/><TableColumn Width="15*"/><TableColumn Width="20*"/><TableColumn Width="20*"/></Table.Columns><TableRowGroup><TableRow><TableCell Padding="20,0,0,0"><Paragraph Margin="0" TextAlignment="Left">{CALL:util.xmlEncode('{ORDER TAG NAME}')}</Paragraph></TableCell><TableCell Padding="0"><Paragraph Margin="0" TextAlignment="Center">' + F({ORDER TAG QUANTITY}*{QUANTITY},'#.#') + '</Paragraph></TableCell><TableCell Padding="0"><Paragraph Margin="0" TextAlignment="Center">{ORDER TAG PRICE}</Paragraph></TableCell><TableCell Padding="0"><Paragraph Margin="0" TextAlignment="Right">' + F({ORDER TAG PRICE}*{ORDER TAG QUANTITY}*{QUANTITY}) + '</Paragraph></TableCell></TableRow></TableRowGroup></Table>' : '']