如何按顺序列举表

时间:2015-01-08 20:03:22

标签: xslt xslt-2.0

我想知道如何按顺序枚举表并将此值保存到某种变量中,以便可以在另一个模板中选择此值。
每次调用模板表时,变量都必须递增("计数器"的第一个值必须为1)。

    <xsl:output method="html"/>
    <xsl:template match="/">
    <html>
        <head>
           <title>Tables.</title>
        </head>
        <body>
           <xsl:apply-templates select="table"/> 
           <!-- apply more templates -->   
        </body>
    </html>
    </xsl:template>

    <xsl:template match="table">    
    <center>        
        <b>Table **ENUMERATION OF THE TABLE** - </b><xsl:value-of select="title"/>                                                          
    </center>
    <br/>
    </xsl:template>

    <!-- more templates -->   

输入(XML):

<table id="table1">
<title>Title.</title>
<br/>
</table>

<table id="table2">
<title>Title.</title>
<br/>
</table>

输出(HTML):
表1 - 标题。
表2 - 标题。

1 个答案:

答案 0 :(得分:1)

你的榜样不是很好。如果您的输入类似于:

<root>
    <table id="table1">
        <title>Title 1</title>
    </table>
    <not-table/>    
    <table id="table2">
        <title>Title 2</title>
    </table>
    <not-table/>    
    <table id="table3">
        <title>Title 3</title>
    </table>
</root>

然后申请:

<xsl:template match="/root">
    <xsl:copy>
        <xsl:apply-templates select="table"/>
    </xsl:copy>
</xsl:template>

<xsl:template match="table">
    <center>        
        <b>Table <xsl:value-of select="position()"/> - </b>
        <xsl:value-of select="title"/>                                                          
    </center>
    <br/>
</xsl:template>

将导致:

<root>
   <center>
      <b>Table 1 - </b>Title 1</center>
   <br/>
   <center>
      <b>Table 2 - </b>Title 2</center>
   <br/>
   <center>
      <b>Table 3 - </b>Title 3</center>
   <br/>
</root>