7.4.1 ペイロード・ラッパーの XSL スタイルシート

LANSA エディターはペイロード・ラッパーの XSL スタイルシートを使って、フィールドやリスト TSML ノードを変換し、コンテンツを取得してデザインに追加します。

ペイロード・ラッパーの XSL スタイルシートは WebRoutine の (現在アクティブなTSP用の) TSP スタイル・シートをインポートします。この XSL の出力は、LANSA エディターがデザインに追加する必要のあるコンテンツです。(フィールドやリストのXSL インポート、lxml データ・ノード、XSL)

ペイロード・ラッパーでは、XSL テンプレートが WebRoutineの TSP スタイル・シートで定義されると想定される場合があることに注意してください。

<?xml version="1.0" encoding="UTF-8"?>
 
<!-- (c) 2002, 2013 LANSA                          -->
<!-- WAM Editor TSP Stylesheet Wrapper             -->
<!-- $Workfile:: tsp_payload_wrapper.xsl         $ -->
<!-- $Revision::3                               $ -->
 
<xsl:transform version="1.0"
        xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
        xmlns:xslt="http://www.lansa.com/2002/XSL/Transform-Alias"
        xmlns:lxml="http://www.lansa.com/2002/XML/Runtime-Data"
        xmlns:tsml="http://www.lansa.com/2002/XML/Generation-Metadata"
        xmlns:wd="http://www.lansa.com/2002/XSL/Weblet-Design"
        xmlns:lansa_design="http://www.lansa.com/2002/XML/Design"
        xmlns="http://www.w3.org/1999/xhtml"
        exclude-result-prefixes="tsml">
 
    <xsl:import href="%tsp_webroutine%.xsl"/>
 
    <xsl:output method="xml" omit-xml-declaration="no"
                    encoding="UTF-8" indent="yes"/>
    <xsl:namespace-alias stylesheet-prefix="xslt" result-prefix="xsl"/>
 
    <xsl:template match="tsml:data[@full-document = 'false']">
    <lansa_design:payload xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
        xmlns:lxml="http://www.lansa.com/2002/XML/Runtime-Data"
        xmlns:wd="http://www.lansa.com/2002/XSL/Weblet-Design"
        xmlns:lansa_design="http://www.lansa.com/2002/XML/Design"
        xmlns="http://www.w3.org/1999/xhtml">
 
    <lansa_design:imports>
    <xsl:call-template name="weblet-imports"/>
    </lansa_design:imports>
 
    <xsl:apply-templates select="tsml:lxml-data"/>
 
    <lansa_design:content>
    <xsl:apply-templates select="*[not(self::tsml:lxml-data)]"/>
    </lansa_design:content>
    </lansa_design:payload>
    </xsl:template>
 
    <xsl:template match="tsml:lxml-data">
    <lansa_design:lxml-data>
    <xsl:apply-imports />
    </lansa_design:lxml-data>
    </xsl:template>
 
    <xsl:template match="tsml:fields">
    <xsl:apply-templates select="tsml:field" />
    </xsl:template>
 
    <xsl:template match="tsml:field">
    <lansa_design:label>
    <xsl:if test="(tsml:mode != 'hidden') and (tsml:mode != 'private')">
    <xsl:call-template name="field-caption">
    <xsl:with-param name="field" select="."/>
    </xsl:call-template>
    </xsl:if>
    </lansa_design:label>
    <lansa_design:value>
    <xsl:if test="tsml:mode != 'private'">
    <xsl:call-template name="field-value">
    <xsl:with-param name="field" select="."/>
    </xsl:call-template>
    </xsl:if>
    </lansa_design:value>
    </xsl:template>
 
    <xsl:template match="tsml:lists[not(@column-only)]">
    <lansa_design:reference>
    <xsl:apply-imports />
    </lansa_design:reference>
    <lansa_design:implementation>
    <xsl:apply-templates select="tsml:list" mode="template_definition"/>
    </lansa_design:implementation>
    </xsl:template>
    
    <xsl:template match="tsml:lists[@column-only]">
    <xsl:apply-templates select="tsml:list"/>
    </xsl:template>
 
    <xsl:template match="tsml:lists[@column-only]/tsml:list">
    <lansa_design:value>
    <xsl:variable name="inline_list"
            select="(@inline = 'true') or ((@inline = 'default') and $g_inline_lists)"/>
    <xsl:apply-templates select="./tsml:list-entries/tsml:entry/tsml:column"
            mode="column_placement">
    <xsl:with-param name="inline_list" select="$inline_list"/>
    </xsl:apply-templates>
    </lansa_design:value>
    </xsl:template>
</xsl:transform>