我从数据库查询中获得XML格式的结果,并且需要应用XSL将XML转换为HTML表格格式。我是XSLT的新手,经过多次搜索,我似乎无法找到一个与我的XML格式匹配的好例子。
我的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表中的内容?
提前致谢!!
答案 0 :(得分: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>