我需要能够从 XSLT (Saxon 12) 输出带有强制换行符的 HTML,基本上是为了分隔段落。我尝试过但不起作用的事情:
<br />
放入 xsl:text
元素内。显而易见,但不允许。style="white-space: pre-line"
添加到 HTML 元素(p
或 a
或 span
)并使用
在 HTML 中获取换行符。这是可行的,但 XSLT 也会自行在文本元素中放入换行符,然后浏览器将其呈现为换行符。对于特定的窗口大小,这可能会导致段落内的行非常短。“正确”的解决方案可能是将段落包装在额外的
<p>
元素中,但这不是我所说的“本地”更改。尤其是如果最近的周围标签是 <span>
甚至 <a>
,则必须在每个 <p>
中重复。样式表有大约 5000 条 <xsl:text>
指令,所以我需要一些可以自动化的东西。
我听说 Saxon 的新版本对此有一个解决方案,一些秘密代码在输出到 HTML 时将转换为
<br />
。但我还没找到它的记录。
那么我该怎么做呢?
看起来您知道执行此操作的正确方法是什么,但您正在寻找一种“不正确”的方法,该方法将减少对遗留代码库的更改。这让我们很难提供建议,因为我们真的不知道限制是什么。
我对此类问题的一般处理方法是,尝试以“不正确”的方式来解决问题正是导致代码随着时间的推移而退化为无法维护的混乱的原因(对此的流行用语是“技术债务”)。对代码库的每次更改都应该按照从头开始的方式进行:因为这可能看起来更昂贵,但随着时间的推移实际上会更便宜。
如果你想输出一个
<br/>
元素,那就输出一个<br/>
元素。事实上,您必须将单个 xsl:text
指令分解为多个指令,这一事实不应成为障碍。
恐怕我不知道“输出到 HTML 时将转换为
<br/>
的秘密代码”可能指的是什么。