output an element only if it has a value. : value of « XSLT stylesheet « XML Tutorial






File: Data.xml
<?xml version="1.0" encoding="utf-8"?>
<table>
  <element> element 1 </element>
  <element> element 2 </element>
  <element/>
  <element/>
  <element> element           3</element>
</table>
File: Transform.xslt

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet
      version="1.0"
      xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

    <xsl:template match="table">
      <TABLE BORDER="1">
        <xsl:for-each select="element">
          <xsl:apply-templates select="."/>
        </xsl:for-each>
      </TABLE>
    </xsl:template>
    <xsl:template match="element">
      <xsl:variable name="tmp">
        <xsl:value-of select="."/>
      </xsl:variable>
      <xsl:if test="boolean(normalize-space($tmp))">
        <TR>
          <TD>
            <xsl:value-of select="$tmp"/>
          </TD>
        </TR>
      </xsl:if>
    </xsl:template>
</xsl:stylesheet>

Output:

<?xml version="1.0" encoding="UTF-8"?><TABLE BORDER="1"><TR><TD> element 1 </TD></TR><TR><TD> element 2 </TD></TR><TR><TD> element           3</TD></TR></TABLE>








5.72.value of
5.72.1.Use value-of to get element value from different level
5.72.2.Select value from an element
5.72.3.value-of select="."
5.72.4.value-of select=cars/manufacturer/@name separator=,
5.72.5.value-of select=format-date($date, [M01]/[D01]/[Y0001])
5.72.6.value-of select=replace($sub2, ', '')
5.72.7.output an element only if it has a value.
5.72.8.the output without empty elements removal