Search code examples
csssqlxmlxml-parsingfor-xml

Assign CSS class to HTML tags generated with SQL 'FOR XML'


I am getting table rows and table data (with HTML tags) from SQL using 'FOR XML'. Is there a way I could assign CSS classes to the html tags in SQL?

What I am currently getting: <tr><td>Name</td><td>Value</td></tr>

SQL query:

SELECT  (SELECT [Name] as [td] FOR XML PATH(''), type),
        (SELECT [Value] as [td] FOR XML PATH(''), type)
FROM    table
FOR XML PATH('tr')

Desired output:

<tr class="test1"> <td class="test2">Name</td> <td class="test3">Value</td> </tr>


Solution

  • I know I am answering my own question, thought it may help someone else.

    I'm adding class as an attribute to XML nodes which is giving me the desired output.

    SELECT  'test1' AS [@class]
        , ( SELECT  'test2' as [@class]
            , (SELECT 'Name' FOR XML PATH(''))
            FOR XML PATH('td'), type)
        ,(SELECT  'test3' as [@class]
            , (SELECT 'Value' FOR XML PATH(''))
            FOR XML PATH('td'), type) 
    FOR XML PATH('tr'), type
    


    Output:
    <tr class="test1"><td class="test2">Name</td><td class="test3">Value</td></tr>