我的输出类型是text
. 我正在准备报告。我的文本输出只能接受 50 个字符的宽度,然后必须将其换行到下一行。我有一个解决方案来为文本中的元素换行。有什么方法可以包装整个报告而不是对每一行都进行包装?我可以为整个文档做吗?我有换行的解决方案,我的问题是我有很多条件,如下所示:
名字姓氏路线(条件1)(条件2)(条件3)(条件4)..继续......
让我们假设:
名字固定宽度为 15,姓氏固定宽度为 15,城市固定宽度为 3...
在那之后条件1将有10个宽度,条件2有15个固定然后继续......
重要的是,这些条件只是选项......
所以 15+emptyspace+15+emptyspace+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 MARKKKKKKKKKKKK 空气 JOHNNNNNNNNNNNN abcdefh abc ab bcde abc dekf jl MARKKKKKKKKKKK abcdefh abc ab bcde abc dekf jl
预计出炉:
JOHNNNNNNNNNNNN MARKKKKKKKKKKKKK 空气 JOHNNNNNNNNNNNN abcdefh abc ab bcde abc dekf jl MARKKKKKKKKKKKK abcdefh abc abbcde abc dekf jl
请帮我解决我的问题或告诉我在 XSLT 中是否可能?