今天改了个tree,不敢独享,给大家看看
时间:2005-07-07
来源:互联网
`````````````````tree.htm`````````````````
``````````````````````````````````````````
<SCRIPT event=onload for=window>
objData = new ActiveXObject("MSXML.DOMDocument");
objData.async = false;
objData.load("tree.xml");
if (objData.parseError.errorCode != 0)
alert(objData.parseError.reason);
objStyle = new ActiveXObject("MSXML.DOMDocument");
objStyle.async = false;
objStyle.load("tree.xsl");
if (objStyle.parseError.errorCode != 0)
alert(objStyle.parseError.reason);
document.open("text/html","replace");
document.write(objData.transformNode(objStyle));
</SCRIPT>
````````````````tree.xml``````````````````
``````````````````````````````````````````
<?xml version="1.0" encoding="GB2312"?>
<?xml-stylesheet type='text/xsl' href='tree.xsl'?>
<TreeView>
<Tree Text="根节点" Expanded="true">
<Tree Text="1.1" Expanded="false">
<Tree Text="1.1.1">
<Tree Text="1.1.1.1etettttttttttttttttttttertergsdbf" URL="http://blog.csdn.net/civ3">
<Tree target="_blank" URL="http://msdn.microsoft.com" Text="1.1.1.1.1google"/>
<Tree Text="1.1.1.1.2"/>
</Tree>
<Tree Text="1.1.1.1etettttttttttttttttergsdbf">
<Tree target="_blank" URL="http://www.google.com" Text="1.1.1.1.1google"/>
<Tree Text="1.1.1.1.2"/>
</Tree>
<Tree Text="宝玉"/>
</Tree>
<Tree Text="1.1.2"/>
</Tree>
<Tree Text="1.2">
<Tree Text="1.2.1"/>
<Tree Text="1.2.2"/>
</Tree>
</Tree>
</TreeView>
`````````````````tree.xsl``````````````
```````````````````````````````````````
<?xml version="1.0" encoding="gb2312"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:template match="/">
<HTML>
<HEAD><!--========================================脚本===========================================-->
<script><![CDATA[
var CurrentNode = null;
var iconLeaf = "<img src=\"img/leaf.gif\"/>";//末端(树的叶子)
var iconExpand = "<img src=\"img/expanded.gif\"/>";//展开时
var iconCollapse = "<img src=\"img/collapse.gif\"/>";//折叠时
function Expand(obj){//将obj展开
//确认obj是控制点
if(obj.tagName != 'SPAN' || obj.className!='clsSpace')return false;
//找到子节点集所在层div
var div = obj.parentNode.getElementsByTagName("DIV")[0];
if(div == null)return false;//没找到说明没有子节点了
//展开行动
if(div.className=='shown'){
obj.innerHTML = iconCollapse;//更换控制点图标
div.className='hide';//隐藏子节点集层
}
else{
obj.innerHTML = iconExpand;
div.className='shown';
}
}
]]>
</script>
<style><!--========================================样式===========================================-->
<![CDATA[
BODY{font-size:9pt;}
span{
position:relative;
display:inline;
height:12pt;
}
span.clsSpace{overflow:hidden;}
A{
text-decoration:none;
cursor:default;
}
a.go:hover{
text-decoration:underline;
}
a.loseURL{
color:#888888;
}
.hide{display:none;}
.shown{display:block;margin-left:15px;}
]]>
</style>
<TITLE>tree</TITLE>
</HEAD>
<BODY><!--========================================模板===========================================-->
<xsl:apply-templates select="/TreeView/Tree"/>
</BODY>
</HTML>
</xsl:template>
<xsl:template match="Tree">
<div class="clsItem" type="parent"><!--单位节点-->
<xsl:if test="count(Tree)>0"> <!--如果有子节点-->
<xsl:choose>
<xsl:when test="@Expanded"> <!--当存在属性Expanded时-->
<xsl:attribute name="Expanded"><xsl:value-of select="@Expanded"/></xsl:attribute></xsl:when>
<xsl:otherwise><xsl:attribute name="Expanded">false</xsl:attribute></xsl:otherwise>
</xsl:choose>
</xsl:if>
<!--控制点-->
<span class='clsSpace'>
<xsl:choose>
<!--若有子节点-->
<xsl:when test="count(Tree)>0">
<!--折叠事件监听-->
<xsl:attribute name="onclick">Expand(this)</xsl:attribute>
<!--折叠外观设置(静态初始化)-->
<xsl:choose>
<!--若有属性Expanded,则依照属性值-->
<xsl:when test="@Expanded">
<xsl:choose>
<xsl:when test="@Expanded[.='true']"><img src="img/expanded.gif"/></xsl:when>
<xsl:otherwise><img src="img/collapse.gif"/></xsl:otherwise>
</xsl:choose>
</xsl:when>
<!--默认叠起来的样子(与实际行为一致,见下面子节点层)-->
<xsl:otherwise><img src="img/collapse.gif"/></xsl:otherwise>
</xsl:choose>
</xsl:when>
<!--否则已经是末节点-->
<xsl:otherwise><img src="img/leaf.gif"/></xsl:otherwise>
</xsl:choose>
</span>
<!--内容文字-->
<span class='clsLabel'>
<!--用于鼠标悬停的小黄标签-->
<xsl:attribute name="title"><xsl:value-of select="@Text" /></xsl:attribute>
<a>
<xsl:choose>
<xsl:when test="@URL">
<xsl:attribute name="class">go</xsl:attribute>
<!--目标-->
<xsl:choose>
<xsl:when test="@Target"><xsl:attribute name="target"><xsl:value-of select="@Target" /></xsl:attribute></xsl:when>
<!--默认开新窗口--><xsl:otherwise><xsl:attribute name="target">_blank</xsl:attribute></xsl:otherwise>
</xsl:choose>
<!--地址-->
<xsl:attribute name="Href"><xsl:value-of select="@URL"/></xsl:attribute>
</xsl:when>
<xsl:otherwise>
<xsl:attribute name="class">loseURL</xsl:attribute>
<xsl:attribute name="onclick">Expand(this.parentNode.previousSibling);return false;</xsl:attribute>
</xsl:otherwise>
</xsl:choose>
<!--正文-->
<xsl:value-of select="@Text"/>
</a>
</span>
<!--处理递归-->
<xsl:if test="count(Tree)>0">
<!--子节点们都在一个层中-->
<div>
<!--该层的显示与否取决于当前tree节点的Expanded属性(静态设置)-->
<xsl:choose>
<xsl:when test="@Expanded">
<xsl:choose>
<xsl:when test="@Expanded[.='true']"><xsl:attribute name="class">shown</xsl:attribute></xsl:when>
<xsl:otherwise><xsl:attribute name="class">hide</xsl:attribute></xsl:otherwise>
</xsl:choose>
</xsl:when>
<!--默认隐藏(与控制点外观一致)-->
<xsl:otherwise><xsl:attribute name="class">hide</xsl:attribute></xsl:otherwise>
</xsl:choose>
<!--无条件递归!因为select不到Tree就静悄悄了-->
<xsl:apply-templates select="Tree"></xsl:apply-templates>
</div>
</xsl:if>
</div>
</xsl:template>
</xsl:stylesheet>
``````````````````````````````````````````````````````````
``````````````````````````````````````````````````````````
``````````````````````````````````````````````````````````
借鉴了msdn的deeptree以及宝玉的一个成品,另外加了很多注释。
``````````````````````````````````````````
<SCRIPT event=onload for=window>
objData = new ActiveXObject("MSXML.DOMDocument");
objData.async = false;
objData.load("tree.xml");
if (objData.parseError.errorCode != 0)
alert(objData.parseError.reason);
objStyle = new ActiveXObject("MSXML.DOMDocument");
objStyle.async = false;
objStyle.load("tree.xsl");
if (objStyle.parseError.errorCode != 0)
alert(objStyle.parseError.reason);
document.open("text/html","replace");
document.write(objData.transformNode(objStyle));
</SCRIPT>
````````````````tree.xml``````````````````
``````````````````````````````````````````
<?xml version="1.0" encoding="GB2312"?>
<?xml-stylesheet type='text/xsl' href='tree.xsl'?>
<TreeView>
<Tree Text="根节点" Expanded="true">
<Tree Text="1.1" Expanded="false">
<Tree Text="1.1.1">
<Tree Text="1.1.1.1etettttttttttttttttttttertergsdbf" URL="http://blog.csdn.net/civ3">
<Tree target="_blank" URL="http://msdn.microsoft.com" Text="1.1.1.1.1google"/>
<Tree Text="1.1.1.1.2"/>
</Tree>
<Tree Text="1.1.1.1etettttttttttttttttergsdbf">
<Tree target="_blank" URL="http://www.google.com" Text="1.1.1.1.1google"/>
<Tree Text="1.1.1.1.2"/>
</Tree>
<Tree Text="宝玉"/>
</Tree>
<Tree Text="1.1.2"/>
</Tree>
<Tree Text="1.2">
<Tree Text="1.2.1"/>
<Tree Text="1.2.2"/>
</Tree>
</Tree>
</TreeView>
`````````````````tree.xsl``````````````
```````````````````````````````````````
<?xml version="1.0" encoding="gb2312"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:template match="/">
<HTML>
<HEAD><!--========================================脚本===========================================-->
<script><![CDATA[
var CurrentNode = null;
var iconLeaf = "<img src=\"img/leaf.gif\"/>";//末端(树的叶子)
var iconExpand = "<img src=\"img/expanded.gif\"/>";//展开时
var iconCollapse = "<img src=\"img/collapse.gif\"/>";//折叠时
function Expand(obj){//将obj展开
//确认obj是控制点
if(obj.tagName != 'SPAN' || obj.className!='clsSpace')return false;
//找到子节点集所在层div
var div = obj.parentNode.getElementsByTagName("DIV")[0];
if(div == null)return false;//没找到说明没有子节点了
//展开行动
if(div.className=='shown'){
obj.innerHTML = iconCollapse;//更换控制点图标
div.className='hide';//隐藏子节点集层
}
else{
obj.innerHTML = iconExpand;
div.className='shown';
}
}
]]>
</script>
<style><!--========================================样式===========================================-->
<![CDATA[
BODY{font-size:9pt;}
span{
position:relative;
display:inline;
height:12pt;
}
span.clsSpace{overflow:hidden;}
A{
text-decoration:none;
cursor:default;
}
a.go:hover{
text-decoration:underline;
}
a.loseURL{
color:#888888;
}
.hide{display:none;}
.shown{display:block;margin-left:15px;}
]]>
</style>
<TITLE>tree</TITLE>
</HEAD>
<BODY><!--========================================模板===========================================-->
<xsl:apply-templates select="/TreeView/Tree"/>
</BODY>
</HTML>
</xsl:template>
<xsl:template match="Tree">
<div class="clsItem" type="parent"><!--单位节点-->
<xsl:if test="count(Tree)>0"> <!--如果有子节点-->
<xsl:choose>
<xsl:when test="@Expanded"> <!--当存在属性Expanded时-->
<xsl:attribute name="Expanded"><xsl:value-of select="@Expanded"/></xsl:attribute></xsl:when>
<xsl:otherwise><xsl:attribute name="Expanded">false</xsl:attribute></xsl:otherwise>
</xsl:choose>
</xsl:if>
<!--控制点-->
<span class='clsSpace'>
<xsl:choose>
<!--若有子节点-->
<xsl:when test="count(Tree)>0">
<!--折叠事件监听-->
<xsl:attribute name="onclick">Expand(this)</xsl:attribute>
<!--折叠外观设置(静态初始化)-->
<xsl:choose>
<!--若有属性Expanded,则依照属性值-->
<xsl:when test="@Expanded">
<xsl:choose>
<xsl:when test="@Expanded[.='true']"><img src="img/expanded.gif"/></xsl:when>
<xsl:otherwise><img src="img/collapse.gif"/></xsl:otherwise>
</xsl:choose>
</xsl:when>
<!--默认叠起来的样子(与实际行为一致,见下面子节点层)-->
<xsl:otherwise><img src="img/collapse.gif"/></xsl:otherwise>
</xsl:choose>
</xsl:when>
<!--否则已经是末节点-->
<xsl:otherwise><img src="img/leaf.gif"/></xsl:otherwise>
</xsl:choose>
</span>
<!--内容文字-->
<span class='clsLabel'>
<!--用于鼠标悬停的小黄标签-->
<xsl:attribute name="title"><xsl:value-of select="@Text" /></xsl:attribute>
<a>
<xsl:choose>
<xsl:when test="@URL">
<xsl:attribute name="class">go</xsl:attribute>
<!--目标-->
<xsl:choose>
<xsl:when test="@Target"><xsl:attribute name="target"><xsl:value-of select="@Target" /></xsl:attribute></xsl:when>
<!--默认开新窗口--><xsl:otherwise><xsl:attribute name="target">_blank</xsl:attribute></xsl:otherwise>
</xsl:choose>
<!--地址-->
<xsl:attribute name="Href"><xsl:value-of select="@URL"/></xsl:attribute>
</xsl:when>
<xsl:otherwise>
<xsl:attribute name="class">loseURL</xsl:attribute>
<xsl:attribute name="onclick">Expand(this.parentNode.previousSibling);return false;</xsl:attribute>
</xsl:otherwise>
</xsl:choose>
<!--正文-->
<xsl:value-of select="@Text"/>
</a>
</span>
<!--处理递归-->
<xsl:if test="count(Tree)>0">
<!--子节点们都在一个层中-->
<div>
<!--该层的显示与否取决于当前tree节点的Expanded属性(静态设置)-->
<xsl:choose>
<xsl:when test="@Expanded">
<xsl:choose>
<xsl:when test="@Expanded[.='true']"><xsl:attribute name="class">shown</xsl:attribute></xsl:when>
<xsl:otherwise><xsl:attribute name="class">hide</xsl:attribute></xsl:otherwise>
</xsl:choose>
</xsl:when>
<!--默认隐藏(与控制点外观一致)-->
<xsl:otherwise><xsl:attribute name="class">hide</xsl:attribute></xsl:otherwise>
</xsl:choose>
<!--无条件递归!因为select不到Tree就静悄悄了-->
<xsl:apply-templates select="Tree"></xsl:apply-templates>
</div>
</xsl:if>
</div>
</xsl:template>
</xsl:stylesheet>
``````````````````````````````````````````````````````````
``````````````````````````````````````````````````````````
``````````````````````````````````````````````````````````
借鉴了msdn的deeptree以及宝玉的一个成品,另外加了很多注释。
作者: civ3 发布时间: 2005-07-07
好样的,顶你
作者: vfphome 发布时间: 2005-07-08
有演示就好了~~
作者: 呆呆虫 发布时间: 2005-07-14
谢谢! 学习!
作者: hnwxg 发布时间: 2005-07-23
HTC 做数据绑定
可以适当用XSL做一些XML的转换
用XSL我认为是因为速度
我比较注重效果所以我用HTC做每个控件的数据绑定,但经测试较XSL和JS要慢一些
不过速度是可以接受的
可以适当用XSL做一些XML的转换
用XSL我认为是因为速度
我比较注重效果所以我用HTC做每个控件的数据绑定,但经测试较XSL和JS要慢一些
不过速度是可以接受的
作者: tester_test 发布时间: 2005-07-25
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28