コンテキスト
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つの(インライン)要素の間に空白を含める方法は?
試してみてください:
<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>
の問題
<fo:inline white-space="pre"> </fo:inline>
デフォルトでは、xsl:text
要素内のノードを除いて、スタイルシート内のすべての空白のみのテキストノードが削除されます。これはxml:space="preserve"
で上書きできます
<fo:inline xml:space="preserve" white-space="pre"> </fo:inline>
この属性を持つ要素の子孫であるすべての空白テキストノードが保持されます。通常の名前空間とは異なり、xml:
名前空間プレフィックスを宣言する必要はありません(実際には許可されていません)。
以下も使用できます。
&nbsp;