一个数据库+xsl实现的完整的无级折叠的例子

深入理解Access 2007的XML与XSL技术 本文深入探讨了Access 2007中XML和XSL技术的应用,包括XML的结构、XML模式文件(XSD)的定义和作用,以及XSL样式表文档的创建和使用。通过实例分析,我们将了解如何利用这些技术来实现数据的导出、格式化以及展示。 阅读详情
String Sql="declare @t table(id int,pid int ,name varchar(20))insert @t select 1 ,0,'a'union all select 2,1,'a1'union all select 3,2,'a11'union all select 4,1,'a2'union all select 5,0,'b'SELECT  1 as Tag, NULL as Parent,id as [item!1!id],pid as [item!1!pid],    name as [item!1!name]FROM @t     FOR XML EXPLICIT";
            String XmlStr="";

            SqlConnection cn=new SqlConnection("server=127.0.0.1;uid=sa;pwd=xxx;database=test");
            cn.Open();
            SqlCommand cmd=new SqlCommand(Sql,cn);
            SqlDataReader dr = cmd.ExecuteReader();
            if(dr.Read())
            {
                XmlStr+="<root>" + dr.GetString(0) + "</root>";
            }
            XmlDocument xd=new XmlDocument();
            xd.LoadXml(XmlStr);
            dr.Close();
            cn.Close();
            Xml1.Document=xd;
            xd=null;



