Testing to see if a WYSIWYG field can be tricky since the field could either contain plain text or HTML elements.

One solution is to test if the value of an XML Element is not empty, or if the Element contains children (ie the HTML elements).

Using Velocity

With the Cascade API

## Record the WYSIWYG field
#set ( $wysiwygField = $callingPage.getStructuredDataNode("wysiwyg-field"))

## Test to see if the field's value is not empty
#if (!$_PropertyTool.isEmpty($wysiwygField.textValue))
   $wysiwygField.textValue
#end

With an Index Block

## Record the WYSIWYG field
#set ( $wysiwygField = $_XPathTool.selectSingleNode($contentRoot, "//wysiwyg-field"))

## Test to see if the Element's value is not empty, or if the Element has children
#if ($wysiwygField.value != "" or $wysiwygField.getChildren().size() > 0)
    $_SerializerTool.serialize($wysiwygField, true))
#end

Using XSLT

<xsl:if test="wysiwygField/node()">
    <!-- use xsl:copy-of here to make sure that all child nodes and attributes are copied as well -->
    <xsl:copy-of select="wysiwygField/node()"/>
</xsl:if>
Did this answer your question?