读书人

利用xml跟xsl自动生成菜单

发布时间: 2012-11-01 11:11:32 作者: rapoo

利用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 xslDocxmlDoc = 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 SOAP

热点推荐