- 浏览: 460055 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
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 3174var query:String=ExternalInter ... -
获取行政区划地名地址的简称
2012-12-27 09:33 2356做地图相关的项目就会涉及到地名地址的查询,那么查询 ... -
jsURL编码
2012-11-27 11:03 1190js 对文字进行编码涉及3个函数:escape,encod ... -
scrollHeight、clientHeight ,offsetHeight 区别
2012-11-22 10:00 1595我认为我们想要两个东西: 一是 scroll ... -
图片延迟加载(兼容IE&FF&Chrome)
2012-11-17 14:02 2741经常看到京东,团购有 ... -
获取FireFox下的event
2012-11-14 17:28 994/* 获取FF下当前事件对象 */ function ... -
让title动起来
2012-11-12 17:47 656function newTitle() { v ... -
JS读取本地文件夹和图片异步加载(图片LazyLoad)
2012-11-01 11:52 8760/* 说明:当某一个页面拥有非常多的图片或者使用图片列 ... -
javascript 理论片
2012-10-30 15:12 1592/* 前缀规范 每个局部变量都需要有一个类型前 ... -
获取DOM对象的当前(current)样式
2012-09-28 17:19 3480/** *获取页面某个元素当前的样式:(譬如获取当前I ... -
javaweb系统的枚举设计
2012-09-24 15:42 3840/* 组件目的: 在java-web程序的研发过程 ... -
JS获取客户端浏览器基本信息
2012-09-12 15:33 1755/* * 工具类获取: * 客户端浏览器的类型,版本 ... -
常用脚本
2012-09-03 18:28 1013换行: -word-wrap:break-word; w ... -
解析xml字符串
2012-08-31 09:08 1079工具方法:createXmlDOM /* * ... -
sortTable组件
2012-08-30 11:28 1327#sortTable.js /* 说明 ... -
js获取body或屏幕的宽度大集合
2012-08-22 17:10 6243//【转】js获取body或屏幕的宽度大集合 va ... -
XmlDOM 小结
2012-08-10 16:53 1068/* 获取节点: - xmlDoc.getElem ... -
正则表达式解释
2012-08-06 14:39 1195/*正则赏析*/ var rep = /<!-- ... -
xml简单应用
2012-07-26 16:24 1047/* * 将字符串转化成XMLDom对象 * @para ... -
脚本alert打印对象结构
2012-07-19 15:36 4588在带有js项目开发中: 1 要属性新的js类库 2 了解某 ...
相关推荐
然后使用`<xsl:for-each>`循环遍历这些变量,以执行数组操作。例如: ```xml <xsl:variable name="array1" select="'element1'"/> <xsl:variable name="array2" select="'element2'"/> <xsl:variable name=...
而XSL(eXtensible Stylesheet Language)是用于转换XML文档格式的语言,它通过使用样式表来控制XML数据的呈现方式。XSLT(XSL Transformations)是XSL的一部分,专门用于转换XML文档。在本示例中,我们将深入探讨...
变量(`<xsl:variable>`)和参数(`<xsl:param>`),用于存储和传递值;以及输出元素(如`<xsl:text>`、`<xsl:value-of>`),用于插入文本或节点的值到输出文档中。理解并熟练使用这些元素,能帮助开发者构建出功能...
在示例中,可以看到如何使用XSL指令如`<xsl:value-of>`、`<xsl:apply-templates>`等来生成Java类的框架,包括类名、构造函数、私有变量及对应的setter方法。 3. **执行XSLT处理器**:最后,通过XSLT处理器(如Saxon...
3. **变量与函数**:XSL支持变量和函数的使用,可以存储和操作数据,执行复杂的计算和逻辑判断。 4. **流式处理**:XSLT允许流式处理,即一次处理XML文档的一部分,而不是整个文档,这对于处理大型XML文件非常有用。...
3. **XSL变量与参数**:介绍如何在XSL中声明和使用变量及参数,以实现更灵活的转换逻辑。 4. **XSL函数库**:讲解XSL内置函数的使用,如字符串处理、数值计算和节点操作等。 5. **XPath表达式**:详细解释XPath...
4个jmeter测试报告模板集合 jmeter.results.shanhe.me.xsl jmeter.results.zyanycall.me.xsl jmeter-results-detail-report_30.xsl jmeter-results-report_21.xsl
学习XSL不仅包括理解基本概念,还需要掌握如变量、函数、模板选择、流控制(如条件语句和循环)、以及如何导入和链接其他XSL样式表等高级特性。此外,熟悉XPath的语法和功能对于有效使用XSL至关重要,因为XPath是...
- `<str:variables>`:允许在XSL转换前设置变量,这些变量可以在XSLT模板中使用。 在实际应用中,Jakarta Taglibs XSL 1.0.1可以帮助开发者快速构建XML数据驱动的动态Web应用,减少后端代码的复杂性,提高代码的可...
在“xsl学习”这个主题中,我们主要关注如何使用XSL进行数据转换和呈现。 XML是一种标记语言,常用于存储和传输结构化数据。然而,XML文档本身并不规定如何显示这些数据,这就需要XSL来完成样式化和布局的工作。...
总的来说,这个教程大全涵盖了XSLT的各个方面,包括基本概念、语法、实例、XPath使用和客户端实现,非常适合对XSL感兴趣的初学者系统学习。通过这些资源,你可以建立起对XSLT的深入理解和实践能力。
在实际应用中,你可能还会遇到条件判断(`<xsl:if>`和`<xsl:choose>`)、循环(`<xsl:for-each>`)、变量(`<xsl:variable>`和`<xsl:param>`)以及导入和包含其他样式表(`<xsl:import>`和`<xsl:include>`)等功能。...
在Web开发中,XML和XSL的结合使用对于数据交换、内容重用和跨平台兼容性至关重要。下面我们将深入探讨这两种技术以及它们如何协同工作。 **XML的基本概念** - **元素和属性**:XML文档由元素构成,元素可以通过属性...
此外,XSL还提供了更高级的功能,如条件语句(`<xsl:if>`)、循环(`<xsl:for-each>`)、模板调用(`<xsl:call-template>`)以及变量和函数,可以实现复杂的转换逻辑。通过熟练掌握XML和XSL,开发者能够创建出结构...
3. **XSLT的语法**:介绍模板规则、选择符、模式匹配、变量和参数的使用,以及如何控制流结构(如if、for-each等)。 4. **XPath的详解**:讲解XPath表达式的构造,包括节点类型(元素、属性、文本等)、路径表达式...
4. **XSL样式表结构**:包括导入、包含、模板、变量、模式和函数等概念。 5. **数据转换**:理解如何使用XSLT将XML数据转换为HTML,以供浏览器显示,或其他格式,如PDF。 6. **DOM(Document Object Model)**:XML...
XSLT的核心概念包括模板、模式匹配、变量和参数、以及各种控制流指令,如`for-each`、`if`和`choose`。 XSL-FO(XSL-FO.doc)是XSL的一个部分,用于描述文档的呈现格式,如页面布局、字体、颜色和列表样式。它提供...
它包括了转换规则的定义、模板匹配、选择节点、变量和参数的使用等。XSLT的核心概念,如模板、模式匹配和流式处理,都在其中得到详尽解释。理解这些内容对于编写高效且可维护的XSLT样式表至关重要。 3. **XSLT标准...
用户可以通过查阅此文件快速掌握XSL的关键概念,例如选择符、模板、变量、函数等。 2. **XSL学习.doc**:可能是作者编写的详细教程或笔记,涵盖XSL的高级特性,如XPath表达式、模式匹配、导入导出、命名空间、样式...
在实践中,我们需要对XSLT的工作原理有一定的了解,包括选择符(XPath)、模式匹配、模板规则和变量等概念。此外,熟悉XML和DocBook的语法规则是必不可少的,因为XSLT是基于XML的,并且直接操作XML文档的结构。 ...