1

我收到了来自 DB 查询结果的 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 表中?

提前致谢!!

4

1 回答 1

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>
于 2013-03-19T02:54:27.000 回答