- 浏览: 452221 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
July01:
最近了解到一款StratoIO打印控件,功能如下:1、Html ...
JS操作XMLDOM(遍历和打印) -
lliiqiang:
我这边只要出现图表组件就报告2032号错误。
Flex 出现 Error #2032 是什么意思 -
全保生:
感谢!方法一:(已确认 可行)String username ...
jsp 的url传参中文乱码问题解决办法 -
dy804731771:
谢谢您的分享,对我有帮助
兼容的带样式的INPUT -
huang305585796:
火影头像好屌
FusionCharts统计图导出为图片或pdf
需求:保留路径最后一个目录 (test文件)
<filePath>D:\upload\2012\test文件</filePath>
xsl使用变量样例:
<xsl:variable name="AAA" select="substring-after(filPath,'D:\')" />
<xsl:variable name="BBB" select="substring-after($AAA,'.')" />
<xsl:variable name="CCC" select="substring-after($BBB,'.')" />
<xsl:value-of select="$CCC"/>
#xsl使用变量范例
<xsl:variable name="a" select="substring-after(filePath,':\')" /> <!-- 第1级chose --> <xsl:choose> <xsl:when test="contains($a,'\')"> <!-- 第2级chose --> <xsl:choose> <xsl:when test="contains($b,'\')"> <xsl:variable name="c" select="substring-after($a,'\')" /> <xsl:value-of select="$c" /> </xsl:when> <xsl:otherwise> <xsl:value-of select="$b" /> </xsl:otherwise> </xsl:choose> </xsl:when> <xsl:otherwise> <xsl:value-of select="$a" /> </xsl:otherwise> </xsl:choose>
//xsl中打印空格 //xsl中空格使用: 代替 或者 
xsl应用实例
技术点:
- 1 声明全局变量;
- 2大小写转换;
- 3返回模板;
- 4xsl除法;
- 5xsl浮点格式化;
- 6choose使用;
- 7xsl使template自定义模板和使用call-template调用自定义模板
#下边是xml文件和xsl文件实例
<?xml version="1.0" encoding="UTF-8" ?>
<list>
<TaskinstanceInfo>
<pkid>2919</pkid>
<taskdefineId>2</taskdefineId>
<enodeTaskinsId>0</enodeTaskinsId>
<taskStatus>COMPLETE</taskStatus>
<startTime>2012-07-10 15:34:12.0 CST</startTime>
<lastCompleteTime>2012-07-11 12:00:00.0 CST</lastCompleteTime>
<filePath>D:\upload\2012\test\a\b\c\d\e\f</filePath>
<!-- 单位:字节 -->
<fileSize>122420</fileSize>
<fileFormat>E00</fileFormat>
<processInfo>中心处理中</processInfo>
<updateType>INCREMENT</updateType>
<transportType>FTP</transportType>
<dataType>SPATIALDATA</dataType>
<taskSourceIp>172.16.10.16</taskSourceIp>
<exchangeNodeId>2</exchangeNodeId>
<taskSourceDesc>null</taskSourceDesc>
<taskCreaterId>4</taskCreaterId>
<taskCreaterName>Tite</taskCreaterName>
<taskCreaterDept>国土资源厅</taskCreaterDept>
<localSourceId>d388f9d1-9453-4313-b1a2-c99fe1f84856</localSourceId>
<localCatalogId>0c091601-eb5c-4747-85ee-046c358fa0ac</localCatalogId>
<tranFileFormat>GDB</tranFileFormat>
<sequenceState>VALID</sequenceState>
<orderIndex>3</orderIndex>
</TaskinstanceInfo>
<TaskinstanceInfo>
<pkid>2917</pkid>
<taskdefineId>1</taskdefineId>
<enodeTaskinsId>0</enodeTaskinsId>
<taskStatus>START</taskStatus>
<startTime>2012-07-09 12:00:00.0 CST</startTime>
<lastCompleteTime>2012-07-12 18:00:00.0 CST</lastCompleteTime>
<filePath>D:\upload\2012\test2</filePath>
<!-- 单位:字节 -->
<fileSize>102400</fileSize>
<fileFormat>GDB</fileFormat>
<processInfo>数据开始上传</processInfo>
<updateType>REPLACE</updateType>
<transportType>FTP</transportType>
<dataType>SPATIALDATA</dataType>
<taskPriority>HIGHEST</taskPriority>
<taskSourceIp>172.16.10.11</taskSourceIp>
<exchangeNodeId>1</exchangeNodeId>
<taskSourceDesc>null</taskSourceDesc>
<taskCreaterId>1</taskCreaterId>
<taskCreaterName>Tite</taskCreaterName>
<taskCreaterDept>国土资源厅</taskCreaterDept>
<localSourceId>1e492964-2d90-4b6e-ba7d-b731b13ef960</localSourceId>
<localCatalogId>0c091601-eb5c-4747-85ee-046c358fa0ac</localCatalogId>
<tranFileFormat>E00</tranFileFormat>
<sequenceState>VALID</sequenceState>
<orderIndex>1</orderIndex>
</TaskinstanceInfo>
</list>
<?xml version="1.0" encoding="utf-8"?> <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> <xsl:variable name="uppercase">ABCDEFGHIJKLMNOPQRSTUVWXYZ</xsl:variable> <xsl:variable name="lowercase">abcdefghijklmnopqrstuvwxyz</xsl:variable> <xsl:template match="list"> <xsl:element name="rows"> <xsl:for-each select="TaskinstanceInfo"> <xsl:element name="row"> <xsl:attribute name="id"> <xsl:value-of select="pkid" /> </xsl:attribute> <xsl:element name="cell"> <xsl:value-of select="null" /><!--TODO null表示复选框未选中 --> </xsl:element> <xsl:element name="cell"> <img style="cursor:pointer;" alt="zip压缩包" src="images/RAR.png"/> </xsl:element> <xsl:element name="cell"> <a href="javascript:void(0)" onclick="DataManager.detailData('<xsl:value-of select="pkid" />');"> <xsl:call-template name="get-filepath-name"> <xsl:with-param name="text" select="filePath"/> </xsl:call-template> </a> </xsl:element> <xsl:element name="cell"> <xsl:value-of select="taskCreaterDept"></xsl:value-of> </xsl:element> <xsl:element name="cell"> <xsl:value-of select="substring-before(string(startTime),' ')" /> </xsl:element> <xsl:element name="cell"> <xsl:choose> <xsl:when test="number(fileSize) > (1024*1024*1024)"> <xsl:value-of select="format-number(number(fileSize) div (1024*1024*1024),'.00')" />GB </xsl:when> <xsl:when test="number(fileSize) > (1024*1024)"> <xsl:value-of select="format-number(number(fileSize) div (1024*1024),'.00')" />MB </xsl:when> <xsl:when test="number(fileSize) > 1024"> <xsl:value-of select="format-number(number(fileSize) div 1024,'.00')" />KB </xsl:when> <xsl:otherwise> <xsl:value-of select="fileSize" /> </xsl:otherwise> </xsl:choose> </xsl:element> <xsl:element name="cell"> <a href="javascript:void(0)" onclick="DataManager.viewSCCL('<xsl:value-of select="taskdefineId" />')"><xsl:value-of select="taskdefineId" /></a> </xsl:element> <xsl:element name="cell"> <xsl:choose> <xsl:when test="translate(taskStatus,$lowercase,$uppercase) = 'COMPLETE'"> <span style="color:green;">上传完成</span> </xsl:when> <xsl:otherwise> <span style="color:red;">上传中</span> </xsl:otherwise> </xsl:choose> </xsl:element> <xsl:element name="cell"> <a href="javascript:void(0)" style="color:#0B94A7;margin-left:10px;" onclick="DataManager.activeData('<xsl:value-of select="pkid" />');">查看</a> | <xsl:if test="taskStatus != 'COMPLETE'"> <a href="javascript:void(0)" style="color:#A40994;" onclick="DataManager.cancelData('<xsl:value-of select="pkid" />');">取消上传</a> </xsl:if> <xsl:if test="taskStatus = 'COMPLETE'"> <a href="javascript:void(0)" style="color:red;" onclick="DataManager.deleteData('<xsl:value-of select="pkid" />');">删除</a> </xsl:if> </xsl:element> </xsl:element> </xsl:for-each> </xsl:element> </xsl:template> <!--获取文件路径最后文件名 --> <xsl:template name="get-filepath-name"> <xsl:param name="text"/> <xsl:choose> <xsl:when test="contains($text,'\')"> <xsl:call-template name="get-filepath-name"> <xsl:with-param name="text" select="substring-after($text,'\')"/> </xsl:call-template> </xsl:when> <xsl:otherwise> <xsl:value-of select="$text"/> </xsl:otherwise> </xsl:choose> </xsl:template> </xsl:stylesheet>
xml文件中的filePath在经过xsl处理后分别输出的是:f和test2
xsl返回带有template的html:
<?xml version="1.0"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> <xsl:template match="/entry"> <html> <head> </head> <body> <xsl:value-of select="title" /> <xsl:value-of select="body" disable-output-escaping="yes"/> </body> </html> </xsl:template> </xsl:stylesheet>
xsl文件的标准模板:
- match 属性的值是 XPath 表达式(举例,match="/" 定义整个文档,即把此模板与 XML 源文档的根相联系
<?xml version="1.0" encoding="ISO-8859-1"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="/"> <html> <body> <p><xsl:value-of select="catalog/cd/title"/></p> </body> </html> </xsl:template> </xsl:stylesheet>
xsl结果过滤
通过在 <xsl:for-each> 元素中添加一个选择属性的判别式,我们也可以过滤从 XML 文件输出的结果。
<xsl:for-each select="catalog/cd[artist='Bob Dylan']
">
合法的过滤运算符:
- = (等于)
- != (不等于)
- < (小于)
- > (大于)
在何处放置排序信息
如需对结果进行排序,只要简单地在 XSL 文件中的 <xsl:for-each> 元素内部添加一个 <xsl:sort> 元素:
<xsl:for-each select="catalog/cd">
<xsl:sort select="artist"/>
<tr>
<td><xsl:value-of select="title"/></td>
<td><xsl:value-of select="artist"/></td>
</tr>
</xsl:for-each>
<script type="text/javascript"> // Load XML var xml = new ActiveXObject("Microsoft.XMLDOM") xml.async = false xml.load("cdcatalog.xml") // Load XSL var xsl = new ActiveXObject("Microsoft.XMLDOM") xsl.async = false xsl.load("cdcatalog.xsl") // Transform document.write(xml.transformNode(xsl)) </script>
#子节点过滤:book有name子节点,且子节点值等于xdj
<xsl:value-of select="book[name='xdj']"></xsl:value-of>
#节点属性过滤:book有name属性,且属性值等于XDJ
<xsl:value-of select="book[@name='XDJ']"></xsl:value-of>
选取节点
XPath 使用路径表达式在 XML 文档中选取节点。节点是通过沿着路径或者 step 来选取的。
下面列出了最有用的路径表达式:
nodename | 选取此节点的所有子节点。 |
/ | 从根节点选取。 |
// | 从匹配选择的当前节点选择文档中的节点,而不考虑它们的位置。 |
. | 选取当前节点。 |
.. | 选取当前节点的父节点。 |
@ | 选取属性。 |
在下面的表格中,我们列出了带有谓语的一些路径表达式,以及表达式的结果:
/bookstore/book[1] | 选取属于 bookstore 子元素的第一个 book 元素。 |
/bookstore/book[last()] | 选取属于 bookstore 子元素的最后一个 book 元素。 |
/bookstore/book[last()-1] | 选取属于 bookstore 子元素的倒数第二个 book 元素。 |
/bookstore/book[position()<3] | 选取最前面的两个属于 bookstore 元素的子元素的 book 元素。 |
//title[@lang] | 选取所有拥有名为 lang 的属性的 title 元素。 |
//title[@lang='eng'] | 选取所有 title 元素,且这些元素拥有值为 eng 的 lang 属性。 |
/bookstore/book[price>35.00] | 选取 bookstore 元素的所有 book 元素,且其中的 price 元素的值须大于 35.00。 |
/bookstore/book[price>35.00]/title | 选取 bookstore 元素中的 book 元素的所有 title 元素,且其中的 price 元素的值须大于 35.00。 |
实例
在下面的表格中,我们列出了一些路径表达式,以及这些表达式的结果:
/bookstore/* | 选取 bookstore 元素的所有子元素。 |
//* | 选取文档中的所有元素。 |
//title[@*] | 选取所有带有属性的 title 元素。 |
在下面的表格中,我们列出了一些路径表达式,以及这些表达式的结果:
//book/title | //book/price | 选取 book 元素的所有 title 和 price 元素。 |
//title | //price | 选取文档中的所有 title 和 price 元素。 |
/bookstore/book/title | //price | 选取属于 bookstore 元素的 book 元素的所有 title 元素,以及文档中所有的 price 元素。 |
XPath 运算符
下面列出了可用在 XPath 表达式中的运算符:
运算符 描述 实例 返回值
| 计算两个节点集 //book | //cd 返回所有拥有 book 和 cd 元素的节点集
div 除法 8 div 4 =2
or 或 price=9.80 or price=9.70
and 与 price>9.00 and price<9.90
mod 计算除法的余数 5 mod 2=1
var xml = new ActiveXObject("Microsoft.XMLDOM"); xml.async = false; xml.load("a.xml"); //price节点的个数 alert( xml.selectNodes("//price").length);//2 //第二个price节点的文本 alert( xml.selectNodes("//price")[1].text);//29.99 //author节点带有age属性的文本 alert( xml.selectNodes("//author[@age]")[0].text);//意大利人 //title节点存在lang属性,且lang属性=en alert( xml.selectNodes("//title[@lang='en']")[0].text);//哈利波特 //book含有Test节点的title的文本 alert( xml.selectNodes("//book[Test]/title")[0].text);//哈利波特 xml数据: <?xml version="1.0" encoding="GBK"?> <bookstore> <book category="COOKING"> <title>意大利人</title> <author age="34">达芬奇</author> <year>2005</year> <price>30.00</price> </book> <book category="CHILDREN"> <title lang="en">哈利波特</title> <author>罗琳</author> <year>2005</year> <price>29.99</price> <Test>测试内容</Test> </book> </bookstore>
/* * 将字符串转化成XMLDom对象 * @param xmlStr xml字符串 */ function createXmlDOM(xmlStr){ var xmlDom = null; if (window.DOMParser){//FF,Chrome 等 xmlDom=new DOMParser().parseFromString(xmlStr,"text/xml"); }else{//IE only xmlDom=new ActiveXObject("Microsoft.XMLDOM"); xmlDom.async="false"; xmlDom.loadXML(xmlStr); } return xmlDom; } var xml = createXmlDOM("<?xml version=\"1.0\" encoding=\"UTF-8\"?><book><title>哈利波特</title></book>"); //原生态写法 IE,chrome,ff【推荐】 alert(xml.getElementsByTagName("title")[0].text);//哈利波特 alert("userName = " + xml.getElementsByTagName("title")[0].childNodes[0].nodeValue);//哈利波特 //IE only [不推荐] //alert( xml.selectNodes("//book/title")[0].text);//哈利波特 IE only
说明:很多内容都是摘自w3school.com
end
xml中直接使用&符号:&
例如:?name=tom&age=12 需要写成 ?name=tom&age=12
愤怒的coder
发表评论
-
Flex获取当前地址栏和URL参数
2013-03-11 11:33 3124var query:String=ExternalInter ... -
获取行政区划地名地址的简称
2012-12-27 09:33 2269做地图相关的项目就会涉及到地名地址的查询,那么查询 ... -
jsURL编码
2012-11-27 11:03 1148js 对文字进行编码涉及3个函数:escape,encod ... -
scrollHeight、clientHeight ,offsetHeight 区别
2012-11-22 10:00 1546我认为我们想要两个东西: 一是 scroll ... -
图片延迟加载(兼容IE&FF&Chrome)
2012-11-17 14:02 2683经常看到京东,团购有 ... -
获取FireFox下的event
2012-11-14 17:28 930/* 获取FF下当前事件对象 */ function ... -
让title动起来
2012-11-12 17:47 617function newTitle() { v ... -
JS读取本地文件夹和图片异步加载(图片LazyLoad)
2012-11-01 11:52 8688/* 说明:当某一个页面拥有非常多的图片或者使用图片列 ... -
javascript 理论片
2012-10-30 15:12 1547/* 前缀规范 每个局部变量都需要有一个类型前 ... -
获取DOM对象的当前(current)样式
2012-09-28 17:19 3431/** *获取页面某个元素当前的样式:(譬如获取当前I ... -
javaweb系统的枚举设计
2012-09-24 15:42 3761/* 组件目的: 在java-web程序的研发过程 ... -
JS获取客户端浏览器基本信息
2012-09-12 15:33 1650/* * 工具类获取: * 客户端浏览器的类型,版本 ... -
常用脚本
2012-09-03 18:28 970换行: -word-wrap:break-word; w ... -
解析xml字符串
2012-08-31 09:08 1044工具方法:createXmlDOM /* * ... -
sortTable组件
2012-08-30 11:28 1250#sortTable.js /* 说明 ... -
js获取body或屏幕的宽度大集合
2012-08-22 17:10 6190//【转】js获取body或屏幕的宽度大集合 va ... -
XmlDOM 小结
2012-08-10 16:53 1020/* 获取节点: - xmlDoc.getElem ... -
正则表达式解释
2012-08-06 14:39 1156/*正则赏析*/ var rep = /<!-- ... -
xml简单应用
2012-07-26 16:24 1011/* * 将字符串转化成XMLDom对象 * @para ... -
脚本alert打印对象结构
2012-07-19 15:36 4517在带有js项目开发中: 1 要属性新的js类库 2 了解某 ...
相关推荐
1 docbook-xsl-ns-1.75.2.zip解压到D:\docbook ...2 环境变量Path中增加 D:\docbook\xsltproc\bin 3 新建一个bat,内容为:xsltproc -o book_cn.html D:\docbook\docbook-xsl-ns-1.75.2\html\docbook.xsl book_cn.xml
提供一组功能(称为模板和变量)的库(例如els-common.xsl ):它们需要特定的名称空间前缀,因此可以将它们称为与其他任何XSLT的widthout冲突。 实现完全特定处理的库(例如cals2html.xsl ):它们需要特定的初始...
在copy-of结果树时非常方便(在本例中,它是在变量中定义的 html 代码)。 调用栈:apply-template/call-template/apply-imports 调用栈 内部调用:模板的内部调用列表,无论出于何种原因都无法在文档中显示。 例如...
本文实例讲述了javascript执行上下文、变量对象。分享给大家供大家参考,具体如下: 突然看到一篇远在2010年的老文,作者以章节的形式向我们介绍了ECMA-262-3的部分内容,主要涉及到执行上下文、变量对象、作用域、...
属性 参数类型 默认值 可用值 变量值 参数说明 outputQty - 10 自定义值 - 输出的项目数量,如果开启分页,则此参数为分页大小值 parentId - 2 自定义值,支持数组 @RequestInt_Id 父栏目ID titleLength - 60 ...
cb_5和cb_6改变文件名变量ls_filename , ls_xslfilename ,以反映不同的目录上面使用 以下是运行时会发生什么变化的范例: 当您打开工作表, XML解析器: XML解析器 加载文件:在这里,您可以只加载一个...
15.3 使用具有XSL样式表的可更新ResultSet 15.4 小结 第16章 使用JDBC驱动的JavaMail API 16.1 使用电子邮件协议 16.1.1 MIME协议 16.1.2 SMTP协议 16.1.3 POP协议 16.2 使用JavaMail API 16.3 使用JDBC...
15.3 使用具有XSL样式表的可更新ResultSet 15.4 小结 第16章 使用JDBC驱动的JavaMail API 16.1 使用电子邮件协议 16.1.1 MIME协议 16.1.2 SMTP协议 16.1.3 POP协议 16.2 使用JavaMail API 16.3 使用JDBC...
15.3 使用具有XSL样式表的可更新ResultSet 15.4 小结 第16章 使用JDBC驱动的JavaMail API 16.1 使用电子邮件协议 16.1.1 MIME协议 16.1.2 SMTP协议 16.1.3 POP协议 16.2 使用JavaMail API 16.3 使用JDBC...
15.3 使用具有XSL样式表的可更新ResultSet 15.4 小结 第16章 使用JDBC驱动的JavaMail API 16.1 使用电子邮件协议 16.1.1 MIME协议 16.1.2 SMTP协议 16.1.3 POP协议 16.2 使用JavaMail API 16.3 使用JDBC...
python可以使用xlrd读excel,使用xlwt写excel,但是如果要把数据写入已存在的excel,需要另外一个库xlutils配合使用. 大概思路: 1、用xlrd.open_workbook打开已有的xsl文件 注意添加参数formatting_info=True,得以...
在xsl程序调试的时候,会使用很多的属性。并且会自己定义一些变量。但是两个标准的命名空间支持的,元素和属性,以及对自定义变量的支持是不一致的。
◆介绍用于存储和操作数据的变量的概念 ◆讨论用于读写数据的文件和输入/输出 ◆总结常被忽视的python功能 ◆深入研究如何为模块和程序编写测试 ◆介绍如何使用python编写gui ◆着重介绍xml、html、xsl和相关技术 ◆...
另外,X3D-EDIT里面那几个XSL转换的样式文件路径还有些问题,暂时不能正 常使用。 注:这个软件虽然比较简单,但对我们学习X3D确实有莫大的帮助。它可以帮 我们了解整个X3D的应用体系,以及具体的使用方法,最...
◆介绍用于存储和操作数据的变量的概念, ◆讨论用于读写数据的文件和输入/输出, ◆总结常被忽视的python功能, ◆深入研究如何为模块和程序编写测试, ◆介绍如何使用python编写gui, ◆着重介绍xml、html、xsl和相关...
13.1.xsl 使用XSLT将XML转换为HTML 13.2.xml 一个雇员列表xml文件 13.2.xsl 一个XSL样式表的例子 13.3.htm Internet Explorer 浏览器中XML的应用 13.4.htm 直接对XML文档...
强变量和弱变量 500 静态联编和动态联编 500 实例 500 内容总结 503 独立实践 504 第二十六章:JavaScript基础 505 学习目标 505 基本结构 506 JavaScript代码的加入 506 基本数据类型 506 常量 507 表达式和运算符 ...