2013-04-16 1 views
2

У меня есть XML вида: Глава 1 Глава 1.1
Глава 1.1.1 Глава 1,2 Глава нумерации в XSL-FO

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

, но я не в состоянии достичь требуемой нумерации.

ответ

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

thanks..it работал :) :) – user2285584