数据库的XSL转换结果是XML

时间:2013-03-19 02:29:08

标签: xml database xslt transformation

我从数据库查询中获得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表中的内容?

提前致谢!!

1 个答案:

答案 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>