1

DBクエリの結果のXML形式が提供されており、XMLをHTMLテーブル形式に変換するためにXSLを適用する必要があります。私は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>

このXMLから列名と値を正確に入力し、基本的なHTMLテーブルに配置するために、XSLTテンプレートがどのように見えるかを教えてくれる人はいますか?

前もって感謝します!!

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 に答える