web-dev-qa-db-ja.com

2つの(インライン)要素の間に空白を挿入するにはどうすればよいですか?

コンテキスト

XMLテキストをPDFに変換するXSL-FOドキュメントを作成しています。

XSL-FOには、2つの連続したインライン要素があり、それらの間に空白が必要です。

<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>

それらのアイデアはどれも許容できる結果を生み出しません。

質問:

2つの(インライン)要素の間に空白を含める方法は?

11
Adrian Maire

試してみてください:

<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>
17
michael.hor257k

の問題

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

デフォルトでは、xsl:text要素内のノードを除いて、スタイルシート内のすべての空白のみのテキストノードが削除されます。これはxml:space="preserve"で上書きできます

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

この属性を持つ要素の子孫であるすべての空白テキストノードが保持されます。通常の名前空間とは異なり、xml:名前空間プレフィックスを宣言する必要はありません(実際には許可されていません)。

4
Ian Roberts

以下も使用できます。

&amp;nbsp;
0
StormMagnus