Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 3874498
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 19, 20262026-05-19T22:09:30+00:00 2026-05-19T22:09:30+00:00

I have some html content inside my XML. Previously I could just use <xsl:copy-of

  • 0

I have some html content inside my XML. Previously I could just use <xsl:copy-of select="customFields/customField[@name='mainContent']/html"/> to pull the content into the correct area. A new requirement is to convert the first <tr> inside each table’s <tbody> into a set of thead/tr/th.

I am confused on how to convert, in fact not even shore where to start:

…

<customField name="mainContent" type="Html">
    <html>
        <h1>Page Heading</h1>
        <p>Gusto te minim tempor elit quam. Dolore vel accumsan parum option me. Demonstraverunt congue nisl soluta tincidunt seacula. Soluta saepius demonstraverunt praesent claritatem mutationem. Modo te ullamcorper vel augue veniam. Nunc investigationes dolor iriure typi in.</p>
        <p>Gusto te minim tempor elit quam. Dolore vel accumsan parum option me. Demonstraverunt congue nisl soluta tincidunt seacula. Soluta saepius demonstraverunt praesent claritatem mutationem. Modo te ullamcorper vel augue veniam. Nunc investigationes dolor iriure typi in.</p>
        <table cellspacing="0" cellpadding="0" summary="" border="0">
            <tbody>
                <tr>
                    <td>Heading 1</td>
                    <td>Heading 2</td>
                    <td>Heading 3</td>
                </tr>
                <tr>
                    <td>sample</td>
                    <td>sample</td>
                    <td>sample</td>
                </tr>
                <tr>
                    <td>sample</td>
                    <td>sample</td>
                    <td>sample</td>
                </tr>
                <tr>
                    <td>sample</td>
                    <td>sample</td>
                    <td>sample</td>
                </tr>
                <tr>
                    <td>sample</td>
                    <td>sample</td>
                    <td>sample</td>
                </tr>
            </tbody>
        </table>
    </html>
</customField>
...

into:

...
<customField name="mainContent" type="Html">
    <html>
        <h1>Page Heading</h1>
        <p>Gusto te minim tempor elit quam. Dolore vel accumsan parum option me. Demonstraverunt congue nisl soluta tincidunt seacula. Soluta saepius demonstraverunt praesent claritatem mutationem. Modo te ullamcorper vel augue veniam. Nunc investigationes dolor iriure typi in.</p>
        <p>Gusto te minim tempor elit quam. Dolore vel accumsan parum option me. Demonstraverunt congue nisl soluta tincidunt seacula. Soluta saepius demonstraverunt praesent claritatem mutationem. Modo te ullamcorper vel augue veniam. Nunc investigationes dolor iriure typi in.</p>
        <table cellspacing="0" cellpadding="0" summary="" border="0">
            <thead>
                <tr>
                    <th>Heading 1</th>
                    <th>Heading 2</th>
                    <th>Heading 3</th>
                </tr>
            </thead>
            <tbody>
                <tr>
                    <td>sample</td>
                    <td>sample</td>
                    <td>sample</td>
                </tr>
                <tr>
                    <td>sample</td>
                    <td>sample</td>
                    <td>sample</td>
                </tr>
                <tr>
                    <td>sample</td>
                    <td>sample</td>
                    <td>sample</td>
                </tr>
                <tr>
                    <td>sample</td>
                    <td>sample</td>
                    <td>sample</td>
                </tr>
            </tbody>
        </table>
    </html>
