XSL的基础:
绪言:要了解XSl首先必须先了解HTML语言,它是XSL语言的基础!(HTML语言详细知识可以参见附里的关于HTMl的网站),
XSL. XML的简介和作用:
XML简介: 所谓的xml,就是eXtensible Markup Language, 翻译成中文就是“可扩展标识语言“,在国内很多人理解xml为html的简单扩展,这实际上是一种误解。尽管xml同html关系非常密切。HTML相信大家都比较熟悉,即“HyperText Markup Language” (超文本标识语言),它的优点是比较适合web 页面的开发。但它有一个缺点是标记相对少,只有固定的标记集如<p>.<strong>等。缺少柔性和适应性。不能支持特定领域的标记语言
首先XML是一种元标记语言,所谓“元标记”就是开发者可以根据自己的需要定义自己的标记,比如开发者可以定义如下标记<book> <name>,任何满足xml命名规则的名称都可以标记,这就为不同的应用程序打开了的大门。HTML是一种预定义标记语言,它只认识诸如<html>,<p>等已经定义的标记,对于用户自己定义的标记是不认识的。 第二xml是一种语义/结构化语言。它描述了文档的结构和语义。
XSL简介: XSL(eXtensible Stylesheet Language,可扩展样式语言)是为XML文件定义的一种标识语言,它将提供远远超过CSS的强大功能,如将元素再排序等。实际上简单的XML已可被CSS所解释,然而复杂的高度结构化的XML数据或XML文档则只能依赖于XSL极强的格式化的能力而现给用户。XSL以包含了一套元素集的XML语法规范而定义,该语法规范将被用来把XML文件转换成HTML文件或XML文档。一个XSL样式表集合了一系列设计规则以用于将信息从XML文件中汲取出,并将其转换成HTML等其它格式。这种转换将采用一种公开的方式,使其更加容易方便地被程序员描述。而且XSL还将提供多种脚本语言的通道以满足更为复杂的应用需求,因此尽管XSL是一项新的标识语言,但程序员完全可以继续充分发挥其所熟练的HTML或脚本语言的优势。XSL凭借其可扩展性能够控制无穷无尽的标签,而控制每个标签的方式也是无穷尽的。这就给Web提供了高级的布局特性。例如旋转的文本、多列和独立区域。它支持国际书写格式,可以在一页上混合使用从左至右、从右至左和从上至下的书写格式。
XSLT 介绍
在学习XSLT之前你应该对XML和XML命名空间有基本的了解。XSLT是把一种XML文档转换成另一种文档的语言。XSLT是XSL标准中最重要的一部分。它是XSL中用来把一种XML文档转换成另一种XML文档或者诸如HTML和XHTML能被浏览器识别的文档的一部分。XSLT通常是把每一个MXL元素转换成(X)HTML元素来做到这一点的。
XSLT也能够在输出的文件中加入新的元素,或者删除元素。它能对元素重新排列和分类并进行测试和判断显示哪些元素。当然还能做比这更多的。
一种通常的描述这种转换的方式是说XSLT把XML source tree 转换成了 XML result tree。
在MVC模式中处于显示层的位置,控制页面的样式, 是专门为XML设计的一种样式语言。XSL它的作用:就是实现了数据与数据表现形式的分离。
1998年2月10日 ,XML1.0标准版在W 3C 组织中诞生。它是一种逻辑清晰,简洁,容易阅读的的标记语言。XML它的作用:描述并组织数据。
它的编写方法:
1. 必备工具:
Office xp或2003, XMLwriter工具 jakarta-tomcat- 4.1.24
2. 编写步骤
2.1 具体编写步骤做简要介绍
A 在frontpage中打开该页面,点击该页的代码,在代码页里点击右键,选中” 应用XML格式”
B 在XMLwriter中把所有的代码从frontpage中复制到新的空xsl文件中(在头和尾加上XSL的固定格式),保存成与该页面同名的xsl.
C 再根据页面的具体形式编写XSl,,详细请去相关网站查看(见最后附)
2.2 测试前的准备工作:
1. 在C:/jakarta-tomcat- 4.1.24 /webapps/目录下建一个test文件夹。
2. 把C:/jakarta-tomcat- 4.1.24 /webapps/ROOT下的WEB-INF完全复制到该目录下。
2.3 测试分为2级:
A 直接在XMLwriter编辑器中,把你写的xml ,xsl 同时在XMLwriter种运行,按F4键,页面可以正确显示即可。或按F5键,页面在ie里可以正确显示。或按F6键,检查 xml的格式是否完整。
B 在jakarta-tomcat- 4.1.24 下,把写好的XML,XSL复制到C:/jakarta-tomcat-4.1.24/webapps/test下,运行tomcat,
C.在ie地址输入: http://localhost:8080/test/ ,点击页面名称进入该页面,输入参数提交form表单后,在ie地址栏里可以看到 action的名字和参数的名字和值,现在需要做的就是把参数的个数和名字和action涉及文档里的个数和名字进行对比,若完全一样就表示没有错误否则要么个数不一致,要么名字不一致。
以下是在编码中的一些用到的知识和问题总结:
3. 表格自动换行
style="word-wrap:break-word; word-break:break-all;"
4. 只准输入数字的文本框
<οnkeypress="return (//d/.test(String.fromCharCode(event.keyCode)))" style="ime-mode: disabled">
5. <!XML基本构架>
<?xml version="1.0" encoding="GB2312" ?>
<?xml:stylesheet type="text/xsl" href="EmployeeEdit.xsl" ?>
<root>
<!--系统提示信息-->
<system>
<appMessage>
<message>Message </message>
<ResultMsg>ResultMsg</ResultMsg>
</appMessage>
</system>
</root>
6. <!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" indent="no"/>
<xsl:template match="root">
</xsl:template>
</xsl:stylesheet>
7. <!Text文本框>
<input type="text" name="word" size="20" >
<xsl:attribute name="value">
<xsl:value-of select="word" />
</xsl:attribute>
</input>
8. 删除时确认是否要删除
<a href="javascript:if(confirm("确实要删除吗?"))location="boos.asp?&areyou=删除&page=1"">删除</a>
9. 判断上一页的来源是从哪个页面过来的
javascript:
document.referrer
10. <div>,<span>,<layer>的区别是什么:
<div>(division)用来定义大段的页面元素,会产生转行
<span>用来定义同一行内的元素,跟<div>的唯一区别是不产生转行
<layer>是ns的标记,IE不支持,相当于<div>
11. 让弹出窗口总在最前面
<body οnblur="this.focus();">
12. 如何设定打开页面的大小
<body οnlοad="top.resizeTo(300,200);">
点击一个连接,让top页面弹出的页面大小控制在宽300,高200的范围里(显示器左上角为坐标的原点)
13. 所有的表单值都不能为空的判断
<input οnblur="if(this.value.replace(/^/s+|/s+$/g,'')=='')alert('不能为空!')">
14. 复选框的全选,多选,全不选,反选的代码如下
<form name=hrong> //定义复选框的格式,
<input type=checkbox name=All οnclick="checkAll('mm')" value="ON">全选<br/>
<input type=checkbox name=mm οnclick="checkItem('All')" value="ON"><br/>
<input type=checkbox name=mm οnclick="checkItem('All')" value="ON"><br/>
<input type=checkbox name=mm οnclick="checkItem('All')" value="ON"><br/>
<input type=checkbox name=mm οnclick="checkItem('All')" value="ON"><br/>
<input type=checkbox name=mm οnclick="checkItem('All')" value="ON"><br/>
<input type=checkbox name=All2 οnclick="checkAll('mm2')" value="ON">全选<br/>
<input type=checkbox name=mm2 οnclick="checkItem('All2')" value="ON"><br/>
<input type=checkbox name=mm2 οnclick="checkItem('All2')" value="ON"><br/>
<input type=checkbox name=mm2 οnclick="checkItem('All2')" value="ON"><br/>
<input type=checkbox name=mm2 οnclick="checkItem('All2')" value="ON"><br/>
<input type=checkbox name=mm2 οnclick="checkItem('All2')" value="ON"><br/>
</form>
<SCRIPT LANGUAGE="javascript"> // javascript来调用判断它是全选,多选,全部选还是反选
function checkAll(str)
{
var a = document.getElementsByName(str);
var n = a.length;
for (var i=0; i<n; i++)
a[i].checked = window.event.srcElement.checked;
}
function checkItem(str)
{
var e = window.event.srcElement;
var all = eval("document.hrong."+ str);
if (e.checked)
{
var a = document.getElementsByName(e.name);
all.checked = true;
for (var i=0; i<a.length; i++)
{
if (!a[i].checked){ all.checked = false; break;}
}
}
else all.checked = false;
}
</SCRIPT>
15. 按钮连接某个页面的写法
<οnclick=”document.location.href=’**.html’”>
16. 样式的应用方式和具体代码(在XSL中写)
<Link rel=”stylesheet” type=”text/css” href=”../resources/css/pipiwo.css” >
17. 关于meta的用法如下
<meta name="ROBOTS" content="属性值">
其中属性值有以下一些:
属性值为"all": 文件将被检索,且页上链接可被查询;
属性值为"none": 文件不被检索,而且不查询页上的链接;
属性值为"index": 文件将被检索;
属性值为"follow": 查询页上的链接;
属性值为"noindex": 文件不检索,但可被查询链接;
属性值为"nofollow": 文件不被检索,但可查询页上的链接。
18. Textarea自动适应文本文字行数的多少
<script type="text/javascript" src="../resources/options.js"></script>
<script language="JavaScript1.2">
function document.onkeydown(){
if(event.keyCode==116){
event.keyCode=0;
event.returnValue=false;
}
}
</script>
<script language="JavaScript1.2">
<textarea rows=1 name=s1 cols=27 onpropertychange="this.style.posHeight=this.scrollHeight" >
</textarea>
19. 在文本框中输入最大字符的长度
Maxlength=”数字”
20. 上传文件用到的在form中写:
<form name="cardsform" ENCTYPE="multipart/form-data">
21. 复选框传值
<input type="checkbox" name="studentid">
<xsl:attribute name="value">
<xsl:value-of select="var1"/>
</xsl:attribute>
</input>
22. 隐含参数的传递
<input type="hidden" name="PlaceOneMessage" size="8">
<xsl:attribute name="value">
<xsl:value-of select="PlaceOneMessage"/>
</xsl:attribute>
</input>
23. 在页面处点击按钮判断是Add还是Edit
function a(){ //Edit
document.cardsform.ButtonName.value="EDIT"
document.cardsform.action="ST_AddEduRecordRGNext.do"
document.cardsform.submit();
}
function b(){ //Add
document.cardsform.ButtonName.value="ADD"
document.cardsform.action="ST_AddEduRecordRGNext.do"
document.cardsform.submit();
}
24. 控制空格大小的写法
<span lang="zh-cn" style="font-size: 11px"> </span>
25. 最小化,最大化,关闭窗口 (本例使用于IE)
<object id=hh1 classid="clsid:ADB
880A
6-D8FF-11CF-9377-00AA003B
7A
11">
<param name="Command" value="Minimize"></object>
<object id=hh2 classid="clsid:ADB
880A
6-D8FF-11CF-9377-00AA003B
7A
11">
<param name="Command" value="Maximize"></object>
<OBJECT id=hh3 classid="clsid:adb
880a
6-d8ff-11cf-9377-00aa003b
7a
11">
<PARAM NAME="Command" value="Close"></OBJECT>
<input type=button value=最小化 οnclick=hh1.Click()>
<input type=button value=最大化 οnclick=hh2.Click()>
<input type=button value=关闭 οnclick=hh3.Click()>
26. 屏蔽功能键 Shift ,Alt , Ctrl
<script>
function look(){
if(event.shiftKey)
alert("禁止按Shift键!"); //可以把Shift换成ALT CTRL,可以试试.
}
document.οnkeydοwn=look;
</script>
27. 怎么判断是否是字符的Javascript
if (/[^/x00-/xff]/g.test(s)) alert("含有汉字"); //Javascript代码
else alert("全是字符");
28. 下拉框中选中后显示的XSL书写方法
<xsl:for-each select="Notelist" >
<option selected="" value="-1">全部短信</option>
<xsl:for-each select="sort">
<xsl:if test="NoteSortID/@selected[.='1']">
<option selected='selected'>
<xsl:attribute name="value">
<xsl:value-of select="NoteSortID" />
</xsl:attribute>
<xsl:value-of select="NoteSortName" />
</option>
</xsl:if>
<xsl:if test="NoteSortID/@selected[.='0']">
<option>
<xsl:attribute name="value">
<xsl:value-of select="NoteSortID" />
</xsl:attribute>
<xsl:value-of select="NoteSortName" />
</option>
</xsl:if>
</xsl:for-each>
</xsl:for-each>
29. 隐藏一个button来传值
<div style="visibility: hidden" ><xsl:value-of select="buttonName"/></div>
30. 控制按钮的大小
; width:120px
31. 按钮的关闭功能
οnclick="javascript:window.close()"
32. 按钮实现用IE打印的功能
οnclick="window.print()"
33. 按钮传多个参数
οnclick="document.location.href='YM_EditEPAppraisal.jsp?No={no}&studentid={studentid}'"
34. 超链属性
<xsl:attribute name="href"><xsl:value-of select="customerSite"/></xsl:attribute><xsl:value-of select="customerSite"/></a>
35. 单选按钮XSL书写模板
<input type="radio" value="0" name="Sex">
<xsl:if test="sex[.='true']">
<xsl:attribute name="checked">checked</xsl:attribute>
</xsl:if>
</input>男
<input type="radio" value="1" name="Sex">
<xsl:if test="sex[.='false']">
<xsl:attribute name="checked">checked</xsl:attribute>
</xsl:if>
</input>女
36. 复选框书写模板
<xsl:for-each select="terminologyList/terminology">
<tr><td>
<input type="checkbox" name="UserRole">
<xsl:if test="./@checked[.='1']">
<xsl:attribute name="checked">checked</xsl:attribute>
</xsl:if>
<xsl:attribute name="value">
<xsl:value-of select="terminologyID"/>
</xsl:attribute>
</input>
</td>
<td> <xsl:value-of select="terminologyContent"/></td>
<td></td>
</tr>
</xsl:for-each>
37. 判断链接是什么状态
<xsl:variable name="str1"><xsl:value-of select="useState"/></xsl:variable>
<xsl:choose >
<xsl:when test="$str1=1"><a href="">冻结态</a></xsl:when>
<xsl:otherwise>激活态</xsl:otherwise>
</xsl:choose>
38. 有单选按钮的列表
<xsl:for-each select="cycleList">
<xsl:variable name="var1" select="number"/>
<tr>
<td width="2%" height="30" class="main-table-fun-top" style="color: #000000; background-color: #FFFFFF"><input type="radio" value="{$var1}" checked="" name="partID" /></td>
<td width="8%" height="30" class="main-table-fun-top" style="color: #000000; background-color: #FFFFFF"><xsl:value-of select="number"/></td>
<td width="7%" height="30" class="main-table-fun-top" style="color: #000000; background-color: #FFFFFF"><xsl:value-of select="server"/></td>
<td width="4%" height="30" class="main-table-fun-top" style="color: #000000; background-color: #FFFFFF"><xsl:value-of select="price"/></td>
<td width="6%" height="30" class="main-table-fun-top" style="color: #000000; background-color: #FFFFFF"><xsl:value-of select="buyTime"/></td>
<td width="14%" height="30" class="main-table-fun-top" style="color: #000000; background-color: #FFFFFF"><xsl:value-of select="qualityInfo"/></td></tr>
</xsl:for-each>
39. 一段有用的javascript用来刷新
<SCRIPT language="JavaScript1.2">
<xsl:comment>
<![CDATA[
function a(){
document.form.action="EditPage.jsp"
document.form.submit();
}
]]>
</xsl:comment>
</SCRIPT>
40. 加入改代码使提交按钮背景变色和加个图片
style="border:0px ridge #FFFFFF; background-color:#E 2F 3C 0; color:#FFFFFF; width='13'; height='13'; background-image:url('../../resources/images/small1_langlib.gif')"
style="border:0px ridge #95b756; background-color:#c1da90; color:#006600;"
41. 标准的"邮编"代码
<input name="clientCompanyPostCard" type="text" maxlength="6" size="20" οnkeypress="return (//d/.test(String.fromCharCode(event.keyCode)))" style="ime-mode:
disabled" ><xsl:attribute name="value"><xsl:value-of select="clientCompanyPostCard" /></xsl:attribute></input>
42. 图片的书写方法
<img border="0" width="80" height="100">
<xsl:attribute name="src">
<xsl:value-of select="photo"/>
</xsl:attribute>
</img>