XSLT列表项位置问题

时间:2015-06-08 23:03:38

标签: xslt

请检查以下代码。我匹配列表元素,并根据下面的代码,position()函数返回元素的正确数字与ul元素,即1,2,3,好像我做的测试与位置我只得到ss,ss,ss 。谁能让我知道失踪的地方?

XSL-FO

<xsl:template match="html:li" priority="2">
    <fo:list-item>
       ...
       <xsl:value-of select="position()"/> -- this returns 1,2,3
       <xsl:if test="position() = 1">
        <xsl:text>ss</xsl:text> -- only executes 
      </xsl:if>
      <xsl:if test="position() = 2">
        <xsl:text>ssddddd</xsl:text> -- does not only execute
      </xsl:if>
      <xsl:if test="position() = 3">
        <xsl:text>sskkkkkkkkk</xsl:text> -- does not only execute
      </xsl:if> 
    </fo:list-item>
</xsl:template

XSL

<xsl:template match="list">
    <xsl:if test="list.item">
        <xsl:variable name="styleAttr">             
            <xsl:text>margin-top: 1em;</xsl:text>
        </xsl:variable>

        <div>
            <xsl:if test="string-length($styleAttr) &gt; 0">
                <xsl:attribute name="style">
                    <xsl:value-of select="$styleAttr"/>
                </xsl:attribute>
            </xsl:if>

            <ul>                    
                <xsl:apply-templates select="node()[not(self::list)]" />
            </ul>
        </div>
    </xsl:if>
</xsl:template>

<xsl:template match="list.item" priority="1">
    <li style="padding: 0;">
        <div style="margin-bottom: 0.5em;">
            <xsl:apply-templates />
            <xsl:if test="following-sibling::node()[1][self::list]">
                <xsl:apply-templates select="following-sibling::node()[1]" />
            </xsl:if>
        </div>
    </li>
</xsl:template>

0 个答案:

没有答案