uCosminexus Portal Framework ポートレット開発ガイド
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.