xml数据岛的数据格式:
<?xml version="1.0" encoding="GBK"?>
<list>
<ExchangeDataInfo>
<id>1e4929642d904b6eba7db731b13ef960</id>
<name>abc</name>
<date>20120710 14:50:22.0 CST</date>
<updateDate>20120710 14:50:22.0 CST</updateDate>
<size>4168</size>
<desc>本文件是用于数据文件管理组件中运行测试用例使用</desc>
<keyWords>
<string>白图片</string>
<string>数据管理</string>
<string>上传</string>
<string>测试</string>
</keyWords>
<exchangeInfo>
<taskINSID>1</taskINSID>
<taskSourceIP>172.16.10.30</taskSourceIP>
<exchangeNodeID>1</exchangeNodeID>
<taskType>EXCHANGENODEDownLOAD</taskType>
<exchangeDataType>SPATIALDATA</exchangeDataType>
<exchangeFileType>SHAPE</exchangeFileType>
<isValid>true</isValid>
<sequenceEnd>20120716 16:41:26.453 CST</sequenceEnd>
<downLoadTimes>0</downLoadTimes>
<orderIndex>1</orderIndex>
</exchangeInfo>
</ExchangeDataInfo>
<ExchangeDataInfo>
<id>0c091601eb5c474785ee046c358fa0ac</id>
<name>又是白图片</name>
<date>20120708 10:20:22.0 CST</date>
<updateDate>20120708 10:20:22.0 CST</updateDate>
<size>4168</size>
<desc>本文件是用于数据文件管理组件中运行测试用例使用</desc>
<keyWords>
<string>又是白图片</string>
<string>数据管理</string>
<string>下载</string>
<string>测试</string>
</keyWords>
<exchangeInfo>
<taskINSID>2</taskINSID>
<taskSourceIP>172.16.10.30</taskSourceIP>
<exchangeNodeID>1</exchangeNodeID>
<taskType>EXCHANGENODEDOWNLOAD</taskType>
<exchangeDataType>SPATIALDATA</exchangeDataType>
<exchangeFileType>SHAPE</exchangeFileType>
<isValid>true</isValid>
<sequenceEnd>20120716 16:41:26.872 CST</sequenceEnd>
<downLoadTimes>2</downLoadTimes>
<orderIndex>2</orderIndex>
</exchangeInfo>
</ExchangeDataInfo>
</list>
XSL文件内容 :xsl就是xml的样式(css)
<?xml version="1.0" encoding="GBK"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:wfs="http://www.opengis.net/wfs">
<!-- 可以删除 作用不明-->
<xsl:output method="xml" omit-xml-declaration="no" indent="no" />
<!-- 可以删除 作用不明-->
<xsl:param name="enableServiceNode"></xsl:param>
<!--模板与xml数据岛匹配的节点名称,如果是/,则表示根节点,当前为list -->
<xsl:template match="list">
<!-- element是输出或者说返回给用户的xml,name表示节点名称,那么这样就会输出一个rows的节点-->
<xsl:element name="rows">
<!-- xsl的for-each用于循环xml数据岛中的数据-->
<xsl:for-each select="ExchangeDataInfo">
<!-- 输出一个row几点-->
<xsl:element name="row">
<!-- 给row节点添加一个id属性,id属性的值等于xml数据岛中的id节点的值-->
<xsl:attribute name="id">
<!-- 获取xml数据岛中id节点的值-->
<xsl:value-of select="id" />
</xsl:attribute>
<!--输出一个cell节点 -->
<xsl:element name="cell">
<!-- 获取xml数据岛中id节点的值-->
<xsl:value-of select="id" />
</xsl:element>
<!--输出一个cell节点-->
<xsl:element name="cell">
<!--输入固定的字符,不从xml数据岛中读取数据-->
images/RAR.png
</xsl:element>
<xsl:element name="cell">
<!--xsl的choose用法:when,otherwise-->
<xsl:choose>
<!-- 语法表示:如果xml数据岛中的name属性的长度大于100
string-length()方法用于获取字符串的长度
test="..."用于判断
-->
<xsl:when test="string-length(name) > 100">
<!-- 给返回的数据前添加b标签,实现加粗效果,使用substring(aString,start,end)截取字符串-->
<b> <xsl:value-of select="substring(name,0,100)" />...zip</b>
</xsl:when>
<!--否则的话,执行这段代码-->
<xsl:otherwise>
<!--直接输出xml数据岛中的name属性,并追加b标签-->
<b><xsl:value-of select="name" /></b>
</xsl:otherwise>
</xsl:choose>
</xsl:element>
<xsl:element name="cell">
<xsl:value-of select="size" />
</xsl:element>
<xsl:element name="cell">
<xsl:value-of select="date" />
</xsl:element>
<xsl:element name="cell">
<!--xml数据岛是多层次的节点的使用方法:使用/号,例如:parent/son -->
<xsl:if test="exchangeInfo/taskType = 'CENTERUPLOAD'">
<!--输出图片-->
<img src="images/up.png"/>
</xsl:if>
<xsl:if test="exchangeInfo/taskType = 'CENTERDOWNLOAD'">
<img src="images/down.png"/>
</xsl:if>
<xsl:if test="exchangeInfo/taskType = 'EXCHANGENODEUPLOAD'">
<img src="images/up.png"/>
</xsl:if>
<xsl:if test="exchangeInfo/taskType = 'EXCHANGENODEDOWNLOAD'">
<img src="images/down.png"/>
</xsl:if>
</xsl:element>
<xsl:element name="cell">
<!--添加js脚本的响应时间:通过拼凑span标签,并添加onclick实现-->
<span href="#" onclick="DataManager.downData('<xsl:value-of select="id" />')"><img style="margin:0px;padding:0px" src="images/download0.png"/></span>
<span href="#" onclick="DataManager.detailData('<xsl:value-of select="id" />')"><img style="margin:0px;padding:0px;position:relative;left:-3px;" src="images/detail0.png"/></span>
<span href="#" onclick="DataManager.deleteData('<xsl:value-of select="id" />')"><img style="margin:0px;padding:0px;position:relative;left:-6px;" src="images/del.png"/></span>
</xsl:element>
</xsl:element>
</xsl:for-each>
</xsl:element>
</xsl:template>
</xsl:stylesheet>
显示结果见附件:使用dhtmlxgrid的显示结果
xsl有自己的函数库,详见:http://blog.csdn.net/ccsdba/article/details/1635050 和 http://blog.163.com/chenyunpei_studio@126/blog/static/36578255200762882452192/
xsl也允许自定义函数,详见:http://hi.baidu.com/godghdai/blog/item/e8955066580ff62fab184ce9.html
但是,自定义函数在j2ee应用中,会碰到安全设置不允许的问题,所以一直没有实质性的效果。
下面是自己的尝试
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:msxsl="urn:schemas-microsoft-com:xslt"
xmlns:user="http://supermap.com/">
<msxsl:script language="javascript" implements-prefix="user">
function GetName(node) {
return (node+"aaaaaaaaaaaaaaaaf").substr(1,8);
}
]]>
</msxsl:script>
<xsl:template match="list">
<xsl:element name="cell"><!--自定义函数的使用方法-->
<b><xsl:value-of select="user:GetName(name)" /></b>
<xsl:if test="string-length(name) > 3">
<b><xsl:value-of select="substring(name,0,15)" />...</b>
</xsl:if>
</xsl:element>
</xsl:template>
</xsl:stylesheet>
这种写法,在jsp页面中会提示:页面安全设置不允许在此使用函数 这样类似的提示,最终导致不能返回正常的记过。
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:msxsl="urn:schemas-microsoft-com:xslt"
xmlns:user ="http://www.mycompany.org/ns/function"
xmlns:lxslt="http://xml.apache.org/xslt"
exclude-result-prefixes="user">
<lxslt:component prefix="user" elements="rules" functions="GetName">
<msxsl:script language="javascript" implements-prefix="user">
<![CDATA[
function GetName(node) {
return (node+"aaaaaaaaaaaaaaaaf").substr(1,8);
}
]]>
</msxsl:script>
</lxslt:component>
<xsl:template match="list">
....
</xsl:template>
</xsl:stylesheet>
这种写法,绕开了安全设置的提示,但是会提示:命名空间不包含任何函数的提示,最终还是失败。
xsl中的除法:div方法
xsl中的数字格式化:format-number(anumber,'0.00');//表示保留两位小数
<xsl:choose>
<xsl:when test="number(size) > (1024*1024*1024)">
<xsl:value-of select="format-number(number(size) div (1024*1024*1024),'.00')" />G
</xsl:when>
<xsl:when test="number(size) > (1024*1024)">
<xsl:value-of select="format-number(number(size) div (1024*1024),'.00')" />M
</xsl:when>
<xsl:when test="number(size) > 1024">
<xsl:value-of select="format-number(number(size) div 1024,'.00')" />k
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="size" />
</xsl:otherwise>
</xsl:choose>
//dhtmlgrid的使用:
//listServiceURL = "testdata/dataexchange1.xml";//TODO 测试数据
mygrid.parse(TransFormUtil.transForm(listServiceURL,"xslt/dataexchange.xsl",null,3));
Transform.js:
/*-----------------------通用xsl转换类(静态类)-----------------*/
/*-----------------------版本:V1.0------------------*/
/*-----------------------作者:songxw-----------------*/
///<sumary>
/// xsl转换类--用于适应firefox以及IE各版本
///</sumary>
TransFormUtil=new function()
{
/// <summary>
/// 转换过程
/// </summary>
///<params name="xml">要转换的xml源</params>
///<params name="xsl">执行转换的式xsl模板</params>
///<params name="params">转换参数:json格式</params>
///<params name="resouceType">数据源类型:0表示xml为string/xsl为string,1表示xml为string/xsl为file,2表示xml为string/xsl为file,3表示xml为file/xsl为file</params>
/// <returns>执行转换后的html结果</returns>
this.transForm=function(xml,xsl,params,resouceType)
{
//获取浏览器版本信息
var browser=getBrowser();
var formatHtml="";
var xmlDom=BrowserAdepter.getDomDocument();
xmlDom.async = false;
switch(resouceType)
{
//从string中加载数据源
case 0:
case 1:
xmlDom=BrowserAdepter.loadXML(xml);
break;
//从file中加载数据源
case 2:
case 3:
xmlDom=BrowserAdepter.load(xml);
break;
}
//必须使用线程安全的Dom对象
var xslDom =BrowserAdepter.createFreeThreadedDocument();
xslDom.async = false;
switch(resouceType)
{
//从string中加载数据源
case 0:
case 2:
xslDom=BrowserAdepter.loadXML(xsl);
break;
//从file中加载数据源
case 1:
case 3:
if(typeof xslDom.load !='undefined'){
xslDom.load(xsl);
}
else{
xslDom=BrowserAdepter.load(xsl);
}
break;
}
if(BrowserAdepter.getXml(xmlDom)=="") return "";
var xslTemplate =BrowserAdepter.createXSLTemplate();
//适用于IE
if(browser.isIE)
{
xslTemplate.stylesheet =xslDom;
// 创建XslProcessor对象
var xslProcessor = xslTemplate.createProcessor();
xslProcessor.input = xmlDom;
//转换参数
if(params!=null && params!=undefined)
{
for(var key in params)
{
xslProcessor.addParameter(key,eval("params."+key));
}
}
// 执行XSLT转换
xslProcessor.transform();
formatHtml=xslProcessor.output;
}
//适用于firefox
else
{
xslTemplate.importStylesheet(xslDom);
//转换参数
if(params!=null && params!=undefined)
{
var value="";
for(var key in params)
{
value=eval("params."+key);
xslTemplate.setParameter(null,key,value);
}
}
var result = xslTemplate.transformToFragment(xmlDom,document);
var xmls = new XMLSerializer();
formatHtml=xmls.serializeToString(result);
}
formatHtml=formatHtml;
xmlDom=null;
xslDom=null;
xslTemplate=null;
return formatHtml.replace("<?xml version=\"1.0\"?>","");
};
}
xsl大写转换成小写:translate(str,'A...Z','a...z')
<!--定义变量-->
<xsl:variable name="uppercase">ABCDEFGHIJKLMNOPQRSTUVWXYZ</xsl:variable>
<xsl:variable name="lowercase">abcdefghijklmnopqrstuvwxyz</xsl:variable>
<!--大小写转换-->
<td class="title">策略类型</td>
<td class="value"><xsl:value-of select="translate(strategyType,$uppercase,$lowercase)"/></td>
xsl中进行非空判断
<xsl:if test="processInfo !=null">
<xsl:value-of select="processInfo"/>
</xsl:if>
- 大小: 8.1 KB
分享到:
相关推荐
微软Dhtml网页开发控件帮助文档(翻译)微软Dhtml网页开发控件帮助文档(翻译)
html xml xhtml dhtml html xml xhtml dhtml html xml xhtml dhtml html xml xhtml dhtml
早期的参考资料,我仍在使用 DHTML+CSS2+JAVASCRIPT+XML
第九章:XML Behaviors - 新的DHTML 第十章:使用IE5 浏览XML 文件 第十一章:一个很典型的XML 文件例子 第十二章:格式化XML(一) 第十三章:格式化XML(二) 第十四章:XML 的典型运用(一) 第十五章:XML 的...
HTML,DHTML,VRML,XML功能分析与比较研究 HTML,DHTML,VRML,XML功能分析与比较研究
9 第七章:XML DOM 11 第八章:XSL - The Style Sheet Language of XML(XML的样式表语言) 12 第九章:XML Behaviors - 新的DHTML 15 第十章:使用IE5浏览XML文件 17 第十一章:一个很典型的XML文件...
DHTML 手册 DHTML 手册 DHTML 手册 DHTML 手册
DHTML常用标签的使用说明,非常详细。DHTML常用标签的使用说明,非常详细。DHTML常用标签的使用说明,非常详细。DHTML常用标签的使用说明,非常详细DHTML常用标签的使用说明,非常详细DHTML常用标签的使用说明,非常...
很不错的DHTML界面,使用方便,简单易用。
基于DHTML+AJAX实现的Menu类库scripts代码例子。
css,DHTML,js,XMLDOM,手册
单独用XMl不能显示页面,我们使用格式化技术,比如CSS或者XSL,才能显示XML标记创建的文档。 我们在前面第一章讲到XML是将数据和格式分离的。XML文档本身不知道如何来显示,必须有辅助文件来帮助实现。(XML取消了...
DHTML手册 DHTML
说明:为了方便下载本人已压缩 参考手册 ...XHTML 1.0 CSS 2.0 JavaScript VBScript ...DHTML 实例 VBScript 实例 ASP 实例 ADO 实例 SVG 实例 XSLT 1.0 XPath 2.0 XSL-FO WML 1.1 HTML 颜色
DHTML中文使用手册最新版
第7章讨论级联样式表(cascading style sheet)—最简单,但是最受限的样式表类型—而第10章介绍使用XSL(扩展样式表语言,Extensible Stylesheet Language),一种用XML编写的更高级、更灵活的样式表类型。...
Dhtml手册(Dhtml手册.chm)
单独用XMl不能显示页面,我们使用格式化技术,比如CSS或者XSL,才能显示XML标记创建的文档。XML文档本身不知道如何来显示,必须有辅助文件来帮助实现。(XML取消了所有标识,包括font, color,p等风格样式定义标识,...
DHTML技术资料 DHTML的概念 DHTML 技术的核心—DOM CSS-P DHTML 编程
DHTML 完全手册 动态 HTML (DHTML) 对象模型参考 <br>DHTML 对象 DHTML 属性 DHTML 方法 DHTML 事件 DHTML 集合 HTML 参考 <br>HTML 元素 HTML 字符集 样式表(CSS)参考 <br...