2013-03-19 56 views
1

我提供了XML格式的數據庫查詢結果,並且需要應用XSL將XML轉換爲HTML表格格式。我是XSLT的新手,經過大量搜索後,似乎找不到與我的XML格式相匹配的好例子。以XML格式對數據庫結果進行XSL轉換

我的XML看起來是這樣的:

<?xml version="1.0" encoding="UTF-8"?> 
<B1j:jdbcQueryResult xmlns:B1j="http://ns.b1tech.com/2012/08/jdbc-query-result"> 
    <B1j:row> 
     <B1j:col name="response_size" type="java.lang.Integer">128837</B1j:col> 
     <B1j:col name="groupname" type="java.lang.String">AAA</B1j:col> 
     <B1j:col name="count_total" type="java.lang.Integer">1</B1j:col> 
     <B1j:col name="count_error" type="java.lang.Integer">0</B1j:col> 
     <B1j:col name="timestamp" type="java.lang.Long">1363654726298</B1j:col> 
     <B1j:col name="count_success" type="java.lang.Integer">1</B1j:col> 
    </B1j:row> 
    <B1j:row> 
     <B1j:col name="response_size" type="java.lang.Integer">128837</B1j:col> 
     <B1j:col name="groupname" type="java.lang.String">BBB</B1j:col> 
     <B1j:col name="count_total" type="java.lang.Integer">1</B1j:col> 
     <B1j:col name="count_error" type="java.lang.Integer">0</B1j:col> 
     <B1j:col name="timestamp" type="java.lang.Long">1363654757598</B1j:col> 
     <B1j:col name="count_success" type="java.lang.Integer">1</B1j:col> 
    </B1j:row> 
</B1j:jdbcQueryResult> 

任何一個可以幫助我,與我的XSLT模板看起來應該像從這個XML確切的列名和值,並放入一個基本的HTML表?

在此先感謝!

回答

2

這個怎麼樣:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
       xmlns:B1j="http://ns.b1tech.com/2012/08/jdbc-query-result" 
       exclude-result-prefixes="B1j" 
       > 
    <xsl:output method="html" omit-xml-declaration="yes" /> 

    <xsl:template match="/*[B1j:row]"> 
    <table> 
     <tr> 
     <xsl:apply-templates select="B1j:row[1]/B1j:col" mode="header" /> 
     </tr> 

     <xsl:apply-templates select="B1j:row" /> 
    </table> 
    </xsl:template> 

    <xsl:template match="B1j:col" mode="header"> 
    <th> 
     <xsl:value-of select="@name"/> 
    </th> 
    </xsl:template> 

    <xsl:template match="B1j:row"> 
    <tr> 
     <xsl:apply-templates select="B1j:col" /> 
    </tr> 
    </xsl:template> 

    <xsl:template match="B1j:col"> 
    <td> 
     <xsl:apply-templates /> 
    </td> 
    </xsl:template> 
</xsl:stylesheet> 

當你的樣品輸入運行,這將產生:

<table> 
    <tr> 
    <th>response_size</th> 
    <th>groupname</th> 
    <th>count_total</th> 
    <th>count_error</th> 
    <th>timestamp</th> 
    <th>count_success</th> 
    </tr> 
    <tr> 
    <td>128837</td> 
    <td>AAA</td> 
    <td>1</td> 
    <td>0</td> 
    <td>1363654726298</td> 
    <td>1</td> 
    </tr> 
    <tr> 
    <td>128837</td> 
    <td>BBB</td> 
    <td>1</td> 
    <td>0</td> 
    <td>1363654757598</td> 
    <td>1</td> 
    </tr> 
</table> 
+0

感謝您的幫助!這工作! – user2184716 2013-03-19 03:09:27

+0

當然,它的工作原理。但我希望你會努力去理解它爲什麼起作用。 StackOverflow永遠不應該減少到「我不會因爲閱讀一本關於該語言的書而煩惱,有人可以爲我寫代碼嗎?」 – 2013-03-19 08:38:12