让xsl在FF下能够正常显示<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://www.w3.org/TR/xhtml1/strict">xsl格式后,用下面解决页面title在FF下被打印出来。<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="eng">xsl输入W3C文件头<xsl:output method="html" encoding="gb2312" doctype-public="-//W3C//DTD XHTML 1.0 Transitional//EN"doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"/>让xsl显示HTML disable-output-escaping="yes" 如: <xsl:value-of select="Root" disable-output-escaping="yes"/>判断是否为空值 用normalize-space判断节点是否存在 <xsl:if test="not(节点)">在xsl中title属性如何实现换行? 用: xsl取xml中的序列号 类似于db的自动编号 position()XSL运算符: 除 155 div 100 求余 155 mod 100 求和 sum() <xsl:value-of select="sum(//price)"/> 统计 count() <xsl:value-of select="count(PERSON[name=tom])"/> 字符函数 ....长度 string-length(str) ....查找 substring ....查找 substring-after 转换为数值 number() <xsl:value-of select="number(book/price)"/> 如果非数值,返回空。XSL使用自定义函数声明:<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://www.w3.org/TR/xhtml1/strict" xmlns:msxsl="urn:schemas-microsoft-com:xslt" xmlns:Missde="MissdeVBS" xmlns:MissdeJS="MissdeJS">函数:<msxsl:script language="VBScript" implements-prefix="Missde"><![CDATA[ 这里写VBS]]></msxsl:script><msxsl:script language="javaScript" implements-prefix="MissdeJS"><![CDATA[ 这里写JS]]>调用:<xsl:value-of select="Missde:函数名()"/><xsl:value-of select="MissdeJS:函数名()"/>XSL使用自定义函数时的特殊情况1.参数即可以是元素值、又可以是字符串 解决办法:使用自定义函数函数。 因为刚学xsl,xml,对相关属性不甚明了,所以所用方法应该有待完善。 a)用VBS判断: function getnode(node) dim str if IsObject(node) then if(Node.Length>0)then str=node.item(0).TEXT else str="" end if else str=node end if getnode=str End function b)用JS判断 function node(str){ return str[0]?str[0].text:str; }2.使用自定义函数,简化XSL代码 这里说的是特殊情况。比如说,需要在xsl引用一个动态地址,如js文件、img、url等 以引用script为例: function script(name,a,b,c,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s){ name=name.toLowerCase=="js"?"javascript":"vbscript"; var url=""; var str=new Array(a,b,c,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s); for(var i=0;i<str.length;i++){ if(str[i]!=undefined){ url+=node(str[i]); } } return "<script language='"+name+"' type='text/"+name+"' src='"+url+"'></script>"; }XSL排序 <xsl:for-each select="student"> <xsl:sort select="id" order='ascending'/> 以id顺序排列 <xsl:sort select="name" order='descending'/> 以name倒序排列 </xsl:for-each>
-------------------------------------------------下面事件中,包括了排序、条件查询、及多条件合并查询<xsl:for-each select="body/msg[sort='pro' and position() < 4]"><xsl:sort select="isgoodtime" order='descending'/></xsl:for-each>
xsl条件查询 进行大小于比较的时候,先进行编码。如>写成<xsl模板合并 方法一(二个) 用它引用<xsl:import href=""/> 用它打印<xsl:apply-imports/> 方法二(多个) 主.xsl 调用 <xsl:import href="head.xsl"/> <xsl:import href="foot.xsl"/> <xsl:template match="html"> <xsl:call-template name="head"/> 本页主内容 <xsl:import href="foot.xsl"/> </xsl:template> 子.xsl <xsl:template name="head"> aaa </xsl:template>xsl模板合并时,主模板控制子模板head中的title (暂用下面办法) a).建全局变量title b).head.xsl 引用自定义函数 showtitle() c). main.xsl 引入head.xsl之前为全局变量title赋值。 JS: var title=""; function gettitle(a,b,c,e,f,g,h){ var str=new Array(a,b,c,e,f,g,h) for(var i=0;i<str.length;i++){ if(str[i]!=undefined){ title+=node(str[i])+ " - "; } } return ""; } function showtitle(){ return title; }出处: