uCosminexus Portal Framework ポートレット開発ガイド

[目次][用語][索引][前へ][次へ]


付録A.8 XSLTを用いたポートレット

XSLTスタイルシートを介して,XMLデータをポータルに取り込めます。

XMLデータの取り込みを次の図に示します。

図A-3 XMLデータの取り込み

[図データ]

アクセスするクライアントに応じて,XMLデータを変換します。また,UserAgent情報取得Beanを使用すると,アクセスしてきたクライアントに応じて,XSLTスタイルシートを変更できます。UserAgent情報取得Beanの詳細は,「14.8 UserAgent情報取得Bean」を参照してください。

XSLTスタイルシートは,次のディレクトリに格納します。

{PROJECT_HOME}\portlets\ポートレット名\PORTLET-INF\xslt

日立APIポートレットでは,<ut:convert>タグライブラリ内に,XMLデータを記述します。また,<ut:convert>のxslt属性には,XSLTスタイルシート名を指定します。タグライブラリの詳細は,「14.2 ポートレットユティリティタグライブラリ」を参照してください。

XSLTを用いたポートレットのサンプルを次に示します。このサンプルでは,ユーザに割り当てられた仕事一覧を表示します。データベースなどから,仕事一覧をXMLデータとして取得します。XSLTスタイルシートを使用して,クライアントがPCの場合はテーブルで,携帯電話(iモード,およびEZweb)の場合はリストで表示します。また,XMLデータの取得および<ut:convert>タグライブラリでは,<ut:cache>タグライブラリを使用して,60分ごとにデータを更新します。

<この項の構成>
(1) 日立APIポートレットの例
(2) XMLデータ
(3) PC用XSLTスタイルシート
(4) iモード用XSLTスタイルシート

(1) 日立APIポートレットの例

日立APIポートレットでXMLデータを取り込む例を次に示します。

 
<%@ page contentType="text/html; charset=Shift_JIS" %>
<%@ page import="jp.co.hitachi.soft.portal.portlet.PortletUtils" %>
<%@ page import="jp.co.hitachi.soft.portal.portlet.beans.PortletInfoBean" %>
<%@ page import="jp.co.hitachi.soft.portal.api.user.PortalUserInfoBean" %>
<jsp:useBean id="useragentInfo" scope="session"
             class="jp.co.hitachi.soft.portal.portlet.beans.UserAgentInfoBean" />
<%@ taglib uri="http://soft.hitachi.co.jp/portal/utils" prefix="ut" %>
<%
  String ns = PortletUtils.getNamespace(request, response);
  String xslt;
  try {
    PortalUserInfoBean userInfo = new PortalUserInfoBean();
    userInfo.setRequest(request);
 
    useragentInfo.initBean(request);
    if (useragentInfo.getUserAgentGroup().equals("PCBrowser")) {
      xslt = "table.xsl";  // PCはtable形式で出力
    } else {
      xslt = "list.xsl";  // PC以外はlist形式で出力
    }
 
    // ログイン済みかチェック
    if (userInfo.checkLoggedIn()) {
      PortletInfoBean pInfo = new PortletInfoBean();
      pInfo.initBean(request);
      PortletInfoBean.Mode mode = pInfo.getMode();
      if (mode == PortletInfoBean.Mode.DEFAULT ||
          mode == PortletInfoBean.Mode.MAXIMIZE) {
        String cacheKey = ns+"key";
%>
<ut:cache name="<%= cacheKey %>" time="60" scope="session">
  <ut:convert xslt="<%= xslt %>">
    <!-- XMLデータ(ログインユーザの仕事一覧)読み込み処理 -->
  </ut:convert>
</ut:cache>
<%
      } else { throw new Exception("未サポートの画面モード"); }
    } else { throw new Exception("ログインが必要です"); }
  } catch (Exception e) {
      // エラー出力
  } 
%> 

(2) XMLデータ

XMLデータの例として,ユーザに割り当てられた仕事一覧を示します。

 
<task-list>
  <item>
    <title>提案書作成</title>
    <deadline>2002/04/01</deadline>
    <priority>高</priority>
    <detail>http://mytask/task.cgi?id=11111</detail>
  </item>
 
  <item>
    <title>営業方針検討資料作成</title>
    <deadline>2002/04/11</deadline>
    <priority>標準</priority>
    <detail>http://mytask/task.cgi?id=12111</detail>
  </item>
</task-list>
 
 

(3) PC用XSLTスタイルシート

PC用に,テーブルに変換するXSLTスタイルシートの例を次に示します。

{PROJECT_HOME}\portlets\weather\xslt\table.xsl

 
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:output method="html" encoding="Shift_JIS"/>
 
  <xsl:template match="//task-list">
    <table border="1">
    <tr><th>タイトル</th><th>期限</th><th>優先度</th></tr>
    <xsl:for-each select="item">
      <tr>
      <td><a href="{detail}"><xsl:value-of select="title"/></a></td>
      <td><xsl:value-of select="deadline"/></td>
      <td><xsl:value-of select="priority"/></td>
      </tr>
    </xsl:for-each>
    </table>
  </xsl:template>
</xsl:stylesheet>
 
 

(4) iモード用XSLTスタイルシート

iモード用に,リストに変換するXSLTスタイルシートの例を次に示します。

{PROJECT_HOME}\portlets\weather\xslt\list.xsl

 
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:output method="html" encoding="Shift_JIS"/>
 
  <xsl:template match="//task-list">
    <ol>
    <xsl:for-each select="item">
      <li>
        <xsl:variable name="number"><xsl:number/></xsl:variable>
        <a href="{detail}" accesskey="{$number}">
          <xsl:value-of select="title"/></a>
        (<xsl:value-of select="deadline"/>)
      </li>
    </xsl:for-each>
    </ol>
  </xsl:template>
</xsl:stylesheet>
 
 
 

[目次][前へ][次へ]


[他社商品名称に関する表示]

All Rights Reserved. Copyright (C) 2009, 2013, Hitachi, Ltd.
All Rights Reserved. Copyright (C) 2009, 2013, Hitachi INS Software, Ltd.