title: XML transformation using XSLT - truncating null nodes
body: <p>I have the following XML:</p>
  
  <pre><code>&lt;EMPLOYEE_LIST&gt;
     &lt;EMPLOYEES&gt;
        &lt;EMPLOYEE&gt;
           &lt;EMPID&gt;650000&lt;/EMPID&gt;
           &lt;FIRST_NAME&gt;KEITH&lt;/FIRST_NAME&gt;
           &lt;MIDDLE_NAME&gt;HUTCHINSON&lt;/MIDDLE_NAME&gt;
           &lt;LAST_NAME&gt;ROGERS&lt;/LAST_NAME&gt;
           .
           .
           .
           .
           &lt;EMP_ADDR&gt;
              &lt;STREET&gt;A&lt;/STREET&gt;
              &lt;CITY&gt;B&lt;/CITY&gt;
              &lt;STATE&gt; &lt;/STATE&gt;
              &lt;ZIP&gt;90210&lt;/ZIP&gt;
              &lt;COUNTRY&gt;C&lt;/COUNTRY&gt;
           &lt;/EMP_ADDR&gt; 
           &lt;EMP_ADDR&gt;
              &lt;STREET&gt;G&lt;/STREET&gt;
              &lt;CITY&gt;H&lt;/CITY&gt;
              &lt;STATE&gt;I&lt;/STATE&gt;
              &lt;ZIP&gt; &lt;/ZIP&gt;
              &lt;COUNTRY&gt; &lt;/COUNTRY&gt;
           &lt;/EMP_ADDR&gt;
         &lt;/EMPLOYEE&gt;
      &lt;/EMPLOYEES&gt;
  &lt;/EMPLOYEE_LIST&gt;
  </code></pre>
  
  <p>It gives me the under-mentioned output:</p>
  
  <pre><code>&lt;?xml version="1.0" encoding="UTF-8"?&gt;
  &lt;employees&gt;
        &lt;employee&gt;
           &lt;emp_id&gt;111345&lt;/emp_id&gt;
           &lt;f_name&gt;KEITH&lt;/f_name&gt;
           &lt;m_name&gt;HUTCHINSON&lt;/m_name&gt;
           &lt;l_name&gt;ROGERS&lt;/l_name&gt;
           .
           .
           .
           .
           &lt;addresses&gt;
              &lt;addr&gt;A&lt;/addr&gt;
              &lt;city&gt;B&lt;/city&gt;
              &lt;province/&gt;
              &lt;postal&gt;90210&lt;/postal&gt;
              &lt;country&gt;C&lt;/country&gt;
           &lt;/addresses&gt;
           &lt;addresses&gt;
              &lt;addr&gt;G&lt;/addr&gt;
              &lt;city&gt;H&lt;/city&gt;
              &lt;province&gt;I&lt;/province&gt;
              &lt;postal/&gt;
              &lt;country/&gt;
           &lt;/addresses&gt;
        &lt;/employee&gt;
  &lt;/employees&gt;
  </code></pre>
  
  <p>When transformed using this XSLT:</p>
  
  <pre><code>&lt;?xml version="1.0" encoding="UTF-8"?&gt;
  &lt;xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"&gt;
      &lt;xsl:output method="xml" encoding="UTF-8" indent="yes"/&gt;
      &lt;xsl:strip-space elements="*"/&gt;
          &lt;xsl:template match="/EMPLOYEE_LIST"&gt;
              &lt;employees&gt;
                  &lt;xsl:apply-templates select="EMPLOYEES/node()"/&gt;
              &lt;/employees&gt;        
          &lt;/xsl:template&gt;
  
          &lt;xsl:template match="EMPLOYEE"&gt;
          &lt;employee&gt;
              &lt;xsl:apply-templates select="*"/&gt;
          &lt;/employee&gt;
          &lt;/xsl:template&gt;
  
          &lt;xsl:template match="EMPLOYEE/EMPID"&gt;
          &lt;emp_id&gt;
              &lt;xsl:value-of select="."/&gt;
          &lt;/emp_id&gt;
          &lt;/xsl:template&gt;
  
          &lt;xsl:template match="EMPLOYEE/FIRST_NAME"&gt;
          &lt;f_name&gt;
              &lt;xsl:value-of select="."/&gt;
          &lt;/f_name&gt;
          &lt;/xsl:template&gt;
  
          &lt;xsl:template match="EMPLOYEE/MIDDLE_NAME"&gt;
              &lt;m_name&gt;
                  &lt;xsl:value-of select="."/&gt;
              &lt;/m_name&gt;
          &lt;/xsl:template&gt;
  
          &lt;xsl:template match="EMPLOYEE/LAST_NAME"&gt;
              &lt;l_name&gt;
                  &lt;xsl:value-of select="."/&gt;
              &lt;/l_name&gt;
          &lt;/xsl:template&gt;
          .
          .
          .
          .
          .
         &lt;xsl:template match="EMPLOYEE/EMP_ADDR[position() &amp;lt; 5]"&gt;
          &lt;addresses&gt;
              &lt;addr&gt;
                  &lt;xsl:value-of select="normalize-space(STREET)"/&gt;
              &lt;/addr&gt;
              &lt;city&gt;
                  &lt;xsl:value-of select="normalize-space(CITY)"/&gt;
              &lt;/city&gt;
          &lt;province&gt;
                  &lt;xsl:value-of select="normalize-space(STATE)"/&gt;
              &lt;/province&gt;
              &lt;postal&gt;
                  &lt;xsl:value-of select="normalize-space(ZIP)"/&gt;
              &lt;/postal&gt;
              &lt;country&gt;
                  &lt;xsl:value-of select="normalize-space(COUNTRY)"/&gt;
              &lt;/country&gt;
          &lt;/addresses&gt;
        &lt;/xsl:template&gt;
  &lt;/xsl:stylesheet&gt;
  </code></pre>
  
  <p>Which is not what I am trying to achieve as I need the output with null nodes truncated/removed as follows:</p>
  
  <pre><code>&lt;?xml version="1.0" encoding="UTF-8"?&gt;
  &lt;employees&gt;
        &lt;employee&gt;
           &lt;emp_id&gt;111345&lt;/emp_id&gt;
           &lt;f_name&gt;KEITH&lt;/f_name&gt;
           &lt;m_name&gt;HUTCHINSON&lt;/m_name&gt;
           &lt;l_name&gt;ROGERS&lt;/l_name&gt;
           .
           .
           .
           .
           &lt;addresses&gt;
              &lt;addr&gt;A&lt;/addr&gt;
              &lt;city&gt;B&lt;/city&gt;
              &lt;postal&gt;90210&lt;/postal&gt;
              &lt;country&gt;C&lt;/country&gt;
           &lt;/addresses&gt;
           &lt;addresses&gt;
              &lt;addr&gt;G&lt;/addr&gt;
              &lt;city&gt;H&lt;/city&gt;
              &lt;province&gt;I&lt;/province&gt;
           &lt;/addresses&gt;
        &lt;/employee&gt;
  &lt;/employees&gt;
  </code></pre>
  
  <p>Is there any way to do it and can anyone assist me with me?</p>
  
  <p>Thanks</p>