</customField>
...
  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-05-19T22:09:31+00:00Added an answer on May 19, 2026 at 10:09 pm

    I have some html content inside my
    XML. Previously I could just use
    <xsl:copy-of
    select="customFields/customField[@name='mainContent']/html"/>

    to pull the content into the correct
    area. A new requirement is to convert
    the first <tr> inside each table’s
    <tbody> into a set of thead/tr/th.

    This transformation:

    <xsl:stylesheet version="1.0"
     xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
     <xsl:output omit-xml-declaration="yes" indent="yes"/>
     <xsl:strip-space elements="*"/>
    
     <xsl:template match="node()|@*">
      <xsl:copy>
       <xsl:apply-templates select="node()|@*"/>
      </xsl:copy>
     </xsl:template>
    
     <xsl:template match="tbody/tr[1]">
      <thead>
        <tr>
          <xsl:apply-templates/>
        </tr>
      </thead>
     </xsl:template>
    
     <xsl:template match="tbody/tr[1]/td">
      <th><xsl:apply-templates/></th>
     </xsl:template>
    </xsl:stylesheet>
    

    when applied on the provided XML document:

    <customField name="mainContent" type="Html">
        <html>
            <h1>Page Heading</h1>
            <p>Gusto te minim tempor elit quam. Dolore vel accumsan parum option me. Demonstraverunt congue nisl soluta tincidunt seacula. Soluta saepius demonstraverunt praesent claritatem mutationem. Modo te ullamcorper vel augue veniam. Nunc investigationes dolor iriure typi in.</p>
            <p>Gusto te minim tempor elit quam. Dolore vel accumsan parum option me. Demonstraverunt congue nisl soluta tincidunt seacula. Soluta saepius demonstraverunt praesent claritatem mutationem. Modo te ullamcorper vel augue veniam. Nunc investigationes dolor iriure typi in.</p>
            <table cellspacing="0" cellpadding="0" summary="" border="0">
                <tbody>
                    <tr>
                        <td>Heading 1</td>
                        <td>Heading 2</td>
                        <td>Heading 3</td>
                    </tr>
                    <tr>
                        <td>sample</td>
                        <td>sample</td>
                        <td>sample</td>
                    </tr>
                    <tr>
                        <td>sample</td>
                        <td>sample</td>
                        <td>sample</td>
                    </tr>
                    <tr>
                        <td>sample</td>
                        <td>sample</td>
                        <td>sample</td>
                    </tr>
                    <tr>
                        <td>sample</td>
                        <td>sample</td>
                        <td>sample</td>
                    </tr>
                </tbody>
            </table>
        </html>
    </customField>
    

    produces exactly the wanted, correct result:

    <customField name="mainContent" type="Html">
       <html>
          <h1>Page Heading</h1>
          <p>Gusto te minim tempor elit quam. Dolore vel accumsan parum option me. Demonstraverunt congue nisl soluta tincidunt seacula. Soluta saepius demonstraverunt praesent claritatem mutationem. Modo te ullamcorper vel augue veniam. Nunc investigationes dolor iriure typi in.</p>
          <p>Gusto te minim tempor elit quam. Dolore vel accumsan parum option me. Demonstraverunt congue nisl soluta tincidunt seacula. Soluta saepius demonstraverunt praesent claritatem mutationem. Modo te ullamcorper vel augue veniam. Nunc investigationes dolor iriure typi in.</p>
          <table cellspacing="0" cellpadding="0" summary="" border="0">
             <tbody>
                <thead>
                   <tr>
                      <th>Heading 1</th>
                      <th>Heading 2</th>
                      <th>Heading 3</th>
                   </tr>
                </thead>
                <tr>
                   <td>sample</td>
                   <td>sample</td>
                   <td>sample</td>
                </tr>
                <tr>
                   <td>sample</td>
                   <td>sample</td>
                   <td>sample</td>
                </tr>
                <tr>
                   <td>sample</td>
                   <td>sample</td>
                   <td>sample</td>
                </tr>
                <tr>
                   <td>sample</td>
                   <td>sample</td>
                   <td>sample</td>
                </tr>
             </tbody>
          </table>
       </html>
    </customField>
    

    Do note:

    The “overriden identity rule” design pattern is used. This is the most fundamental and powerful XSLT design pattern.

    UPDATE:

    As noticed by Flynn1179, the OP’s definition of the problem (above) is inconsistent with the output he provides as wanted result. In this output not only is the first tr inside of the tbody converted to thead/tr (and its td children to th), but the thead is moved outside of the tbody.

    In case this is really what the OP wants, here is modified solution also for this case:

    <xsl:stylesheet version="1.0"
     xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
     <xsl:output omit-xml-declaration="yes" indent="yes"/>
     <xsl:strip-space elements="*"/>
    
     <xsl:template match="node()|@*">
      <xsl:copy>
       <xsl:apply-templates select="node()|@*"/>
      </xsl:copy>
     </xsl:template>
    
     <xsl:template match="tbody/tr[1]">
      <thead>
       <tr>
        <xsl:apply-templates/>
       </tr>
      </thead>
      <tbody>
       <xsl:apply-templates 
            select="following-sibling::tr"/>
      </tbody>
     </xsl:template>
    
     <xsl:template match="tbody/tr[1]/td">
      <th>
       <xsl:apply-templates/>
      </th>
     </xsl:template>
    
     <xsl:template match="tbody">
      <xsl:apply-templates select="tr[1]"/>
     </xsl:template>
    </xsl:stylesheet>
    

    when applied on the same XML document, the result is:

    <customField name="mainContent" type="Html">
       <html>
          <h1>Page Heading</h1>
          <p>Gusto te minim tempor elit quam. Dolore vel accumsan parum option me. Demonstraverunt congue nisl soluta tincidunt seacula. Soluta saepius demonstraverunt praesent claritatem mutationem. Modo te ullamcorper vel augue veniam. Nunc investigationes dolor iriure typi in.</p>
          <p>Gusto te minim tempor elit quam. Dolore vel accumsan parum option me. Demonstraverunt congue nisl soluta tincidunt seacula. Soluta saepius demonstraverunt praesent claritatem mutationem. Modo te ullamcorper vel augue veniam. Nunc investigationes dolor iriure typi in.</p>
          <table cellspacing="0" cellpadding="0" summary="" border="0">
             <thead>
                <tr>
                   <th>Heading 1</th>
                   <th>Heading 2</th>
                   <th>Heading 3</th>
                </tr>
             </thead>
             <tbody>
                <tr>
                   <td>sample</td>
                   <td>sample</td>
                   <td>sample</td>
                </tr>
                <tr>
                   <td>sample</td>
                   <td>sample</td>
                   <td>sample</td>
                </tr>
                <tr>
                   <td>sample</td>
                   <td>sample</td>
                   <td>sample</td>
                </tr>
                <tr>
                   <td>sample</td>
                   <td>sample</td>
                   <td>sample</td>
                </tr>
             </tbody>
          </table>
       </html>
    </customField>
    
    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

I have a transparent table with width:100% which contains some html content. I use
I have an xml in which i have stored some html under comments like
I have some static html content (included on a dynamically generated page) that I
I have some HTML that looks like this: <ul class=faq> <li class=open> <a class=question
I have some HTML menus, which I show completely when a user clicks on
I have some HTML that displays fine on FireFox3/Opera/Safari but not with IE7. The
I have some HTML and jQuery that slides a div up and down to
I have some HTML I am trying to parse. There are cases where the
So I have some html like so: <div id=avatar_choices> <label for=id_choice_0> <input id=id_choice_0 type=radio
I have a webview in my iPhone application, and I also have some html

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.