技术开发 频道

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


【IT168技术文档】

  动机:
  最初想起做二叉树是因为需要做一个公司结构图。以前的做法都是直接用图象软件画出来一个图片。很好看,但每次有变动后都需要重新画一个新的。另一方面,网页上对线条的显示、布局相当局限。根据动态生成的数据进行排版、定位都相当困难, 而且在美观上也差强人意。做了各种尝试以后,决定用XML+XSL作数据运算; 用VML来美化线条,用JAVASCRIPT来给对象定位。

  材料:
  XML卷之结构树图
  有2个文件:flow2.xml 和 flow2.xsl
  效果:
  浏览这里
  讲解:
  二叉树思路(1)
<html xmlns:v="urn:schemas-microsoft-com:vml"> <STYLE> v\:* { BEHAVIOR: url(#default#VML) } </STYLE> <v:group id="group1" name="group1" coordsize = "100,100"></v:group>
  以上这些都是VML的基本格式,我就不详细讲解了。



  XML是树型结构,我们读取每个数据就需要对这个
  XML数据树进行遍历。而递归运算是XSL优势之一。
  我也是在用其它多种方法进行遍历运算失败后才
  决定使用XSL的。
<FlowRoot> <vcTitle>二叉树--结构图</vcTitle> <Author>Sailflying</Author> <Email>sailflying@163.net</Email> <FlowNode> <iProcess>1</iProcess> <vcCourse>第一个节点</vcCourse> <iNextYes> <FlowNode> <iProcess>2</iProcess> <vcCourse>第二个节点</vcCourse> <iNextYes></iNextYes> <iNextNo></iNextNo> </FlowNode> </iNextYes> <iNextNo> <FlowNode> <iProcess>3</iProcess> <vcCourse>第三个节点</vcCourse> <iNextYes></iNextYes> <iNextNo></iNextNo> </FlowNode> </iNextNo> </FlowNode> </FlowRoot>
  逻辑上很简单,当前节点(1)下面有两个子节点(2,3)。
  只需要将节点2和节点3定位在节点1的左下方和右下方就可以了。
  这里我将左右节点的连接线分别用了绿色和红色,方便显示。


  前面我们说到了XSL的递归功能,为了更清楚的看到每一个详细的
  显示步骤,只需要仿照下面的代码,加一个alert语句就可以了。
0
相关文章