title: XSLT - apply-templates to child node and text() node
body: <p>I have a xml file like this,</p>
  
  <pre><code>&lt;content&gt;
      &lt;ol&gt;
          &lt;li&gt; List&lt;span style="color: rgb(255,0,255);"&gt;The scopeeeee of&lt;/span&gt;this project is
              &lt;ol&gt;
                  &lt;li&gt;nested list1&lt;/li&gt;
                  &lt;li&gt;nested &lt;span style="color: rgb(255,0,255);"&gt;The scope of this project is&lt;/span&gt; list1&lt;/li&gt;
                  &lt;li&gt;nested list1&lt;/li&gt;
                  &lt;li&gt;nested list1&lt;/li&gt;
                  &lt;li&gt;nested list1&lt;/li&gt;
              &lt;/ol&gt;
          &lt;/li&gt;
          &lt;li&gt;
              &lt;p&gt;List&lt;span style="color: rgb(255,0,255);"&gt;The scope of this project is to:&lt;/span&gt;&lt;/p&gt;
          &lt;/li&gt;
          &lt;li&gt;
              &lt;p&gt;List&lt;span style="color: rgb(255,0,255);"&gt;The scope of this project is to:&lt;/span&gt;&lt;/p&gt;
          &lt;/li&gt;
      &lt;/ol&gt;
  &lt;/content&gt;
  </code></pre>
  
  <p>I need to transform above xml to following xml using XSLT</p>
  
  <p>expected output,</p>
  
  <pre><code>&lt;content&gt;
      &lt;orderedList&gt;
          &lt;liItem&gt;
              &lt;para&gt;List&lt;c type="color: rgb(255,0,255);"&gt;The scopeeeee of this project is to:&lt;/c&gt;jkhsdlkjfh&lt;/para&gt;
          &lt;/liItem&gt;
          &lt;orderedList&gt;
              &lt;liItem&gt;
                  &lt;para&gt;nested list1&lt;/para&gt;
              &lt;/liItem&gt;
              &lt;liItem&gt;
                  &lt;para&gt;nested &lt;c type="color: rgb(255,0,255);"&gt;The scope of this project is&lt;/c&gt;list1&lt;/para&gt;
              &lt;/liItem&gt;
              &lt;liItem&gt;
                  &lt;para&gt;nested list1&lt;/para&gt;
              &lt;/liItem&gt;
              &lt;liItem&gt;
                  &lt;para&gt;nested list1&lt;/para&gt;
              &lt;/liItem&gt;
              &lt;liItem&gt;
                  &lt;para&gt;nested list1&lt;/para&gt;
              &lt;/liItem&gt;
          &lt;/orderedList&gt;
  
          &lt;liItem&gt;
              &lt;para&gt; List&lt;c type="color: rgb(255,0,255);"&gt;The scope of this project is to:&lt;/c&gt;&lt;/para&gt;
          &lt;/liItem&gt;
          &lt;liItem&gt;
              &lt;para&gt; List&lt;c type="color: rgb(255,0,255);"&gt;The scope of this project is to:&lt;/c&gt;&lt;/para&gt;
          &lt;/liItem&gt;
      &lt;/orderedList&gt;
  &lt;/content&gt;
  </code></pre>
  
  <p>As you can see, the text content and span nodes within li items has to cover with <code>&lt;para&gt;</code> node in output.</p>
  
  <p>I have written following xsl to get this output,</p>
  
  <pre><code>&lt;xsl:template match="ol"&gt;
          &lt;orderedList&gt;
              &lt;xsl:apply-templates/&gt;
          &lt;/orderedList&gt;
      &lt;/xsl:template&gt;
  
      &lt;xsl:template match="li[not(descendant::ol)]" &gt;
          &lt;liItem&gt;
              &lt;para&gt;
                  &lt;xsl:apply-templates /&gt;
              &lt;/para&gt;
          &lt;/liItem&gt;
      &lt;/xsl:template&gt;
  
      &lt;xsl:template match="li[descendant::ol]" &gt;
          &lt;liItem&gt;
              &lt;para&gt;
                  &lt;xsl:apply-templates select="node()[parent::li][following-sibling::ol]"/&gt;
              &lt;/para&gt;
          &lt;/liItem&gt;
          &lt;xsl:apply-templates/&gt;
      &lt;/xsl:template&gt;
  
      &lt;xsl:template match="span"&gt;
          &lt;c type="{@style}"&gt;
              &lt;xsl:apply-templates/&gt;
          &lt;/c&gt;
      &lt;/xsl:template&gt;
  
      &lt;xsl:template match="li/p"&gt;
          &lt;xsl:apply-templates /&gt;
      &lt;/xsl:template&gt; 
  </code></pre>
  
  <p>The only problem of above xsl is comes when it has <code>&lt;ol&gt;</code> inside another <code>&lt;ol&gt;</code> item. I'm struggling to find a way add <code>&lt;para&gt;</code> node to the text content which placed between <code>&lt;li&gt;</code> and <code>&lt;ol&gt;</code> nodes. </p>
  
  <p>current output is follows,</p>
  
  <pre><code>&lt;content&gt;
      &lt;orderedList&gt;
          &lt;liItem&gt;
              &lt;para&gt; List&lt;c type="color: rgb(255,0,255);"&gt;The scopeeeee of&lt;/c&gt;this project is&lt;/para&gt;
          &lt;/liItem&gt; List&lt;c type="color: rgb(255,0,255);"&gt;The scopeeeee of&lt;/c&gt;this project is
          &lt;orderedList&gt;
              &lt;liItem&gt;&lt;para&gt;nested list1&lt;/para&gt;&lt;/liItem&gt;
              &lt;liItem&gt;&lt;para&gt;nested &lt;c type="color: rgb(255,0,255);"&gt;The scope of this project is&lt;/c&gt;list1&lt;/para&gt;&lt;/liItem&gt;
              &lt;liItem&gt;&lt;para&gt;nested list1&lt;/para&gt;&lt;/liItem&gt;
              &lt;liItem&gt;&lt;para&gt;nested list1&lt;/para&gt;&lt;/liItem&gt;
              &lt;liItem&gt;&lt;para&gt;nested list1&lt;/para&gt;&lt;/liItem&gt;
          &lt;/orderedList&gt;
          &lt;liItem&gt;&lt;para&gt; List&lt;c type="color: rgb(255,0,255);"&gt;The scope of this project is to:&lt;/c&gt;&lt;/para&gt;&lt;/liItem&gt;
          &lt;liItem&gt;&lt;para&gt; List&lt;c type="color: rgb(255,0,255);"&gt;The scope of this project is to:&lt;/c&gt;&lt;/para&gt;&lt;/liItem&gt;
      &lt;/orderedList&gt;
  &lt;/content&gt;
  </code></pre>
  
  <p>can anyone suggest me a way how can I modify my code to get the expected output..</p>