2016-11-10 32 views
0

XMLをフォーマットするためのXMLデータとXSL FOスタイルシートがあります。私は、次のXML文書を持っている:XSL FO:段落間に空白行を1つだけ表示する

<Content> 
<Para>Paragraph One.</Para> 
<Para /> 
<Para>Paragraph Two.</Para> 
<Para /> 
<Para>Paragraph Three.</Para> 
</Content> 

FOスタイルシートを使用してスタイリング後の所望の出力は次のようになります。

Paragraph One. 

Paragraph Two. 

Paragraph Three. 

私は取得しています実際の出力は、2行の空白行が常に存在している、以下の通りです。

Paragraph One. 


Paragraph Two. 


Paragraph Three. 

私が使用していますスタイルシートのコードは次のとおりです。

<xsl:stylesheet 
    version="1.0" 
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
    xmlns:fo="http://www.w3.org/1999/XSL/Format"> 

<xsl:variable name="NewLine"> 
    <xsl:text>&#10;&#10;</text> 
</xsl:variable> 

<xsl:template match="/"> 
    <fo:root> 
     <fo:layout-master-set> 
      <fo:simple-page-master master-name="pageSetup"> 
       <fo:region-body region-name="xsl-region-body" /> 
      </fo:simple-page-master> 
     </fo:layout-master-set> 

     <fo:page-sequence master-reference="pageSetup"> 
      <fo:flow flow-name="xsl-region-body"> 
       <fo:block> 
        <xsl:apply-templates /> 
       </fo:block> 
      </fo:flow> 
     </fo:page-sequence> 

    </fo:root> 
</xsl:template> 

<xsl:template match="Para"> 
    <fo:block 
     linefeed-treatment="preserve" 
     white-space-collapse="false"> 
     <xsl:choose> 
      <xsl:when test="text() != ''"> 
       <xsl:value-of select="text()" /> 
      </xsl:when> 
      <xsl:otherwise> 
       <xsl:value-of select="$NewLine" /> 
      </xsl:otherwise> 
     </xsl:choose> 
</xsl:template> 

</xsl:stylesheet> 
+0

改行挿入のポイントは何ですか?段落の後に空白を追加するには?もしそうなら、あなたの ''に余白やマージンを加えてください。 – potame

答えて

0

ブロック間のスペースを取得するための従来の方法は、space-beforehttps://www.w3.org/TR/xsl11/#space-before)および/またはspace-afterhttps://www.w3.org/TR/xsl11/#space-after)プロパティを使用することです。あなたがXMLで空Para要素と存続しようとしている場合

、あなたはそれらを無視してParaのためのテンプレートを置き換えることにより、space-afterを使用することができます。

<xsl:template match="Para[text()]"> 
    <fo:block space-after="1em"> 
     <xsl:apply-templates /> 
    </fo:block> 
</xsl:template> 
関連する問題