對于xml,xsl最關(guān)鍵的問題是:tag符的匹配問題。
對于xsl的顯示:必須是一個父節(jié)點(diǎn)下,幾個平等的子節(jié)點(diǎn)。當(dāng)子節(jié)點(diǎn)們在同一父節(jié)點(diǎn)下多次出現(xiàn)的,這時要考慮增加一層相同的節(jié)點(diǎn),并且在把原來的節(jié)點(diǎn)按成對出現(xiàn)或獨(dú)自出現(xiàn)的原則放到該層節(jié)點(diǎn)之下。
對于xsl支持xpath層次結(jié)構(gòu),對于用xsl來顯示xml文檔,就要根據(jù)它來"爬樹".(記住:首/為根,單/為層,//為樹(//代表整個文檔,.//以當(dāng)前節(jié)點(diǎn)為根), ..為父,@為屬性,首串為子) 當(dāng)然還可以通過<xsl:apply-templates select="">,<xsl:template match="">來實(shí)現(xiàn)節(jié)點(diǎn)之間的顯示轉(zhuǎn)換;而且template還可以級聯(lián)向下調(diào)用.當(dāng)需要進(jìn)行排序的時候,<xsl:for-each select="./dk" order-by="chua/jfdjf">...</for-each>這是升序排序,當(dāng)需要降序排序的時候,在order-by的值前加-即可,即<xsl:for-each select="./dk" order-by="-chua/zi">...</for-each>
當(dāng)在javascript中利用xml和xsl進(jìn)行頁面,顯示時,要注意兩個問題:
1.javascript頁面緩存,可能會影響到頁面的顯示。可以通屏蔽js的方式,而是連接到一個由jsp/servlet的生成.js文件(并response.setheader("cache-control","on-cache")等.然后在主頁面中用javascript連接到該javascript文件。
即:<script src='sript.jsp' type="jsp/JavaScript"/>即可。
2.對于使用服務(wù)器生成或存在的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技術(shù)發(fā)送xml時可能會出錯的,需要調(diào)低安全等級才能使用,這是因?yàn)閤mlhttp的一些比較強(qiáng)的功能,威脅到機(jī)器的安全。像以前的msxml就支持訪問本地文件系統(tǒng)上提交的xml文檔,并上發(fā)送到服務(wù)器。現(xiàn)在就不行。這些只能說明客戶端的處理功能越強(qiáng),安全性就越低。這也是出現(xiàn)客戶安全認(rèn)證簽名的原因之一!
新聞熱點(diǎn)
疑難解答
圖片精選