`
kiki1120
  • 浏览: 313833 次
  • 性别: Icon_minigender_2
  • 来自: 上海
社区版块
存档分类
最新评论

利用xml和xsl自动生成菜单

阅读更多

autoMakeMenus.xml

<?xml version="1.0" encoding="GB2312"?>
<TestMenus>
	<menuO id="01" name="中国移动总公司" phone=""  address="中国 北京" leader="" type="" create_date="" description="" parentid="">
    <menuOU id="001" name="四川移动分公司" phone=""  address="四川 成都" leader="" type="" create_date="" description="" parentid="">
      <menuOU id="0001" name="成都移动分公司" phone=""  address="" leader="" type="" create_date="" description="" parentid="">
        <menuOU id="00001" name="高新区分公司" phone="110476592"  address="" leader="" type="" create_date="" description="" parentid=""/>
        <menuOU id="00002" name="双流县分公司" phone="110476592"  address="" leader="" type="" create_date="" description="" parentid=""/>
      </menuOU>
		</menuOU>
  </menuO>
</TestMenus>

 

autoMakeMenus.xsl

<?xml version="1.0" encoding="GB2312" ?>
<xsl:stylesheet xmlns:xsl = "http://www.w3.org/1999/XSL/Transform" version = "1.0"> 
	
<xsl:template match="menuO">
		<img src="book.gif">
		<xsl:attribute name="onclick">OpenOrCloseSubTree(allDivSubTreeObj<xsl:value-of  select="@id"/>)</xsl:attribute>
		</img>
	
		<font color="green">
			<B><xsl:value-of  select="@name"/> </B>
		</font>
		
		<div  style="display:none">
			<xsl:attribute name="id">allDivSubTreeObj<xsl:value-of  select="@id"/></xsl:attribute>
			<xsl:apply-templates select="menuOU">
			  <xsl:with-param name = "A" >1</xsl:with-param> 
			  <xsl:with-param name = "B" ><xsl:value-of  select="@id"/></xsl:with-param> 
			</xsl:apply-templates >
		</div>
		<p/>
</xsl:template>

<xsl:template  match="WstOU"> 
		<xsl:param name = "A" /> 
		<xsl:param name = "B" /> 

	<table border="0" width="176" height="26">
		<tr> 
			<td height="20" width="15" valign ="top">
				<img src="book.gif">
					<xsl:attribute name="onclick">OpenOrCloseSubTree(subTreeDiv<xsl:value-of  select="@id"/>)</xsl:attribute>
				</img>
			</td>
			
			<td height="20" width="145" valign ="top"  >
					<input type="checkbox">
						<xsl:attribute name="value"><xsl:value-of  select="@id"/> 
						</xsl:attribute>
						<xsl:attribute name="id">CHECKOBJ<xsl:value-of select = "$B" /><xsl:value-of select = "$A" />
						</xsl:attribute>
						<xsl:attribute name="onclick">clickNode("<xsl:value-of select = "$B" />","<xsl:value-of select = "$A" />")</xsl:attribute>
					</input>
					
					<input type="hidden">
							<xsl:attribute name="id">CHECKTXT<xsl:value-of select = "$B" /><xsl:value-of select = "$A" /></xsl:attribute>
							<xsl:attribute name="value"><xsl:value-of  select="@name" />
							</xsl:attribute>
					</input>
					
			 		<xsl:value-of  select="@name" /> 
			 		<div style="display">
						<xsl:attribute name="id">subTreeDiv<xsl:value-of  select="@id"/> 
						</xsl:attribute>
			 		
            <xsl:apply-templates select="WstOU">
              <xsl:with-param name = "A" select="$A+1" />
              <xsl:with-param name = "B" select="$B"/>
            </xsl:apply-templates >  
					</div>
			 </td>
		</tr>
	</table>
</xsl:template>

</xsl:stylesheet>  

 

index.htm

<HTML>
<HEAD>
<script>

function init() {
		var xslDoc
		xmlDoc = loadDOM("autoMakeMenus.xml");
		xslDoc = loadDOM("autoMakeMenus.xsl");
		try{
			folderTree.innerHTML = xmlDoc.documentElement.transformNode(xslDoc);
			alert(folderTree.innerHTML);
		}catch (e)
		{
			alert(e.description);
		}
}

function loadDOM(file) {
   var dom;
   try {
     dom = makeDOM(null);
     dom.load(file);
   } catch (e) {
     alert(e.description);
   }
   return dom;
}

function makeDOM(progID) {
  if (progID == null) {
    progID = "msxml2.DOMDocument.4.0";
  }

  var dom;
  try {
    dom = new ActiveXObject(progID);
    dom.async = false;
    dom.validateOnParse = false;
    dom.resolveExternals = false;
  }catch (e) {
    alert(e.description);
  }
  return dom;
}

var strAllOUNames="";

function clickNode(OID,OuID) {
	var i=0;
	var obj;
	var objname;
	var PathCount=OuID;
	strAllOUNames="";
	
	for(i=PathCount+1;i<5000;i++) {
		objname="CHECKOBJ"+OID+i;
		try{
			obj=document.all(objname);
			if(obj==null)
				break;
			obj.checked=false;
		}catch(e){
			break;
		}
	}
	
	for(i=1;i<PathCount;i++) {
		objname="CHECKOBJ"+OID+i;
		obj=document.all(objname);
		obj.checked=true;
		objname="CHECKTXT"+OID+i;
		obj=document.all(objname);
		strAllOUNames+=obj.value;
		strAllOUNames+="/";
	}
	
	objname="CHECKOBJ"+OID+OuID;
	obj=document.all(objname);
	if(obj.checked==true) {
		objname="CHECKTXT"+OID+OuID;
		obj=document.all(objname);
		strAllOUNames+=obj.value;
		strAllOUNames+="/";
	}
}

function OpenOrCloseSubTree(targetelement) {
	if (targetelement.style.display=="none")
	    targetelement.style.display='';
	else
	    targetelement.style.display="none";
}

function OnOKButSet() {
	if(strAllOUNames=="") {
		alert("请选择公司");
		return ;
	}
	alert(strAllOUNames);
	window.returnValue=strAllOUNames;
	close();
}

function OnCloseWindow() {
	close();
}
	
</script>
</HEAD>
<BODY ONLOAD="init()" >
<table border="0" >
	<tr>
		<td >
			<DIV id="folderTree" STYLE="PADDING-TOP: 8px">
				<input type="button" Value="确定" onclick="OnOKButSet()">
				<input type="button" Value="取消" onclick="OnCloseWindow()">
			</DIV>
	 	</td>
	</tr>
</table>
</BODY>
</html>

 

分享到:
评论

相关推荐

    一个利用xml和xsl解释生成无限级的树形菜单的源程序

    在这个名为"treemenu"的项目中,作者通过结合XML和XSL,实现了动态生成无限级树形菜单的功能,这对于构建复杂的网站导航系统尤其有用。下面我们将深入探讨这些技术以及它们如何协同工作。 XML是一种标记语言,其...

    XML+XSL树形菜单

    这是一个用XML+XSL生成一个灵活的树形菜单。其中用li和ul嵌套进行菜单的展示,用js控制子菜单的隐藏和显示,css来控制样式,xml文件用来存放菜单的内容。如果要生成多级菜单可以修改xml文件,将item节点下的name改为所...

    xsl递归解晰xml

    在IT行业中,XML(eXtensible Markup Language)是一种用于存储和传输数据的标记语言,而XSL(Extensible Stylesheet Language)则是用于转换XML文档的样式表语言。本篇文章将深入探讨“xsl递归解析xml”的概念,...

    无限层级菜单xml实现

    在这个场景下,"无限层级菜单xml实现" 提供了一个利用XML来存储和组织菜单数据的方法。下面将详细解释这一技术方案。 1. **XML(Extensible Markup Language)**: XML是一种标记语言,用于存储和传输结构化数据。...

    XML实现动态菜单功能

    在本场景中,XML被用来实现动态菜单功能,这是一个常见的网页开发技术,旨在提高用户体验,使用户界面更加直观和易用。动态菜单通常会根据用户的行为、权限或者特定条件进行实时更新。 在XML中,我们可以通过定义一...

    xslt + xml 动态菜单

    本实例将探讨如何利用XSLT(Extensible Stylesheet Language Transformations)和XML(Extensible Markup Language)来创建一个动态菜单。XSLT是一种样式表语言,专门用于转换XML文档,而XML则是一种用于存储数据的...

    无限菜单之 xml+popup 版(IE5.5+)

    Popup窗口制作的菜单比起传统的div(层)实现的菜单有着得天独厚的优势,不仅效果会非常好,而且代码也会是非常少的,只是对于实现起来却有几个需要解决的棘手问题:多个Popup共存的问题、如何递归生成菜单、如何控制...

    使用xslt转化xml数据形成word文档导出

    虽然相比使用Microsoft.Office.Interop.Word组件,XSLT可能需要更多前期的模板和样式工作,但它提供了更好的可扩展性和自动化能力。在处理大量文档生成或自动化流程时,这种技术可以极大地提高效率和可靠性。

    用XML和XSLT进行高级的 Web UI设计

    在本主题“用XML和XSLT进行高级的Web UI设计”中,我们将深入探讨如何利用这两种技术来实现目录树的上下文菜单功能,包括节点元素的添加、修改、改名和删除操作。 1. **XML数据结构**:首先,我们需要建立一个XML...

    Xml Formatter

    Xml Formatter 是一个专门用于格式化XML文档的工具,它在.NET框架下运行,旨在帮助开发者更方便地管理和查看XML文件。XML(可扩展标记语言)是互联网上数据交换的常用格式,由于其结构化特性,有时XML文件可能会变得...

    Xml2Form.zip_Xml2Form

    它可能包含了处理XML文件读取、XSL转换和HTML表单生成的代码。 2. `Default.aspx`:通常作为应用程序的首页,它可能引导用户上传XML文件或提供其他交互方式。 3. `Results.aspx` 和 `View.aspx`:这两个页面可能是...

    xml_caidan.rar_XML asp

    在ASP中,XML可能被用来定义菜单结构和数据,然后通过ASP解析XML文件,动态生成网页上的菜单。这种方式使得菜单的维护和扩展变得更加方便,因为菜单数据和展示逻辑被分离了。 在XML与ASP的结合使用中,通常涉及以下...

    .net中使用xsl文件作为导航菜单的小例子

    在.NET开发中,使用XSL(Extensible Stylesheet Language)文件作为导航菜单是一种常见的方法,尤其是在构建动态网页时。...这种方法尤其适用于那些需要根据用户角色、权限或业务需求动态生成菜单的复杂Web应用。

    jmeter-results-report.xsl 2个

    XSL是一种样式表语言,用于转换XML文档的结构和格式。在这种情况下,它将JMeter的原始XML结果文件转换为HTML,使测试结果更加直观易读。可能包含的详细信息有:请求响应时间、吞吐量、错误率、并发用户数等关键性能...

    XML高级编程pdf-15

    改进方案利用XML和XSL技术,在客户端处理数据的动态重排和显示,显著减少了服务器负载和网络传输量。 #### 实现步骤概述 1. **ASP生成XML流**:从SQL Server读取数据,将其转换为XML格式,便于进一步的处理和传输...

    XML高级编程pdf

    14.3.10 任务和菜单 14.3.11 客户端模板 14.3.12 表单数据 14.3.13 图像 14.4 在服务器上生成WML 14.5 WROX的WML应用 14.6 WML脚本 14.6.1 基本概念 14.6.2 字节码 14.6.3 如何从WML上调用脚本函数 14.7 ...

    XML 高级编程(高清版)

    14.3.10 任务和菜单 14.3.11 客户端模板 14.3.12 表单数据 14.3.13 图像 14.4 在服务器上生成WML 14.5 WROX的WML应用 14.6 WML脚本 14.6.1 基本概念 14.6.2 字节码 14.6.3 如何从WML上调用脚本函数 14.7 ...

    学习Excel VBA与XML、ASP协同应用

    - **宏的一般应用**:包括数据录入、数据处理和自动化报告制作等。 - **计划宏**:在编写宏之前,需要对任务进行规划,包括确定宏的目标、步骤和预期结果。 - **录制宏**:Excel提供了宏录制功能,可以将用户的操作...

    XML高级编程 (Extensible Markup Language)

    14.3.10 任务和菜单 14.3.11 客户端模板 14.3.12 表单数据 14.3.13 图像 14.4 在服务器上生成WML 14.5 WROX的WML应用 14.6 WML脚本 14.6.1 基本概念 14.6.2 字节码 14.6.3 如何从WML上调用脚本函数 14.7 ...

Global site tag (gtag.js) - Google Analytics