<tr>嵌套<td>内显示异常:description_line_1内容分行而非单行
我来帮你搞定这个换行异常的问题!从你给出的代码片段来看,核心需求是让product_description和description_line_1在同一个单元格里,前者展示完后换行,而且description_line_1必须保持单行不拆分。咱们一步步排查解决:
锁定单元格的宽度与换行规则
大概率是单元格没有明确的宽度限制,或者浏览器默认的换行规则把description_line_1拆成了两行。你可以给承载内容的<td>添加CSS样式,强制控制换行行为:<td style="text-align: left; min-width: 300px; white-space: nowrap;">这里
min-width保证单元格有足够宽度容纳内容,white-space: nowrap会强制整行内容不自动换行——不过如果description_line_1本身带换行符的话,还需要处理内容本身的问题。清理description_line_1内容里的换行符
如果description_line_1的数据源里自带了换行符(比如\n、\r或者隐形的换行标记),就算单元格宽度足够也会折行。你可以用XSLT的normalize-space()函数去除多余空格和换行:<xsl:value-of select="normalize-space(description_line_1)" />要是你只想去掉换行符但保留正常空格,也可以用
translate()函数精准替换:<xsl:value-of select="translate(description_line_1, ' ', ' ')" />手动控制两个内容的换行时机
要确保product_description展示完再换行显示description_line_1,别让浏览器自动拆分,你可以在两个内容之间手动加<br />标签,明确换行位置:<td style="text-align: left;"> <xsl:value-of select="product_description" /> <br /> <xsl:value-of select="normalize-space(description_line_1)" /> </td>排查父元素的样式干扰
有时候<tr>或者更上层的表格元素设置了word-wrap、overflow-wrap这类属性,也会影响单元格内的换行。你可以给单元格单独设置white-space: pre-line,这样只会识别手动添加的<br />换行,忽略内容里的自动换行:<td style="text-align: left; white-space: pre-line;"> <xsl:value-of select="product_description" /> <br /> <xsl:value-of select="description_line_1" /> </td>
内容的提问来源于stack exchange,提问作者Karthikeyan

