title: Nested loop in XSLT
body: <p>I have tried to perform nested loop in the XSL file but got stuck after several attempt</p>
  
  <p>My xml file goes like this way</p>
  
  <pre><code>&lt;chromosome cnumber="X" cstart="10000" cend="1000000"&gt;
      &lt;gene&gt;
          &lt;gname&gt;ENSG00000216667&lt;/gname&gt;
          &lt;gstart&gt;100411&lt;/gstart&gt;
          &lt;gend&gt;102713&lt;/gend&gt;
          &lt;external_ref&gt;
              &lt;one&gt;OTTG:OTTHUMG00000046372&lt;/one&gt;
              &lt;two&gt;HGNC:CXYorf11&lt;/two&gt;
              &lt;three&gt;HGNC_curated_gene:CXYorf11&lt;/three&gt;
          &lt;/external_ref&gt;
          &lt;transcript&gt;
              &lt;tname&gt;ENST00000406851&lt;/tname&gt;
              &lt;tstart&gt;100411&lt;/tstart&gt;
              &lt;tend&gt;102713&lt;/tend&gt;
              &lt;tstrand&gt;+1&lt;/tstrand&gt;
          &lt;/transcript&gt;
      &lt;/gene&gt;
      &lt;gene&gt;
          &lt;gname&gt;ENSG00000182378&lt;/gname&gt;
          &lt;gstart&gt;122990&lt;/gstart&gt;
          &lt;gend&gt;150024&lt;/gend&gt;
          &lt;external_ref&gt;
              &lt;one&gt;UCSC:uc004cpa.1&lt;/one&gt;
              &lt;two&gt;UCSC:uc004cpb.1&lt;/two&gt;
              &lt;three&gt;HGNC:PLCXD1&lt;/three&gt;
              &lt;four&gt;HGNC_automatic_gene:PLCXD1&lt;/four&gt;
          &lt;/external_ref&gt;
          &lt;transcript&gt;
              &lt;tname&gt;ENST00000381657&lt;/tname&gt;
              &lt;tstart&gt;127860&lt;/tstart&gt;
              &lt;tend&gt;150024&lt;/tend&gt;
              &lt;tstrand&gt;+1&lt;/tstrand&gt;
          &lt;/transcript&gt;
          &lt;transcript&gt;
              &lt;tname&gt;ENST00000399012&lt;/tname&gt;
              &lt;tstart&gt;122990&lt;/tstart&gt;
              &lt;tend&gt;150021&lt;/tend&gt;
              &lt;tstrand&gt;+1&lt;/tstrand&gt;
          &lt;/transcript&gt;
          &lt;transcript&gt;
              &lt;tname&gt;ENST00000381663&lt;/tname&gt;
              &lt;tstart&gt;122992&lt;/tstart&gt;
              &lt;tend&gt;150021&lt;/tend&gt;
              &lt;tstrand&gt;+1&lt;/tstrand&gt;
          &lt;/transcript&gt;
      &lt;/gene&gt;
      &lt;gene&gt;
          &lt;gname&gt;ENSG00000214798&lt;/gname&gt;
          &lt;gstart&gt;148481&lt;/gstart&gt;
          &lt;gend&gt;149027&lt;/gend&gt;
          &lt;external_ref&gt;
              &lt;one&gt;UCSC:uc004cpc.1&lt;/one&gt;
              &lt;two&gt;Clone_based_ensembl_gene:BX000483.7&lt;/two&gt;
          &lt;/external_ref&gt;
          &lt;transcript&gt;
              &lt;tname&gt;ENST00000399005&lt;/tname&gt;
              &lt;tstart&gt;148481&lt;/tstart&gt;
              &lt;tend&gt;149027&lt;/tend&gt;
              &lt;tstrand&gt;+1&lt;/tstrand&gt;
          &lt;/transcript&gt;
      &lt;/gene&gt;
      &lt;gene&gt;
          &lt;gname&gt;ENSG00000178605&lt;/gname&gt;
          &lt;gstart&gt;150026&lt;/gstart&gt;
          &lt;gend&gt;160887 &lt;/gend&gt;
          &lt;external_ref&gt;
              &lt;one&gt;UCSC:uc004cpe.1&lt;/one&gt;
              &lt;two&gt;HGNC:GTPBP6&lt;/two&gt;
              &lt;three&gt;HGNC_automatic_gene:GTPBP6&lt;/three&gt;
          &lt;/external_ref&gt;
          &lt;transcript&gt;
              &lt;tname&gt;ENST00000326153&lt;/tname&gt;
              &lt;tstart&gt;150026&lt;/tstart&gt;
              &lt;tend&gt;160887&lt;/tend&gt;
              &lt;tstrand&gt;-1&lt;/tstrand&gt;
          &lt;/transcript&gt;
      &lt;/gene&gt;
      &lt;gene&gt;
  </code></pre>
  
  <p>Here I tried XSLT this way</p>
  
  <pre><code>&lt;xsl:for-each select="chromosome/gene"&gt;
      Name: &lt;xsl:value-of select="gname" /&gt; &lt;br /&gt;
      Start Region: &lt;xsl:value-of select="gstart" /&gt; &lt;br /&gt;
      End Region: &lt;xsl:value-of select="gend" /&gt; &lt;br /&gt; 
      &lt;xsl:value-of select="external_ref/one "/&gt;&lt;br /&gt;
      &lt;xsl:value-of select="external_ref/two "/&gt;
      &lt;xsl:if test="external_ref/three !=' '"&gt;&lt;br/&gt;
          &lt;xsl:value-of select="external_ref/three "/&gt;
      &lt;/xsl:if&gt;
      &lt;xsl:if test="external_ref/four !=' '"&gt;&lt;br/&gt;
          &lt;xsl:value-of select="external_ref/four "/&gt;
      &lt;/xsl:if&gt;
      &lt;xsl:for-each select="chromosome/gene/transcript"&gt;
          Name:&lt;xsl:value-of select="tname" /&gt;&lt;/strong&gt; &lt;br /&gt;
          Start Region: &lt;xsl:value-of select="tstart" /&gt; &lt;br /&gt;
          End Region: &lt;xsl:value-of select="tend" /&gt; &lt;br /&gt;
          Strand: &lt;xsl:value-of select="tstrand" /&gt;
      &lt;/xsl:for-each&gt;
  &lt;/xsl:for-each&gt;
  </code></pre>
  
  <p>The problem is I am not getting any transcript; when I use only one for each loop at the top then I get only one transcript not whole from the xml list</p>
  
  <p>Can you guys point my mistake, I am completely new to XSLT.</p>
  
  <p>Thanks</p>