In a Custom Control: <xp:table styleClass="xspDataTableViewPanel"> <xp:tr> <xp:td styleClass="xspDataTableViewPanelHeaderStart"> <xp:text themeId="Text.Blank"></xp:text> </xp:td> <xp:td styleClass="xspDataTableViewPanelHeaderMiddle"> <xp:text themeId="Text.Blank"></xp:text> </xp:td> <xp:td styleClass="xspDataTableViewPanelHeaderEnd"> <xp:callback facetName="headerRight" id="callback1"></xp:callback> <xp:text themeId="Text.Blank"></xp:text> </xp:td> </xp:tr> <xp:tr> <xp:td colspan="3" style="padding:0"> <xp:callback id="callback2"></xp:callback> </xp:td> </xp:tr> <xp:tr> <xp:td styleClass="xspDataTableViewPanelFooterStart"> <xp:text themeId="Text.Blank"></xp:text> </xp:td> <xp:td styleClass="xspDataTableViewPanelFooterMiddle"> <xp:text themeId="Text.Blank"></xp:text> </xp:td> <xp:td styleClass="xspDataTableViewPanelFooterEnd"> <xp:callback facetName="footerRight" id="callback1"></xp:callback> <xp:text themeId="Text.Blank"></xp:text> </xp:td> </xp:tr> </xp:table> Theme Code for Text.Blank: <control override="true"> <name>Text.Blank</name> <property mode="override"> <name>escape</name> <value>#{false}</value> </property> <property mode="override"> <name>value</name> <value>&nbsp;</value> </property> </control>