2

次の形式の xml があります。 Chapter 1 Chapter 1.1
Chapter 1.1.1 Chapter 1.2

<CHAPTER>
 <LONG-NAME>Chapter 2</LONG-NAME>
  <CHAPTER>
 <LONG-NAME>Chapter 2.1</LONG-NAME>
 </CHAPTER>
 <CHAPTER>
 <LONG-NAME>Chapter 2.2</LONG-NAME>
 </CHAPTER>
</CHAPTER>
</REPORT-BODY>

1 つのチャプター内に任意の数のチャプターを含めることができます。以下のように出力pdfを取得するためのxsl-foの書き方:

1. Chapter 1
1.1 chapter 1.1
1.1.1 Chapter 1.1.1
1.2 Chapter 1.2

2.Chapter 2
2.1 Chapter 2.1
2.2 Chapter 2.2

私は使ってみました:

 <xsl:template
    match="CHAPTER/LONG-NAME">
   <fo:block
        color="#374B80"
        font-size="12px"
        font-family="Helvetica"
        font-weight="bold"
        padding-top="3px"
        padding-bottom="3px">
<xsl:if test="ancestor::REPORT-BODY">
    <xsl:variable name="chapNum">
    <xsl:number from="CHAPTER" count="LONG-NAME" format="1 " level="any"/>
    </xsl:variable>
   <xsl:value-of select="$chapNum"/>    
   </xsl:if>
<xsl:if test="ancestor::CHAPTER">
<xsl:variable name="chapNumber">
<xsl:text>.</xsl:text>
  <xsl:number from="CHAPTER/CHAPTER" count="LONG-NAME" format="1. " level="any"/>
  </xsl:variable>   
  <xsl:value-of select="$chapNumber"/>  
   </xsl:if>      
   <xsl:apply-templates/>
   </fo:block>
   </xsl:template>

しかし、必要な番号付けを達成できません。

4

1 に答える 1

2

次のように使用してみてくださいxsl:number:

<xsl:number format="1. " count="CHAPTER" level="multiple"/>

テンプレートを次のものに置き換えることができるはずです。

<xsl:template match="CHAPTER/LONG-NAME">
    <fo:block
        color="#374B80"
        font-size="12px"
        font-family="Helvetica"
        font-weight="bold"
        padding-top="3px"
        padding-bottom="3px">
        <xsl:number format="1. " count="CHAPTER" level="multiple"/>     
        <xsl:value-of select="."/>
    </fo:block>
</xsl:template>
于 2013-04-16T15:16:10.980 に答える