解析XSL JavaScript+XMLDOM的使用_Xml教程
推薦:解析xml的處理以及其他dom和SAX使兩種主流的選擇,還有JDOM,DOM4J做的不錯。 DOM解析器把XML文檔轉(zhuǎn)化為一個包含其內(nèi)容的樹,并可以對樹進行遍歷。用DOM解析模型的優(yōu)點是編程容易,開發(fā)人員只需要調(diào)用建樹的指令,然后利用navigation APIs訪問所需的樹節(jié)點來完成任務�?梢院苋菀椎�
對于XSL而言,xml節(jié)點下的內(nèi)容只要是配對的<>和</>不影響xml文檔的顯示的,這些都會被省略,沒有任何樣式意義(即使是html中的tag)。對于xml,xsl最關鍵的問題是:tag符的匹配問題。
對于xsl的顯示:必須是一個父節(jié)點下,幾個平等的子節(jié)點。當子節(jié)點們在同一父節(jié)點下多次出現(xiàn)的,這時要考慮增加一層相同的節(jié)點,并且在把原來的節(jié)點按成對出現(xiàn)或獨自出現(xiàn)的原則放到該層節(jié)點之下。
對于xsl支持xpath層次結構,對于用xsl來顯示xml文檔,就要根據(jù)它來"爬樹".(記�。菏�/為根,單/為層,//為樹(//代表整個文檔,.//以當前節(jié)點為根), ..為父,@為屬性,首串為子) 當然還可以通過<xsl:apply-templates select="">,<xsl:template match="">來實現(xiàn)節(jié)點之間的顯示轉(zhuǎn)換;而且template還可以級聯(lián)向下調(diào)用.當需要進行排序的時候,<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頁面緩存,可能會影響到頁面的顯示�?梢酝ㄆ帘蝚s的方式,而是連接到一個由jsp/servlet的生成.js文件(并response.setheader("cache-control","on-cache")等.然后在主頁面中用javascript連接到該javascript文件。
即:<script src='sript.jsp' type="jsp/JavaScript"/>即可。
2.對于使用服務器生成或存在的xml或xsl文件或字符串來顯示頁面時。必須指定這些文件或字符串讀取和分析的方式為: doc.async=false;//不許異步的讀取數(shù)據(jù)
doc.validateOnParse=false;//不分析有效性
否則會出現(xiàn)在javascript中出現(xiàn):'完成該操作所需的數(shù)據(jù)還不可使用'的頁面錯誤。
用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文檔對象,也可以是字符串。在非框架內(nèi)的html頁面使用XMLHTTP技術發(fā)送xml時可能會出錯的,需要調(diào)低安全等級才能使用,這是因為xmlhttp的一些比較強的功能,威脅到機器的安全。像以前的msxml就支持訪問本地文件系統(tǒng)上提交的xml文檔,并上發(fā)送到服務器�,F(xiàn)在就不行。這些只能說明客戶端的處理功能越強,安全性就越低。這也是出現(xiàn)客戶安全認證簽名的原因之一!
分享:淺析JavaScript與XML XSL的綜合使用1.當用xsl來顯示xml內(nèi)容時,要注意在借助xsl文檔來定義樣式時: 在html文檔中有 head base href= http://127.0.0.1:7001/MagazineResearchStageWeb/ 就意味著所引用的xsl等外部文檔必須在href目錄下。否則就不能引用到外部文檔。 2.通過new String來處理xm
- 相關鏈接:
- 教程說明:
Xml教程-解析XSL JavaScript+XMLDOM的使用
。