如何在两个(内联)元素之间插入空格?

Posted

技术标签:

【中文标题】如何在两个(内联)元素之间插入空格?【英文标题】:How to insert a white space between two (inline) elements? 【发布时间】:2014-10-10 10:50:13 【问题描述】:

上下文

我正在创建一个 XSL-FO 文档来将我的 XML 文本转换为 PDF。

在 XSL-FO 中,我有两个连续的内联元素,我希望它们之间有一个空格:

<fo:block>
    <xsl:number/> <xsl:value-of select="@title"/>
</fo:block>

预期的结果是:

1 简介

相反,我得到了

1简介

似乎 XML 不考虑这个空白。

尝试

我尝试了几种可能的解决方案,但均未成功:

<fo:block>
    <xsl:number/><fo:inline white-space="pre">  </fo:inline><xsl:value-of select="@title"/>
</fo:block>

<fo:block>
    <xsl:number/><fo:inline margin-left="0.5cm"><xsl:value-of select="@title"/></fo:inline>
</fo:block>

这些想法都不会产生可接受的结果。

问题:

如何在两个(内联)元素之间包含空格?

【问题讨论】:

【参考方案1】:

试试:

<fo:block>
    <xsl:number/>
    <xsl:text> </xsl:text>
    <xsl:value-of select="@title"/>
</fo:block>

或者:

<fo:block>
    <xsl:number/>
    <xsl:value-of select="concat(' ', @title)"/>
</fo:block>

【讨论】:

【参考方案2】:

问题

<fo:inline white-space="pre">  </fo:inline>

默认情况下,样式表中的所有仅空白文本节点都被删除,xsl:text 元素内的节点除外。你可以用xml:space="preserve"覆盖它

<fo:inline xml:space="preserve" white-space="pre">  </fo:inline>

将保留作为具有此属性的元素的后代的所有空白文本节点。请注意,与普通命名空间不同,您不需要(实际上也不允许)声明 xml: 命名空间前缀。

【讨论】:

【参考方案3】:

您还可以使用以下内容:

&amp;nbsp;

【讨论】:

以上是关于如何在两个(内联)元素之间插入空格?的主要内容,如果未能解决你的问题,请参考以下文章

当两个div元素显示为内联块时如何删除它们之间的空白[重复]

内联元素空隙问题

HTML中的两个块元素之间是否会忽略空格或换行?

内联元素inline-block空隙问题

两个内联块 <span> 元素之间的间隙 [重复]

如何在 Flexbox 中的两个 div 之间添加边距/空格 [重复]