既然<item>只有一个,<items>就不必要

解决方案 »

  1.   

    请把问题问清楚点,若是该XML格式是固定的,那太easy.
    但若是循环产生的,甚至如<ii>这样的tag都是动态的话,那就要嵌套循环了。
    哪些tag是固定的有且仅有一个,又哪些tag是动态的,需讲明。
      

  2.   

    既须提供Schema,对比你上面给的<table>示例,其xsl:
    <?xml version="1.0" encoding="UTF-8"?>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format">
    <xsl:template match="/">
     <html>
    <head>
    <title>test</title>
    </head>
    <body>
    <table border="1" >
      <tr>
       <td><xsl:value-of select="string(items/item/i)"></xsl:value-of></td>
       <td><table bgcolor="1">
               <tr>
               <td><xsl:value-of select="string(items/item/ii/ii1)"></xsl:value-of></td>
                     <td><xsl:value-of select="string(items/item/ii/tt)"></xsl:value-of></td>
                     <td><table border="1"><tr><td><xsl:value-of select="string(items/item/ii/vv/kk)"></xsl:value-of></td>
                     </tr>
                     </table></td>
               </tr>
              </table>
      </td>
                   </tr>
                   <tr><td><xsl:value-of select="string(items/item/ss)"></xsl:value-of></td>
                   </tr>
    </table>
    </body>
    </html>
    </xsl:template>
    </xsl:stylesheet>
    这显然不是楼主的意思吧:)
      

  3.   

    先谢谢各位,不过都误会了.item之间的元素都是动态的,不能写死.
    每出现一个,就产生一个table,
    如果其子元素中还有子元素,则table中再套一个table.以次类推.
    只有(items><item>是死的,之间的元素及子元素都不定的.
    名称,个数都不定的,所以用了第归,
    我上面写的只是个事例.
      

  4.   

    既然这样,必须要递归了。
    首先写个显示<table></table>的template,如取名为show_table
    这个show_table完成两件事,
    一是显示<table><tr>等tag;
    二是判断当前结点是否还有孩子,若有,则再调用本身show_table。这里实现了递归。
      

  5.   

    兄弟,上面的fuchunjie(还没想好) 是我们的xsl王子,我把他请来给你做解答了:)
      

  6.   

    谢谢王子和kreven兄弟,呵呵~~基本上实现了,数据都可以第归取出了,就是显示table还有点问题.
    结帐拉