對於XML,xsl最關鍵的問題是:tag符的匹配問題。
對於xsl的顯示:必須是一個父節點下,幾個平等的子節點。當子節點們在同一父節點下多次出現的,這時要考慮增加一層相同的節點,並且在把原來的節點按成對出現或獨自出現的原則放到該層節點之下。
對於xsl支持XPath層次結構,對於用xsl來顯示XML文檔,就要根據它來"爬樹".(記住:首/為根,單/為層,//為樹(//代表整個文檔,.//以當前節點為根), ..為父,@為屬性,首串為子) 當然還可以通過<xsl:apply-templates select="">,<xsl:template match="">來實現節點之間的顯示轉換;而且template還可以級聯向下調用.當需要進行排序的時候,<xsl:for-each select="./dk" order-by="chua/jfdjf">...</for-each>這是升序排序,當需要降序排序的時候,在order-by的值前加-即可,即<xsl:for-each select="./dk" order-by="-chua/zi">...</for-each>
當在Javascript中利用XML和xsl進行頁面,顯示時,要注意兩個問題:
1.Javascript頁面緩存,可能會影響到頁面的顯示。可以通屏蔽JS的方式,而是連接到一個由JSP/servlet的生成.JS文件(並response.setheader("cache-control","on-cache")等.然後在主頁面中用Javascript連接到該Javascript文件。
即:<script src='sript.JSp' type="JSP/JavaScript"/>即可。
2.對於使用服務器生成或存在的XML或xsl文件或字符串來顯示頁面時。必須指定這些文件或字符串讀取和分析的方式為: doc.async=false;//不許異步的讀取數據
doc.validateOnParse=false;//不分析有效性
否則會出現在Javascript中出現:'完成該操作所需的數據還不可使用'的頁面錯誤。
用XMLhttp請求時,用.send(doc)方法。例
var xmlhttp=new ActiveXObject("Msxml2.XMLHTTP");
XMLhttp.open("post","http://59.64.71.16:7001/MagazineResearchStageWeb/MagazineInfoResearch.JSP",false);
XMLhttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
XMLhttp.setRequestHeader("Content-Length",root.length);
XMLhttp.send(root); alert(root);
document.write(XMLhttp.responseText);
注意:不要用.sendXML方法,不支持。而且.send()既可以是XML文檔對象,也可以是字符串。在非框架內的Html頁面使用XMLHTTP技術發送xml時可能會出錯的,需要調低安全等級才能使用,這是因為xmlhttp的一些比較強的功能,威脅到機器的安全。像以前的msxml就支持訪問本地文件系統上提交的XML文檔,並上發送到服務器。現在就不行。這些只能說明客戶端的處理功能越強,安全性就越低。這也是出現客戶安全認證簽名的原因之一!