私の出力タイプはtext
です。レポートの準備をしています。私のテキスト出力は、次の行に折り返さなければならない 50 文字幅のみを受け入れるようになりました。テキスト内の要素を改行する解決策があります。すべての行をラップする代わりに、レポート全体をラップする方法はありますか? ドキュメント全体に対して行うことはできますか?ラインラップの解決策があります。私の問題は、以下のような多くの条件があることです:
Firstname lastname route (condition1 ) (condition2) (condition3) (condition4)..go on...
仮定しましょう:
名の固定幅は 15、姓の固定幅は 15、都市の固定幅は 3...
その後、条件1は幅10、条件2は15で固定され、次に進みます...
重要なことに、これらの条件はオプションのみです...
したがって、15+空スペース+15+空スペース+3 =36 私の条件は36列目から始まります..
最初のラップの後、次のコンディションのために同じラインから続けなければなりませんでした。次の項目では、開始位置と終了位置を見つけました。この問題を解決するには?
xml 入力:
<?xml version="1.0" encoding="UTF-8"?>
<passengerlist>
<passengers>
<Firstname>JOHNNNNNNNNNNNN</Firstname>
<lastname>MARKKKKKKKKKKKK</lastname>
<comments>abcdefh abc abcde abc dekf jl</comments>
<route>air</route>
</passengers>
<!-- <passengers>
<Firstname>ANTONYYYYYYYYYYY</Firstname>
<lastname>NORMAN</lastname>
<comments>abcdefddddddddghhhhhhhhhhhhhh</comments>
<route>air</route>
</passengers>
<passengers>
<Firstname>BRITTOOOOOOOOOO</Firstname>
<lastname>MARKKKKKKK</lastname>
<comments>abcdedfffghghghghghghghghghghghghgh</comments>
<route>cruise</route>
</passengers> -->
</passengerlist>
XSLT コード:
<!-- For line Wrapping -->
<xsl:template name="callEmpty">
<xsl:param name="callEmpty"/>
<xsl:variable name="LNemptyCheck" select="$callEmpty"></xsl:variable>
</xsl:template>
<xsl:template name="text_wrapper">
<xsl:param name="Text"/>
<xsl:choose>
<xsl:when test="string-length($Text)">
<xsl:value-of select="substring($Text,1,15)"/>
<xsl:if test="string-length($Text) > 15">
<xsl:value-of select="$newline"/>
</xsl:if>
<xsl:call-template name="wrapper_helper">
<xsl:with-param name="Text" select="substring($Text,16)"/>
</xsl:call-template>
</xsl:when>
</xsl:choose>
</xsl:template>
<xsl:template name="wrapper_helper">
<xsl:param name="Text"/>
<xsl:value-of select="substring($Text,1,15)"/>
<xsl:text>
</xsl:text>
<xsl:call-template name="text_wrapper">
<xsl:with-param name="Text" select="substring($Text,15)"/>
</xsl:call-template>
</xsl:template>
<!-- Template for Line wrapping -->
<xsl:template match="/">
<xsl:for-each select="passengerlist/passengers">
<xsl:value-of select="Firstname"/>
<xsl:text> </xsl:text>
<xsl:value-of select="lastname"/>
<xsl:text> </xsl:text>
<xsl:value-of select="route"/>
<xsl:text> </xsl:text>
<xsl:variable name="firstwrap">
<xsl:if test="route='air'">
<xsl:value-of select="Firstname"/>
<xsl:text> </xsl:text>
<xsl:value-of select="comments"/>
</xsl:if>
</xsl:variable>
<xsl:call-template name="text_wrapper">
<xsl:with-param name="Text" select="$firstwrap"/>
</xsl:call-template>
出力:
JOHNNNNNNNNNNNN MARKKKKKKKKKKKKK air JOHNNNNNNNNNNNN abcdefh abc ab bcde abc dekf jl MARKKKKKKKKKKKKK abcdefh abc ab bcde abc dekf jl
予想外:
JOHNNNNNNNNNNNN MARKKKKKKKKKKKK エア JOHNNNNNNNNNNNN abcdefh abc ab bcde abc dekf jl MARKKKKKKKKKKKKK abcdefh abc abbcde abc dekf jl
私の問題を整理するのを手伝ってください。または、XSLT でそれは可能ですか?