2

我有以下形式的xml:第1章第1.1
章第1.1.1章第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>

一个章节中可以有任意数量的章节。如何编写 xsl-fo 以获取输出 pdf,如下所示:

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