我现在想在xsl中定义一个变量,在<xsl:for-each select="Table">中加一(+1)并且把这个值设为一个标签的ID<tr id="变量">,我要怎么做!请详细描述!3Q3Q3Q3Q3Q3Q3Q3Q3Q3Q3Q3Q3Q3Q3Q3Q3Q3Q3Q3Q3Q3Q

解决方案 »

  1.   

    在xsl:for-each中,<xsl:number value="position()" />可以获取到遍历的第几个元素,不用设置变量。
    将这个数直接放到元素的属性中是不可以的,因为属性值不允许有标签开始结束符。可以再xsl:for-each后用js设置。

    xml文件<?xml version="1.0" encoding="UTF-8"?>
    <?xml-stylesheet type="text/xsl" href="NewFile.xsl"?>
    <root>
    <book>
    <name>book1</name>
    <writer>A</writer>
    </book>
    <book>
    <name>book2</name>
    <writer>B</writer>
    </book>
    </root>
    xsl文件<?xml version="1.0" encoding="UTF-8"?>
    <xsl:stylesheet version="1.0"
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:template match="/">
    <html>
    <body>
    <table border="1" id="tab1" >
    <xsl:for-each select="root/book">
      <tr>
       <td><xsl:number value="position()" /></td>
            <td><xsl:value-of select="name"/></td>
            <td><xsl:value-of select="writer"/></td>
          </tr>
    </xsl:for-each>
    </table>
    <script type="text/javascript">
    var tab1 = document.getElementById("tab1");
    var trs = tab1.getElementsByTagName("tr");
    for(var i = 0;i<![CDATA[<]]>trs.length;i++){
    trs[i].setAttribute("id",i);
    } </script>
    </body>
    </html>
    </xsl:template>
    </xsl:stylesheet>