zoukankan      html  css  js  c++  java
  • demo : 简单的 xslt 递归解析 xml 成 tree

    tree.xml:
    <table>
     <person>
      <id>1</id>
      <name>人物</name>
      <parent>0</parent>
     </person>
     <person>
      <id>2</id>
      <name>武将</name>
      <parent>1</parent>
     </person>
     <person>
      <id>3</id>
      <name>文臣</name>
      <parent>1</parent>
     </person>
     <person>
      <id>4</id>
      <name>魏延</name>
      <parent>2</parent>
     </person>
     <person>
      <id>5</id>
      <name>赵云</name>
      <parent>2</parent>
     </person>
     <person>
      <id>6</id>
      <name>何平</name>
      <parent>2</parent>
     </person>
     <person>
      <id>7</id>
      <name>荀域</name>
      <parent>3</parent>
     </person>
     <person>
      <id>8</id>
      <name>荀攸</name>
      <parent>3</parent>
     </person>
     <person>
      <id>9</id>
      <name>鲁肃</name>
      <parent>3</parent>
     </person>
     <person>
      <id>10</id>
      <name>赵统</name>
      <parent>5</parent>
     </person>
     <person>
      <id>11</id>
      <name>赵广</name>
      <parent>5</parent>
     </person>
    </table>

    -----------------------------------------------------------------------------------

    style.xsl:
    <?xml version="1.0" encoding="utf-8"?>
    <xsl:transform version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
     <xsl:template match="/">
      <html>
       <xsl:apply-templates select="//person[parent=0]"/>
      </html>
     </xsl:template>
     <xsl:template match="//person">
      <xsl:param name="id" select="id"/>
      <div id="{$id}" onclick="s{$id}.style.display=='none'?s{$id}.style.display='block':s{$id}.style.display='none'">
       <xsl:choose>
        <xsl:when test="count(//person[parent=$id]) &gt; 0">
         <span style="cursor:hand">+</span>
        </xsl:when>
        <xsl:otherwise>-</xsl:otherwise>
       </xsl:choose>
       <xsl:value-of select="name"/>
      </div>
      <div id="s{$id}" style="display:none;margin-left:30px;">
       <xsl:apply-templates select="//person[parent=$id]"/>
      </div>
     </xsl:template>
    </xsl:transform>

  • 相关阅读:
    洛谷P2415 集合求和
    八数码难题解法大全
    P1789 【Mc生存】插火把
    P1554 梦中的统计
    CentOS6.4 安装 Oracle11g
    湖南省第八届大学生程序设计大赛原题 D
    选择排序(直接选择、堆排序)
    改变Emacs下的注释代码方式以支持当前行(未选中情况下)的注释/反注释
    cocos2d-x游戏开发(十五)游戏加载动画loading界面
    SIMPASS技术解析
  • 原文地址:https://www.cnblogs.com/focus/p/948547.html
Copyright © 2011-2022 走看看