最近做的项目的框架是xml传递_
前台纯js 后台spring2.0 hibernate3_ 貌似还有jsf,因为是2次开发,加了很多东西jsf我只是调试了一下,剩下的就写
js和后台java代码了——在看jsf时候很新颖。不过看着看着就烦了。jsf的页面设计也和后台弄到一起了。而且前台也不好
弄,相当的麻烦~ 我服了,不提jsf了(上对jsf是我个人的意见~)。 后来我们都弄jsp了(反正是异步的~_~)
说传递数据把。都是xml格式的 页面用了js控制xsl解析xml , js怎么创建XMLHttpRequest就不说了。怎么用js调用xsl
解析xml那
1 比如一个方法访问后台返回数据是xml
//service是后台封装的一个js类,这个就是读到xsl。(就是用创建的XMLHttpRequest.load出来的)
var xslDoc=service.getFile("../xsl/tasklist.xsl");
function callback(nd)
{
try{
var strHtml=nd.transformNode(xslDoc); //此方法就是用xsl读取xml----transformNode方法哦
//strHtml 这就是解析的html,得到这个xml就innerHTML到html标签里面就好了
}catch(e){}
}
我们来看段xsl
<?xml version="1.0" encoding="GB2312"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" encoding="gb2312"/><!--这个很重要哦 表示输出的是html-->
<xsl:template match="/">
<xsl:for-each select="//subData">
<div id="subData1">
<table id="subTable" name="subTable" width="90%"
bgcolor="#F2F6FF" cellspacing="1" cellpadding="3" align="center"
border="0" style="border: 1px solid #92A8D1;">
<tr>
<td style="text-align:left">
网站域名:
<input id="domainname" name="domainname"
type="text" class="INPUT" value="{@domain}" size="30" />
IP 地址:
<input name="ipaddr" type="text"
class="INPUT" value="{@ipaddr}" size="15" />
服务器托管地点:
<input name="realAddr" type="text"
class="INPUT" value="{@realAddr}" size="30" />
<div>( 例如: http://www.sohu.com )</div>
</td>
</tr>
<tr>
<td style="text-align:left">
网站域名所有者:
<input name="owner" value="{@owner}" type="text"
class="INPUT" size="30" />
中文网名:
<input name="chineseName" value="{@chineseName}" type="text"
class="INPUT" size="30" />
关键字:
<input name="keyWord" value="{@keyWord}" type="text"
class="INPUT" size="30" />
</td>
</tr>
<tr>
<td style="text-align:left">
关键词类型:
<select id="mcname" name="mcname" style="z-index:0;">
<xsl:value-of select="@mcname" />
</select>
网站类型:
<select id="webtype" name="webtype"
style="z-index:0;">
<xsl:value-of select="@webtype" />
</select>
<a
title="隐藏" href="javascript:;"
onclick="javascript:hide(this.parentNode.parentNode.parentNode.parentNode);">
隐藏
</a>
<a title="删除"
href="javascript:;"
onclick="javascript:hideDelete(this.parentNode.parentNode.parentNode.parentNode);">
删除
</a>
</td>
</tr>
</table>
</div>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
到了Xpath 了
xsl里解析时候
//id 找到元素名字为id的
/id 从根元素找
. 标识当前节点
.. 标识上层节点
//id/@name 标识找到元素名字为id的name的属性 <id name="111"/>
//Data[@name=\"taskinfo\"]/SubData[@name=\"worktime\"]/@value 这个找到的是下面的123
<Data name="taskinfo">
<SubData name="worktime" value="123"/>
<SubData name="other" value="567"/>
</Data>
<xsl:for-each>
<xsl:value-of select="position()"/> <!--循环的次数。。-->
</xsl:for-each>