title: xsl is generating output even when no element is matching
body: <p>An xsl to convert an xml file is generating output even when no input elements are satisfying the condtiton. the xsl file is as below </p>
  
  <pre><code>&lt;?xml version="1.0" encoding="UTF-8"?&gt;
  &lt;xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"&gt;
      &lt;xsl:output method="text" encoding="UTF-8"/&gt;
      &lt;xsl:template match="Root/Order"&gt;
          &lt;xsl:choose&gt;
              &lt;xsl:when test="Order1/task or Order2/task or task"&gt;
                  &lt;xsl:value-of select="ID"/&gt;&lt;xsl:text&gt;|&lt;/xsl:text&gt; 
                  &lt;xsl:value-of select="cust/custId"/&gt;&lt;xsl:text&gt;|&lt;/xsl:text&gt; 
                  &lt;xsl:value-of select="cust/System"/&gt;&lt;xsl:text&gt;|&lt;/xsl:text&gt; 
                  &lt;xsl:value-of select="cust/Number"/&gt;&lt;xsl:text&gt;|&lt;/xsl:text&gt; 
                  &lt;xsl:value-of select="make/Number"/&gt;&lt;xsl:text&gt;|&lt;/xsl:text&gt; 
                  &lt;xsl:value-of select="make/Status"/&gt;&lt;xsl:text&gt;|&lt;/xsl:text&gt; 
                  &lt;xsl:value-of select="make/Indi"/&gt;&lt;xsl:text&gt;|&lt;/xsl:text&gt; 
                  &lt;xsl:value-of select="make/Code"/&gt;&lt;xsl:text&gt;|&lt;/xsl:text&gt; 
                  &lt;xsl:value-of select="tasks/lno"/&gt;&lt;xsl:text&gt;|&lt;/xsl:text&gt;
                  &lt;xsl:value-of select="tasks/val"/&gt;&lt;xsl:text&gt;&amp;#xa;&lt;/xsl:text&gt;
              &lt;/xsl:when&gt;
              &lt;xsl:otherwise&gt;&lt;/xsl:otherwise&gt;
          &lt;/xsl:choose&gt;
          &lt;xsl:for-each select="task"&gt;
                  &lt;xsl:value-of select="ID"/&gt;&lt;xsl:text&gt;|&lt;/xsl:text&gt; 
                  &lt;xsl:value-of select="cust/custId"/&gt;&lt;xsl:text&gt;|&lt;/xsl:text&gt; 
                  &lt;xsl:value-of select="cust/System"/&gt;&lt;xsl:text&gt;|&lt;/xsl:text&gt; 
                  &lt;xsl:value-of select="cust/Number"/&gt;&lt;xsl:text&gt;|&lt;/xsl:text&gt; 
                  &lt;xsl:value-of select="make/Number"/&gt;&lt;xsl:text&gt;|&lt;/xsl:text&gt; 
                  &lt;xsl:value-of select="make/Status"/&gt;&lt;xsl:text&gt;|&lt;/xsl:text&gt; 
                  &lt;xsl:value-of select="make/Indi"/&gt;&lt;xsl:text&gt;|&lt;/xsl:text&gt; 
                  &lt;xsl:value-of select="make/Code"/&gt;&lt;xsl:text&gt;|&lt;/xsl:text&gt; 
                  &lt;xsl:value-of select="tasks/lno"/&gt;&lt;xsl:text&gt;|&lt;/xsl:text&gt;
                  &lt;xsl:value-of select="tasks/val"/&gt;&lt;xsl:text&gt;&amp;#xa;&lt;/xsl:text&gt;
          &lt;/xsl:for-each&gt;
          &lt;xsl:for-each select="Order1"&gt;
              &lt;xsl:for-each select="task"&gt;
                  &lt;xsl:value-of select="ID"/&gt;&lt;xsl:text&gt;|&lt;/xsl:text&gt; 
                  &lt;xsl:value-of select="cust/custId"/&gt;&lt;xsl:text&gt;|&lt;/xsl:text&gt; 
                  &lt;xsl:value-of select="cust/System"/&gt;&lt;xsl:text&gt;|&lt;/xsl:text&gt; 
                  &lt;xsl:value-of select="cust/Number"/&gt;&lt;xsl:text&gt;|&lt;/xsl:text&gt; 
                  &lt;xsl:value-of select="make/Number"/&gt;&lt;xsl:text&gt;|&lt;/xsl:text&gt; 
                  &lt;xsl:value-of select="make/Status"/&gt;&lt;xsl:text&gt;|&lt;/xsl:text&gt; 
                  &lt;xsl:value-of select="make/Indi"/&gt;&lt;xsl:text&gt;|&lt;/xsl:text&gt; 
                  &lt;xsl:value-of select="make/Code"/&gt;&lt;xsl:text&gt;|&lt;/xsl:text&gt; 
                  &lt;xsl:value-of select="tasks/lno"/&gt;&lt;xsl:text&gt;|&lt;/xsl:text&gt;
                  &lt;xsl:value-of select="tasks/val"/&gt;&lt;xsl:text&gt;&amp;#xa;&lt;/xsl:text&gt;
              &lt;/xsl:for-each&gt;
          &lt;/xsl:for-each&gt;
          &lt;xsl:for-each select="Order2"&gt;
              &lt;xsl:for-each select="task"&gt;
                  &lt;xsl:value-of select="ID"/&gt;&lt;xsl:text&gt;|&lt;/xsl:text&gt; 
                  &lt;xsl:value-of select="cust/custId"/&gt;&lt;xsl:text&gt;|&lt;/xsl:text&gt; 
                  &lt;xsl:value-of select="cust/System"/&gt;&lt;xsl:text&gt;|&lt;/xsl:text&gt; 
                  &lt;xsl:value-of select="cust/Number"/&gt;&lt;xsl:text&gt;|&lt;/xsl:text&gt; 
                  &lt;xsl:value-of select="make/Number"/&gt;&lt;xsl:text&gt;|&lt;/xsl:text&gt; 
                  &lt;xsl:value-of select="make/Status"/&gt;&lt;xsl:text&gt;|&lt;/xsl:text&gt; 
                  &lt;xsl:value-of select="make/Indi"/&gt;&lt;xsl:text&gt;|&lt;/xsl:text&gt; 
                  &lt;xsl:value-of select="make/Code"/&gt;&lt;xsl:text&gt;|&lt;/xsl:text&gt; 
                  &lt;xsl:value-of select="tasks/lno"/&gt;&lt;xsl:text&gt;|&lt;/xsl:text&gt;
                  &lt;xsl:value-of select="tasks/val"/&gt;&lt;xsl:text&gt;&amp;#xa;&lt;/xsl:text&gt;
              &lt;/xsl:for-each&gt;
          &lt;/xsl:for-each&gt;
      &lt;/xsl:template&gt;
  &lt;/xsl:stylesheet&gt;
  </code></pre>
  
  <p>Input xml file is as below.</p>
  
  <pre><code>&lt;cust&gt;
          &lt;Date&gt;2018-04-16&lt;/Date&gt;
          &lt;name&gt;abc&lt;/name&gt;
          &lt;code&gt;xyz10&lt;/code&gt;
          &lt;custId&gt;abc123&lt;/custId&gt;
          &lt;System&gt;main&lt;/System&gt;
          &lt;Number&gt;TANK&lt;/Number&gt;
      &lt;/cust&gt;
  </code></pre>
  
  <p>My understanding is as the cust is not matching the defined template match or when condition, there should no be an output. But when I do the conversion output is as below.</p>
  
  <pre><code>2018-04-16
  abc
  xyz10
  abc123
  main
  TANK
  </code></pre>
  
  <p>I believe as there are no defined template rules for the input, built in template rules are called during processing and they are generating output. I am not certain whether that is the correct reason or not. request you for an answer. thanks in advance. </p>