title: XSLT: How to get position index of particular nodes in all the childs combined
body: <p>Consider the following XML:</p>
  
  <pre><code>&lt;root&gt;
      &lt;a&gt;
          &lt;pos&gt;
              &lt;c val="abc"&gt;&lt;/c&gt;
              &lt;c val="def"&gt;&lt;/c&gt;
              &lt;c val="ghi"&gt;&lt;/c&gt;
              &lt;c val="jkl"&gt;&lt;/c&gt;
              &lt;c val="mno"&gt;&lt;/c&gt;
          &lt;/pos&gt;
          &lt;b&gt;
              &lt;c&gt;&lt;/c&gt;
          &lt;/b&gt;
          &lt;b&gt;
              &lt;c&gt;&lt;/c&gt;
              &lt;d&gt;here&lt;/d&gt;
          &lt;/b&gt;
          &lt;b&gt;
              &lt;e&gt;and&lt;/e&gt;
              &lt;c&gt;&lt;/c&gt;
              &lt;d&gt;for&lt;/d&gt;
          &lt;/b&gt;
          &lt;b&gt;
              &lt;c&gt;&lt;/c&gt;
              &lt;c&gt;&lt;/c&gt;
              &lt;d&gt;also&lt;/d&gt;
          &lt;/b&gt;
      &lt;/a&gt;
      &lt;a&gt;
          &lt;pos&gt;
              &lt;c val="pqr"&gt;&lt;/c&gt;
              &lt;c val="stu"&gt;&lt;/c&gt;
              &lt;c val="vwx"&gt;&lt;/c&gt;
              &lt;c val="yz"&gt;&lt;/c&gt;
          &lt;/pos&gt;
          &lt;b&gt;
              &lt;c&gt;&lt;/c&gt;
              &lt;d&gt;what&lt;/d&gt;
          &lt;/b&gt;
          &lt;b&gt;
              &lt;c&gt;&lt;/c&gt;
          &lt;/b&gt;
          &lt;b&gt;
              &lt;d&gt;how&lt;/d&gt;
          &lt;/b&gt;
          &lt;b&gt;
              &lt;c&gt;&lt;/c&gt;
              &lt;d&gt;where&lt;/d&gt;
              &lt;c&gt;&lt;/c&gt;
          &lt;/b&gt;
      &lt;/a&gt;
  &lt;/root&gt;
  </code></pre>
  
  <p>Now in my output, when ever I encounter a <code>&lt;c&gt;&lt;/c&gt;</code> inside a <code>b</code>, I need to put the corresponding value of the <code>val</code> attribute of a <code>&lt;c&gt;&lt;/c&gt;</code> from the <code>&lt;pos&gt;&lt;/pos&gt;</code> node. By corresponding value I mean the index of node <code>c</code> inside <code>pos</code> should be the same as the index of <code>c</code> in all the <code>b</code> nodes combined.</p>
  
  <p>The desired output is:</p>
  
  <pre><code>&lt;start&gt;
      &lt;level&gt;
          abc
      &lt;/level&gt;
      &lt;level&gt;
          def
          here
      &lt;/level&gt;
      &lt;level&gt;
          and
          ghi
          for
      &lt;/level&gt;
      &lt;level&gt;
          jkl
          mno
          also
      &lt;/level&gt;
  &lt;start&gt;
  
  
  &lt;start&gt;
      &lt;level&gt;
          pqr
          what
      &lt;/level&gt;
      &lt;level&gt;
          stu
      &lt;/level&gt;
      &lt;level&gt;
          how
      &lt;/level&gt;
      &lt;level&gt;
          vwx
          where
          yz
      &lt;/level&gt;
   &lt;/start&gt;
  </code></pre>
  
  <p>I attempted it with the following XSL:</p>
  
  <pre><code>&lt;xsl:template match="root"&gt;
      &lt;star&gt;
          &lt;xsl:apply-templates select="a"/&gt;
      &lt;/start&gt;
  &lt;/xsl:template&gt;
  &lt;xsl:template match="a"&gt;
      &lt;xsl:apply-templates select="b"/&gt;
  &lt;/xsl:template&gt;
  &lt;xsl:template match="b"&gt;
      &lt;level&gt;
        &lt;xsl:for-each select="*"&gt;
            &lt;xsl:choose&gt;
              &lt;xsl:when test="name() = 'd'"&gt;
                  &lt;xsl:value-of select="."/&gt;
              &lt;/xsl:when&gt;
              &lt;xsl:when test="name() = 'e'"&gt;
                  &lt;xsl:value-of select="."/&gt;
              &lt;/xsl:when&gt;
              &lt;xsl:when test="name() = 'c'"&gt;
                  &lt;xsl:variable name="posCount"&gt;
                      &lt;!-- I don't know what to do here --&gt;
                  &lt;/xsl:valiable&gt;
                  &lt;xsl:for-each select="ancestor::a[1]/pos"&gt;
                      &lt;xsl:for-each select="c[position() = $posCount]"&gt;
                            &lt;xsl:value-of select="@val"/&gt;
                      &lt;/xsl:for-each&gt;
                  &lt;/xsl:for-each&gt;
  
              &lt;/xsl:when&gt;
            &lt;/xsl:choose&gt;
        &lt;/xsl:for-each&gt;
      &lt;/level&gt;
  &lt;/xsl:template&gt;
  </code></pre>
  
  <p>What I need to do is somehow get the position count of each <code>c</code> inside all the <code>b</code>s combined and then use the value of <code>val</code> attribute of correspondingly positioned <code>c</code> from inside <code>pos</code>.</p>
  
  <p>How can I proceed to do it?</p>
  
  <p><strong>Note:</strong> I am using XSLT 1.0</p>
  
  <p>Thnx in advance!!</p>