商讯信箱
用户名: @
密  码:   注册|忘记密码
登录
个人用户经销商
您的位置:首页 > 技术频道 > 正文

XML卷之实战锦囊(5):结构树图

作者:ITPUB论坛  2008-02-22
<xsl:template match="FlowNode"><SCRIPT language="JavaScript1.2"> … alert('逐步显示'); … </SCRIPT></xsl:template>
  看了上面的慢动作,是否能让大家了解到我的思路。

  二叉树思路(2)
  我的思路很简单:
  (1)读取当前节点的资料,用VML生成一个新的对象。
  给对象赋初始数值(如 name,id,style样式等)
  (2)用脚本控制来给当前对象定位
  (3)当前节点和它的父亲节点之间加箭头,线条。
  (4)继续找当前节点的子节点,一直循环定位到结束。
  也就是所有节点都遍历完毕,已经生成好了树。
<xsl:template match="FlowNode"><xsl:apply-templates /></xsl:template> <xsl:template match="iNextYes"> <xsl:apply-templates select="./FlowNode" /> </xsl:template> <xsl:template match="iNextNo"> <xsl:apply-templates select="./FlowNode" /> </xsl:template>
  整个递归过程就是靠上面这三个模块(template)来完成的。
  第一个template在匹配当前节点中每一个子节点的模板的时候
  调用了后面两个template; 而后面两个template又在具体执行
  的时候调用了第一个template ,这就相当于一个递归函数。

  语法:



  要依次匹配当前节点中的每个子节点的模板,应使用该元
  素的基本形式 <xsl:apply-templates />。
  否则,匹配的节点由 select 参数中 XPath 表达式的值决
  定,如 <xsl:apply-templates select="./FlowNode" />



  (1)和(2)的作用都是返回由 select 参数给出的表达式的字符串值。
  他们的搜索条件相同,所以返回的值也一样。
  只不过是使用的场合不同,他们的书写形式也就不一样。
(1) <xsl:value-of select="./iProcess/text()" /> (2) {./iProcess/text()}
  这里定义了一些变量,节点的定位就是根据这些变量来调用运算公式的。
root_left //根的左边距=所有叶子的分配宽度(y*10) + 所有叶子的宽度(y*50) + 左边距基本值(10) root_top //根的上边距=上边距基本值(10) objOval //当前对象,是一个object objOval_iProcess //当前对象的步骤值 objParentOval //当前对象的父节点,是一个object objParentOval_iProcess //当前对象父节点的步骤值 objParent_name //当前对象父节点的名称 Leaf_left //当前对象的所有子节点中的左边叶子数 Leaf_right //当前对象的所有子节点中的右边叶子数 Leaf_sum //当前对象的所有子节点中叶子数 //叶子:是指当前节点没有子节点
1 2 3 4
【内容导航】
第1页: 概述 第2页: 第2页
第3页: 第3页 第4页: 第4页
©版权所有。未经许可,不得转载。
[责任编辑:nancy]
[an error occurred while processing this directive]