页面上使用一个 Xml控件,ID为Xml1.
指定TransformSource属性为下面这个xsl文件路径:
test.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="//root/item[@pid=0]"/> 
</html> 
</xsl:template> 
<xsl:template match="//item"> 
<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(//root/item[@pid=$id]) &gt; 0">
<span style="cursor:hand" onclick="this.innerHTML=='+'?this.innerHTML='-':this.innerHTML='+';">+</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="//root/item[@pid=$id]"/> 
</div> 
</xsl:template> 
</xsl:transform>

思路:
根具
1 id pid name这样的无级分类表结构
2 利用 for xml子句生成xml文档.
3 编写通用针对这样表结构的XSL文件,对xml文档进行样式转换. 当字段名,表名不同时,只需更改sql语句中字段名.
当表结构定义略有不同时,比如 
id为 0001 子id 为 00010001 ,00010002 即这种带路径的设计,或
id 为 1, path为 1 子id 为 3, path 为 1,3 再下级为 4, path 为 1,3,4 这种带路径的设计,只需稍改sql查询或xsl查询.

当然,在第二步,可以不用for xml子句生成xml文档,自己也可以在应用程序前台利用记录集循环得生成xml文档.


原表定义如下:
declare @t table(id int,pid int ,name varchar(20))
insert @t select 1 ,0,'a'
union all select 2,1,'a1'
union all select 3,2,'a11'
union all select 4,1,'a2'
union all select 5,0,'b'

SELECT   1 as Tag,
     NULL as Parent,
     id as [item!1!id],
     pid as [item!1!pid],
     name as [item!1!name]
    FROM @t     
    FOR XML EXPLICIT

例子利用了xml控件来执行样式转换,实际上你也可以利用XslTransform类来执行此操作.
2006.11
 
从Access导出XML数据的步骤与技巧 本章介绍了如何从Microsoft Access数据库导出数据到XML格式,并详细解释了导出过程中的ReportML文件及其作用。同时,说明了在导出过程中如何生成XSD和XSL文件以用于数据验证和展示。此外,本章还包含了实际操作的示例,帮助用户更好地理解导出XML的步骤,并通过动手实践加深理解。 阅读详情

相关推荐

浅析ArcGis中的软件——ArcMap、ArcScene、 ArcGlobe、ArcCatalog

ArcMap:是集空间数据显示、矢量数据编辑、冲突数据检查(拓扑检查)、查询检索(地理编码)、统计(字段属性表)、报表生成、空间分析(ArcGIS Spatial Analyst)和高级制图(制图表达)等众多功能干一体的桌面应用平台软件。而且提供所见即所得的符号编辑器,令用户可以随心所欲地生成任意复杂的点、线、面符号。所支持的空间数据格式包括Arclnfo coverages、ESRI shapefiles、ArcSDE lavers、DXF、DWG、DGN、常见的图像格式、GRIDs、TINs等。

lxlmycsdnfree的博客 6563

XML通过XSL格式化的那点事(XML到自定义节点折叠显示)

引言 有时我们想看下系统生成的XML文件(如XML格式的Project文件),如果文件结构简单,我们浏览器看起来还比较方便,但是随着XML schema复杂后就变得让人头疼啦,单独写一个程序去做展现又有点小题大做。这时XSL就用体现它的价值啦,当然XSL不只是为了显示,更多的目的是从一个格式生成另个一格式的XML或者其他格式的文件。本文只说说格式化。 过程中遇到的问题解决方法 参看XL...

weixin_30339969的博客 288

s9keaz128 UART Bootloader 单片机篇(上)

网络上充斥着各种各样的串口升级方案,基本都是基于Y-Mode协议下载。采用这种升级方案学习还是可以,用在产品上还是有点欠缺。如下载完成后,需要把时间发送到设备就不好搞了。如下这个设备返回的信息,最后一项就是固件更新时间。固件名称: KEA128编译时间固件版本: 1.0.3硬件版本: 1.0.3产品序列号功能名称: App固件更新时间串口升级演示视频。

一人科技 1795

从build.xml到精美报告:深度解析JMeter与Ant集成及自定义XSL报告模板实战

本文深入解析了JMeter与Ant集成的自动化测试实践,重点介绍了build.xml的关键配置和自定义XSL报告模板开发。通过jmeter-results-detail-report_30.xsl等模板的定制技巧,帮助测试工程师生成更专业、直观的性能测试报告,提升测试效率和报告质量。

347

国密系列算法简介

众所周知,为了保障商用密码的安全性,国家商用密码管理办公室制定了一系列密码标准,包括SM1(SCB2)、SM2、SM3、SM4、SM7、SM9、祖冲之密码算法(ZUC)那等等。其中SM1、SM4、SM7、祖冲之密码(ZUC)是对称算法;SM2、SM9是非对称算法;SM3是哈希算法。目前,这些算法已广泛应用于各个领域中,期待有一天会有采用国密算法的区块链应用出现。其中SM1、SM7算法不公开,调用该...

HardessGod的博客 5774

图神经网络实战(2)——图论基础

图论 (Graph theory) 是数学的一个基本分支,涉及对图研究。图是复杂数据结构的可视化表示,有助于理解不同实体之间的关系。图论提供了大量建模和分析现实问题的工具,如交通系统、社交网络和互联网等。在本节中,将介绍图论的基本原理,主要涉及三个方面:图属性、图概念和图算法。

盼小辉丶的博客 1万+

用java造数据的步骤,用Java实现可保存状态的数据库生成XML树,最后一个源码(12),新手高手都看看吧,也不枉我一片苦心啊!-JSP教程,Java与XML...

6.3.3.xsl源码1.treefunc.xsl#foldheader{cursor:hand ;list-style-image:url(/images/fold.gif);padding-left-width:-3}#foldinglist{list-style-image:url(/images/list.gif);list-left-width:-3}a:link{color: #051...

weixin_30562977的博客 153

Dify 第 13 篇 Dify 工作流 详解

工作流通过将复杂任务分解为节点降低复杂度,提升LLM应用的性能和稳定性。Dify工作流分为两类:Chatflow面向对话场景(如客服),支持多轮对话;Workflow面向批处理场景(如翻译),提供逻辑节点实现自动化。核心概念包括节点、变量(系统/会话/环境变量)及应用类型差异:Chatflow支持中间输出和对话历史,Workflow仅支持结束节点输出。系统变量以"sys"开头,用于全局数据传递,不同应用类型变量不同,如Chatflow的sys.query存储用户输入,Workflow的s

甘蓝的专栏 3245

javaWeb完整项目

JavaWeb,是用Java技术来解决相关web互联网领域的技术总和。web包括:web服务器和web客户端两部分。Java在客户端的应用有java applet不过现在使用的很少,Java在服务器端的应用非常的丰富,比如Servlet,JSP和第三方框架等等。Java技术对Web领域的发展注入了强大的动力。

weixin_70320260的博客 6598

51单片机8×8LED点阵屏动态显示取模汉字+ Proteus仿真

51单片机8×8LED点阵屏动态显示取模汉字+ Proteus仿真 Proteus仿真 取模软件:pctolcd2002 程序代码 #include<reg52.h> unsigned char code taba[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};//行选 unsigned char code tabb[]={0x08,0x49,0x49,0x7F,0x08,0x49,0x49,0x7F};//选列"出" unsigned cha

perseverance51博客 8055

DataCastle-租金预测

ID:编号;时间:房屋信息采集的时间;小区名:房屋所在小区,已脱敏处理;小区房屋出租数量:小区出租房屋数量,已脱敏处理;楼层:0、1、2分别表示楼层低,中,高;总层数:房屋所在建筑的总楼层数,已脱敏处理;房屋面积:房屋面积数值,已脱敏处理;房屋朝向:房屋的朝向;居住状态:房屋的居住状态,表示是否已出租或居住中,已脱敏处理;卧室数量:户型信息,数字表示卧室的个数;卫的数量:户型信息,数字表示卫生间的个数;厅的数量:户型信息,数字表示厅的个数;

优快云 精品推荐 3457

java抽象类例子月薪年薪程序_Java薪资水平怎么样?求职的时候应该怎么谈薪资?...

该楼层疑似违规已被系统折叠隐藏此楼查看此楼第二阶段需要学习的内容也不少,但是一定要建立在第一阶段的基础知识打的非常牢固的基础之上。第二阶段主要是学习Javaweb开发 。之前我们的印象就是,Java主要是做后台的,不需要学习前端的内容,这种观念是比较狭隘的。随着移动互联网发展的越来越迅速,移动端用户也越来愈多,Java工程师的要求也越来越高,不仅要熟知后端,对前端相关内容也需要有了解,这个阶段主...

weixin_29054523的博客 109

Unity 工具 之 SoftMask软遮罩 实现 UI 边缘渐变过渡的简单使用介绍

目录Unity 工具 之 SoftMask软遮罩 实现 UI 边缘渐变过渡的简单使用介绍一、简单介绍二、Mask 实现的遮罩效果三、Soft Mask 实现遮罩效果四、 Soft Mask 的一些设置五、插件下载Unity 工具类,自己整理的一些游戏开发可能用到的模块,单独独立使用,方便游戏开发。

仙魁XAN 8573

如何用XMLView轻松驾驭复杂XML文档:免费浏览器的终极解决方案

XMLView是一款专为开发者和数据分析师设计的强大XML文档查看工具,它让处理XML文件变得像浏览网页一样简单直观。无论你是需要调试配置文件、分析数据导出,还是查看复杂的XML结构,XMLView都能提供无缝的浏览器端体验,完全免费开源! ## 🌟 告别XML阅读困境:为什么你需要这款工具 想象一下,当你打开一个数百行的XML配置文件时,面对层层嵌套的标签和属性,是不是感到头晕眼花?传统的

gitblog_00307的博客 233

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

VC++中利用MSXML解析XML文档

一、 XML 简介   XML(Xtensible Markup Language,即扩展标记语言)的发展起源于1996年。当时,出版界巨头和Web业内人士经过共同讨论,提出了创建SGML(Standard Generalized Markup Language,即标准通用标识语言)子集(HML)的建议。该子集专用于Web,具有可扩展(或可扩充)性,并且能利用结构化标记语言的所有高级功 能,但摒弃

Chinawash 专栏 1028

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

java开发常见单词

持续更新中。。。 AJAX Asynchronous JavaScript and XML(异步的 JavaScript 和 XML)。 DOM 文本对象模型 Document Object Model  JDK  Java开发工具包 Java Developer's Kit JRE Java运行环境 Java Runtime Environment IDE 集成开发环境 integra

不忘初心的博客 1677

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

VC++中利用MSXML解析XML、使用DOM写XML文档

CoInitialize(NULL); // 初始化COM。 CComPtr<IXMLDOMDocument> spXMLDOM; // 创建解析器实例。 HRESULT hr = spXMLDOM.CoCreateInstance (__uuidof(DOMDocument)); VARIANT_BOOL bSuccess = false; // 装载XML文档。 hr = spXMLDOM->load(CComVariant(L"xmlfile.xml"), &..

thanklife的专栏 1959

java薪资水平_Java薪资水平怎么样?求职的时候应该怎么谈薪资?

该楼层疑似违规已被系统折叠隐藏此楼查看此楼第二阶段需要学习的内容也不少,但是一定要建立在第一阶段的基础知识打的非常牢固的基础之上。第二阶段主要是学习Javaweb开发 。之前我们的印象就是,Java主要是做后台的,不需要学习前端的内容,这种观念是比较狭隘的。随着移动互联网发展的越来越迅速,移动端用户也越来愈多,Java工程师的要求也越来越高,不仅要熟知后端,对前端相关内容也需要有了解,这个阶段主...

weixin_33443972的博客 181

Java薪资怎么谈_Java薪资水平怎么样?求职的时候应该怎么谈薪资?

该楼层疑似违规已被系统折叠隐藏此楼查看此楼第二阶段需要学习的内容也不少,但是一定要建立在第一阶段的基础知识打的非常牢固的基础之上。第二阶段主要是学习Javaweb开发 。之前我们的印象就是,Java主要是做后台的,不需要学习前端的内容,这种观念是比较狭隘的。随着移动互联网发展的越来越迅速,移动端用户也越来愈多,Java工程师的要求也越来越高,不仅要熟知后端,对前端相关内容也需要有了解,这个阶段主...

weixin_30119911的博客 116

java开发面试 谈薪资_Java薪资水平怎么样?求职的时候应该怎么谈薪资?

该楼层疑似违规已被系统折叠隐藏此楼查看此楼第二阶段需要学习的内容也不少,但是一定要建立在第一阶段的基础知识打的非常牢固的基础之上。第二阶段主要是学习Javaweb开发 。之前我们的印象就是,Java主要是做后台的,不需要学习前端的内容,这种观念是比较狭隘的。随着移动互联网发展的越来越迅速,移动端用户也越来愈多,Java工程师的要求也越来越高,不仅要熟知后端,对前端相关内容也需要有了解,这个阶段主...

weixin_33483080的博客 171
上一篇: 设计数据层组件并在层间传递数据
下一篇: SQL查询题解的典型应用
fcuandy
博客等级 码龄23年 780粉丝 32原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值