Apply-XSL
説明
XSL スタイルシートを Info*Engine オブジェクトグループに適用して、グループをテキストで表します。生成される出力は XSL スタイルシートのコンテンツによって異なります。
構文
<ie:webject name="Apply-XSL" type="DSP">
<ie:param name="CONTENT_TYPE" data="mimetype"/>
<ie:param name="DBUSER" data="username"/>
<ie:param name="GROUP_IN" data="group_name"/>
<ie:param name="PASSWD" data="password"/>
<ie:param name="XSL_PARAM" data="name_value_pair"/>
<ie:param name="XSL_URL" data="url_location"/>
</ie:webject>
パラメータ
必須
|
選択
|
オプション
|
XSL_URL
|
|
CONTENT_TYPE
|
|
|
DBUSER
|
|
|
GROUP_IN
|
|
|
PASSWD
|
|
|
XSL_PARAM
|
CONTENT_TYPE
表示する結果に関連付けられる MIME コンテンツタイプを指定します。text/html をコンテンツタイプとして使用して、HTML フォーマットのドキュメントを呼び出し、アプリケーションまたは Web ブラウザに返します。
このパラメータのデフォルトは text/html で、XML フォーマットのドキュメントを作成します。このパラメータはオプションです。
DBUSER
XSL_URL を認証するために使用されるユーザー名を指定します。Webject によって使用される XSL テンプレートがリモート HTTP サーバーにある場合は、このパラメータを PASSWD 属性とともに使用する必要があります。
このパラメータはオプションです。
GROUP_IN
入力ソースとして使用するグループの名前を識別します。このグループは VDB グループまたは Context グループです。グループの詳細については、
Info*Engine データ管理を参照してください。
このパラメータのデフォルトでは、VDB で最後に定義されたグループを使用します。このパラメータはオプションです。
PASSWD
DBUSER に対応するパスワードを指定します。
このパラメータはオプションです。
XSL_PARAM
XSL_URL パラメータで指定された XSL スタイルシートに渡される XSL パラメータを定義します。XSL_PARAM パラメータに XSL_name=XSL_value フォームの値を入力します。ここで、XSL_name は XSL スタイルシートのパラメータの名前で、XSL_value はパラメータに設定する値を示します。
XSL_PARAM パラメータのデフォルトでは、パラメータはスタイルシートに渡されません。このパラメータには複数の値を指定できます。このパラメータはオプションです。
XSL_URL
デフォルトの出力グループに適用する XSL スタイルシートの場所を識別します。相対 URL または完全修飾 URL を指定できます。相対 URL は Info*Engine サーバータスクテンプレートルートに関連します。
Auth-Map コンテキストグループのデータを使用すると、完全修飾 URL の参照が解除されます。Auth-Map コンテキストグループで、完全修飾 URL 内にあるドメイン名に基づいてユーザー名およびパスワードがサーチされます。たとえば、完全修飾 URL が以下のようであるとします。
http://machine.com/Windchill/infoengine/servlet/IE/tasks/ com/company/createGroupData.xsl
Auth-Map コンテキストグループで、http://machine.com を INSTANCE 名としてユーザー名およびパスワードがサーチされます。ユーザー名とパスワードが見つかると、URL にアクセスするときに BASIC 認証情報が使用されます。ユーザー名とパスワードが見つからない場合、認証情報はリモート Web サーバーに送信されません。
データ値に文字列 :// が含まれている場合は、完全修飾インターネット URL であると見なされます。データ値に文字列が含まれていない場合は、現在のタスクルートディレクトリに関連するローカルファイルであると見なされます。
このパラメータは必須です。
ブラウザの例
Webject の例 :
以下の Apply-XSL Webject では、タスクの出力をフォーマットしてその出力をブラウザに表示します。
<ie:webject name="Apply-XSL" type="DSP">
<ie:param name="CONTENT_TYPE" data="text/html"/>
<ie:param name="XSL_URL"
data="com/company/ApplyXsl.xsl"/>
</ie:webject>
XSL スタイルシート
以下の XSL スタイルシートは、CLASS が EmployeeData であり、各要素に NAME および ADDRESS 属性が含まれている入力グループに適用されます。
<?xml version='1.0'?>
<xsl:stylesheet
xmlns:xsl="http://www.w3.org/XSL/Transform/1.0"
xmlns:wc="http://www.ptc.com/infoengine/1.0">
<xsl:template match="/wc:COLLECTION/EmployeeData">
<html>
<head><title>Apply-XSL Example</title></head>
<body>
<table>
<tr>
<th>name</th><th>Home Address</th>
</tr>
<xsl:for-each select="wc:INSTANCE">
<tr>
<td><xsl:value-of select="NAME"/></td>
<td><xsl:value-of select="ADDRESS"/></td>
</tr>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
ブラウザの表示
CONTENT_TYPE パラメータを text/html に指定して HTML 形式の出力を生成します。Web ブラウザに名前と住所で構成された以下の表が表示されます。
Excel の例
JSP ページの例
以下の JSP ページには Apply-XSL Webject が含まれます。Webject を使用して XSL パラメータを定義し、次にエクセルで表示するためにスタイルシートを使用してタスクからの出力をフォーマットします。
<%@page language="java" session="false" errorPage="../IEError.jsp"
contentType="application/ms-excel"%>
<%@ taglib uri="http://www.ptc.com/infoengine/taglib/core"
prefix="ie"%>
<%
/*********************************************
*
* DESCRIPTION
* Build html table for import Microsoft Word, Excel, Powerpoint 2000.
*
*********************************************/
// execute create group task to get group info
%>
<ie:task uri="com/company/CreateGroup.xml"/>
<%
// call Apply-XSL Webject to translate data into excel data
%>
<ie:webject name="Apply-XSL" type="DSP">
<ie:param name="XSL_URL" data="com/company/ExcelWorkbook.xsl"/>
<ie:param name="XSL_PARAM" data="CLASS='EmployeeData'"/>
<ie:param name="XSL_PARAM"
data="HEADERS='NAME=Employee,ADDRESS=Home Address,'"/>
<ie:param name="XSL_PARAM" data="USE-COLUMNS='NAME,ADDRESS,EMAIL'"/>
</ie:webject>
XSL スタイルシート
JSP ページの例では、以下の XSL パラメータが XSL スタイルシートに渡されます。
CLASS='EmployeeData'
HEADERS='NAME=Employee,ADDRESS=Home Address,'
USE-COLUMNS='NAME,ADDRESS,EMAIL'
パラメータでクラス、使用する列、およびスタイルシートで定義されているヘッダーを変更し、データをスタイルシートで操作したりフォーマットしたりできるようにします。
JSP ページの Apply-XSL Webject は以下の XSL スタイルシートを呼び出します。
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet
xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"
xmlns:wc="http://www.ptc.com/infoengine/1.0">
<xsl:output omit-xml-declaration="yes"/>
<xsl:param name="CLASS">EMP</xsl:param>
<xsl:param name="USE-COLUMNS">EMPNO,ENAME,POS,</xsl:param>
<xsl:param name="HEADERS">EMPNO=E,ENAME=N,POS=P,</xsl:param>
<xsl:template match="/wc:COLLECTION">
<table border='0' cellpadding='0' cellspacing='0' width='627'
style='border-collapse:collapse;table-layout:fixed;width:350pt'>
<col width='200'
style='mso-width-source:userset;mso-width-alt:5400;width:100pt'/>
<col width='200'
style='mso-width-source:userset;mso-width-alt:5400;width:100pt'/>
<col width='200'
style='mso-width-source:userset;mso-width-alt:6700;width:175pt'/>
<xsl:for-each select="//*[name()=$CLASS]">
<tr height='17' style='height:12.75pt'>
<xsl:call-template name="table-headers"/>
</tr>
<xsl:for-each select="wc:INSTANCE">
<tr>
<xsl:for-each select="*">
<xsl:call-template name="html-table-value"/>
</xsl:for-each>
</tr>
</xsl:for-each>
</xsl:for-each>
</table>
</xsl:template>
<xsl:template name="html-table-value">
<xsl:variable name="TARGET" select="name()"/>
<xsl:if test="contains( $USE-COLUMNS, name() )">
<td height='68' class='xl27' style='height:20.0pt'>
<xsl:value-of select="."/>
</td>
</xsl:if>
</xsl:template>
<xsl:template name="table-headers">
<xsl:for-each select="child::wc:INSTANCE[position()=1]/child::*">
<xsl:variable name="EQUALS" select="'='"/>
<xsl:variable name="DELIM" select="','"/>
<xsl:if test="contains( $USE-COLUMNS, name() )">
<xsl:message>
<xsl:text> Column Header </xsl:text>
<xsl:value-of select="$HEADERS"/>
<xsl:text> Name </xsl:text>
<xsl:value-of select="name()"/>
</xsl:message>
<td height='17' class='xl24' width='100' style='height:25.75pt
;width:100pt'>
<xsl:if test="contains( $HEADERS, name() )">
<xsl:variable name="TEMP"
select="substring-after( $HEADERS, name
() )"/>
<xsl:variable name="TEMP1"
select="substring-after( $TEMP, $EQUALS
)"/>
<xsl:variable name="VALUE" select="substring-before(
$TEMP1, $DELIM)"/>
<xsl:value-of select="$VALUE"/>
</xsl:if>
<xsl:if test="not(contains( $HEADERS, name() ))">
<xsl:value-of select="name()"/>
</xsl:if>
</td>
</xsl:if>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
MS Excel の表示
MS Excel に出力を直接表示するには、Excel の「ファイルを開く」ダイアログでページの URL を実行します。たとえば、ExcelWorkbook.jsp ページを <Windchill>/codebase/com/company/ExcelWorkbook.jsp に保存する場合は、以下の URL を入力します。
http://host/Windchill/com/company/ExcelWorkbook.jsp
以下の図では生成された Excel の列を示します。3 つのヘッダの内 2 つだけが表示されていることに注意してください。EMAIL ヘッダには列名が使用されます。