- PR -

XSL-FOで作成される帳票ファイルの改行文字の改行方法

投稿者投稿内容
悩むSE
会議室デビュー日: 2006/09/26
投稿数: 9
投稿日時: 2006-10-04 09:57
おはようございます。

ue様ご回答ありがとうございます。
おかげさまで無事に帳票の出力を執り行うことができました。
感謝の限りでございます。

ここでue様のような熟練者の方に教えを請うのは近道で良いのですが、
私自身も成長したく思います。
そこで、XMLやXSLを学ぶ上で何か良いページや、参考図書がありましたら
教えていただけないでしょうか?
よろしくお願いします。

追記:
今回のまとめです。皆様のお役に立てると幸いです。

<!-- XSLソース開始 -->
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format">
<!-- 改行を行うためのテンプレートとして InsertLineBreak を定義 -->
<xsl:template name="InsertLineBreak">
<xsl:param name="value" select="あ"/>
<xsl:choose>
<xsl:when test="contains($value,'&#10;')"> <!-- アンドは半角で読み替えて下さい -->
<xsl:value-of select="substring-before($value,'&#10;')"/>
<fo:block white-space-collapse="false">
</fo:block>
<xsl:call-template name="InsertLineBreak">
<xsl:with-param name="value" select="substring-after($value,'&#10;')"/>
</xsl:call-template>
</xsl:when>
</xsl:choose>
</xsl:template>
<!-- InsertLineBreak の定義終了 -->

<!-- InsertLineBreak を実際に適用する箇所 -->
<fo:block hyphenate="true"> <!-- hyphenate は日本語環境下で、半角文字をセル幅以内で改行するときに使います。 -->
<xsl:for-each select="XXXXXX"> <!-- XXXXXXは項目名です。 -->
<fo:inline font-size="10.0pt" font-family="MS 明朝" font-weight="bold">
<xsl:call-template name="InsertLineBreak">
<xsl:with-param name="value" select="concat(text(),'&#10;'"> <!-- アンドは半角で読み替えて下さい -->
<xsl:apply-templates />
</xsl:with-param>
</xsl:call-template>
</fo:inline>
</xsl:for-each>
</fo:block>
<!-- InsertLineBreak の適用おわり -->
<!-- XSLソース終了 -->

スキルアップ/キャリアアップ(JOB@IT)