xsl文件头中xmlns:xsl="http://www.w3.org/TR/WD-xsl"
动态生成一个xml文件,对应的xsl文件如下:
<?xml version="1.0" encoding="GB2312"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/TR/WD-xsl">
<xsl:template match="/">
<html>
<head>
<title>修改密码</title>
<xsl:element name="link">
<xsl:attribute name="rel">stylesheet</xsl:attribute>
<xsl:attribute name="type">text/css</xsl:attribute>
<xsl:attribute name="href"><xsl:value-of select='DIPS_USER_CHANGE_PASSWORD/@WEB_SIGN' />main.css</xsl:attribute>
</xsl:element>
<xsl:element name="SCRIPT">
<xsl:attribute name="LANGUAGE">javascript</xsl:attribute>
<xsl:attribute name="SRC"><xsl:value-of select='DIPS_USER_CHANGE_PASSWORD/@WEB_SIGN' />Public.js</xsl:attribute>
	
</xsl:element>
<SCRIPT language="javascript">
<![CDATA[
function Justify()
{
var e = document.ChangePass;
if(e.OLDPASSWORD.value.length ==0){
alert("请输入旧密码");
return false;
}
if(e.PASSWORD.value.length ==0){
alert("请输入新密码");
return false;
}
if(e.REPASSWORD.value.length ==0){
alert("请输入确认新密码");
return false;
}
if(e.PASSWORD.value != e.REPASSWORD.value){
alert("您两次输入的密码不同,请重新输入!");
return false;
}
return true;
}
document.onreadystatechange=InitPage;
function InitPage()
{
if (document.readyState=="complete"){
document.charset="gb2312";
}
}
]]></SCRIPT>
</head>
<body bgcolor="#F5F5F5" onselectstart="selectstart();" topmargin="20" style="cursor: default;">
<center>
<xsl:if test="DIPS_USER_CHANGE_PASSWORD/ERROR_INFO">
<b>错误:<xsl:value-of select='DIPS_USER_CHANGE_PASSWORD/ERROR_INFO' /></b><br />
</xsl:if>
<form method="POST" name="ChangePass">
<xsl:attribute name="action"><xsl:value-of select='DIPS_USER_CHANGE_PASSWORD/@BIN_SIGN' />UserAct.dll?UpdateUserPwd</xsl:attribute>
<xsl:choose>
<xsl:when test="DIPS_USER_CHANGE_PASSWORD/STEP[.= '1']">
<p>输入旧密码:<input type="password" name="OLDPASSWORD" size="20" maxlength="10" class="FLAT_INPUT_WHITE" /></p>
<p>输入新密码:<input type="password" name="PASSWORD" size="20" maxlength="10" class="FLAT_INPUT_WHITE" /></p>
<p>确认新密码:<input type="password" name="REPASSWORD" size="20" maxlength="10" class="FLAT_INPUT_WHITE" /></p>
</xsl:when>
<xsl:when test="DIPS_USER_CHANGE_PASSWORD/STEP[.= '2']">
您已经成功的修改了您的密码,密码将及时生效,谢谢您的使用!
<SCRIPT LANGUAGE="javascript">
window.setTimeout("window.close()",2000);
</SCRIPT>
</xsl:when>
</xsl:choose>
<xsl:choose>
<xsl:when test="DIPS_USER_CHANGE_PASSWORD/STEP[.!= '1']">
<p><input type="button" value=" 关 闭 " onclick="javascript:window.close();" /></p>
</xsl:when>
<xsl:otherwise>
<p><input type="submit" value=" 确 认 " onclick="return Justify();" /></p>
</xsl:otherwise>
</xsl:choose>
<input type="hidden" name="step">
<xsl:attribute name="value"><xsl:value-of select='DIPS_USER_CHANGE_PASSWORD/STEP' /></xsl:attribute>
</input>
</form>
</center>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
xsl文件头如果是<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/TR/WD-xsl">的话,在IE中能正常显示,并可以执行一步一步的提交,但是在Firefox中出现错误:
载入样式表单出错: 分析 XSLT 样式表单失败。
在网上查询时因为xmlns:xsl定义不完整,应该改成<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://www.w3.org/TR/xhtml1/strict">
改过之后是没有这个问题了,但是后面的操作都不能实现了,不管是在IE还是在Firefox中
请高手指点如何做到在IE和Firefox中都能执行操作。
[解决办法]
xmlns:xsl="http://www.w3.org/TR/WD-xs"是草案版本,
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"是正式版本。
两者并非改一下命名空间就能通用,在语句、语法上是有差异的。
建议你以xmlns:xsl="http://www.w3.org/1999/XSL/Transform"版本来编写XSLT。
[解决办法]
将名称空间换成正式版本后,里面的代码也要改,因为正式版本的解析方式和老版本的不一样
问题一:<xsl:when test="DIPS_USER_FORGET_PWD/STEP[.= '2']">
在正式版本如何解析之后是数字的话,不要加单引号
问题二:
<input type="hidden" name="id">
<xsl:attribute name="value"><xsl:value-of select='DIPS_USER_FORGET_PWD/USER_INFO/ID' /></xsl:attribute>
</input>
解析出来的值之前是有空格的,要采用一个函数来解决normalize-space()函数,即
<input type="hidden" name="id">
<xsl:attribute name="value"><xsl:value-of select='normalize-space(DIPS_USER_FORGET_PWD/USER_INFO/ID)' /></xsl:attribute>
</input>
这样的话问题就解决了。