dom|javascript|xml
对于XSL而言,xml节点下的内容只要是配对的<>和</>不影响xml文档的显示的,这些都会被省略,没有任何样式意义(即使是html中的tag)。
对于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文档,并上发送到服务器。现在就不行。这些只能说明客户端的处理功能越强,安全性就越低。这也是出现客户安全认证签名的原因之一!