xsl 应用实例
来源:互联网 发布:mac上的开发工具 编辑:程序博客网 时间:2024/06/11 10:50
首先,xml文件
<锅炉>
<生产制造>
<层次1>
<产品编号>P0807-XC</产品编号>
<产品名称>燃油气锅炉</产品名称>
<产品型号>Model1-XC</产品型号>
<发卡日期>2008-2-26 15:12:47</发卡日期>
<监检报告编号>Report-XC-004</监检报告编号>
<监检单位>山东省特检院-XC</监检单位>
<卡号>30d345e6c005978c</卡号>
<企业id>1</企业id>
<设计图号>D1</设计图号>
<设计许可号>J1</设计许可号>
<是否发卡>1</是否发卡>
<完成日期>2008-2-21 0:00:00</完成日期>
<制造厂家></制造厂家>
<制造许可证编号>M1</制造许可证编号>
<质保书编号>XC-007</质保书编号>
</层次1>
</生产制造>
</锅炉>
上述为获得的xml的简单示例,其中各个节点名称都是动态的,所以在xsl中不能写死。
下面贴出还算过得去的xslt文件
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:template match="//*">
<HTML>
<head>
</head>
<BODY>
<FONT face="Verdana" size="2">
<TABLE cellspacing="0" cellpadding="0">
<tr>
<td>
<xsl:variable name="product" select="name()"/>
<xsl:for-each select ="./*">
<xsl:variable name="process" select="name()"/>
<xsl:for-each select="././*">
<xsl:variable name="record" select="name()"/>
<table cellspacing="0" cellpadding="0" width="600px" bordercolorlight="#6699FF" bordercolordark="#FFFFFF">
<TR bgcolor="#99ccff">
<td class="info" Width="200px">
设备名称: <B>
<xsl:value-of select="$product"/>
</B>
</td>
<td Width="200px">
环节名称: <B>
<xsl:value-of select="$process"/>
</B>
</td>
<td Width="200px">
记录号: <B>
<xsl:value-of select="$record"/>
</B>
</td>
</TR>
</table>
<table bgcolor="#ccffcc" cellspacing="0" cellpadding="0" width="600px" border="1" bordercolorlight="#6699FF" bordercolordark="#FFFFFF" >
<xsl:for-each select="./././*">
<xsl:variable name="nname" select="name()"/>
<TR>
<TD class="info" Width="200px">
<xsl:value-of select="name()"/>:
</TD>
<td class="info" width="400px">
<B>
<xsl:value-of select="."/>
<xsl:text disable-output-escaping="yes">&nbsp;</xsl:text>
</B>
</td>
</TR>
</xsl:for-each>
</table>
</xsl:for-each>
</xsl:for-each>
</td>
</tr>
</TABLE>
</FONT>
</BODY>
</HTML>
</xsl:template>
</xsl:stylesheet>
<xsl:template match="//*">中的"//*"表示匹配xml文档的根节点下的所有节点,这里因为要获取根节点的名称,所以不能直接匹配"/"(全文档)
<xsl:variable name="product" select="name()"/>
定义了变量product 用于存放根节点名称。select="name()"只能用于取得当前匹配层的节点名称,这点需要注意。再者,variable变量只能定义一次值,不能改变其值,且作用域限于当前template。
<xsl:for-each select ="./*"> 循环操作 select指定循环的节点匹配。
select="./*" 表示循环下一层节点。./表示在template指定的层数下移一层,*表示所有节点。
其中指定select=value 时 value可有多种表达方式。可以指定为具体的节点名称,如 select = "生产制造“ 如果能够确定节点名称的话。
也可以加入判定条件,如 select = "./*[name()=生产制造" 或者 select="./*[name()=$product]" 这里$product是前面定义的变量。$变量名是使用变量的方法。
<xsl:value-of select="$record"/> 这里是输出该节点的内容,或者变量的值。 当你一层层扒开xml的外衣的时候,最终取得果实的就是他了。
<xsl:value-of select="nodeName"/> 表示输出接点名为nodeName的节点的ContentValue。当然也可以输出属性,属性用select="@属性名"来指定,但是这里的属性为当前层的节点的属性,如果在循环内部,即为循环的节点的属性。输出属性的时候也可以指定属性的层,如select = "*/@name"表示输出循环下每一层的name属性的值。
基本上现在掌握的也就这样吧,xslt还是很强大的,以后有机会慢慢学习吧。
- XSL应用实例
- XSL应用实例
- xsl 应用实例
- xsl实例
- xsl实例
- xsl+xml简单实例
- XML+XSL 实例
- xsl实例说明
- XSL的实例
- json+xml+xsl应用
- \t\t【官方实例】How to 应用c#完成XSL转换xml
- 用几个实例学习XSL
- xsl:script与函数调用输出xsl:eval应用示例
- XSL 语言入门4 -- xsl实际项目应用示例1
- XSL 语言入门5 -- xsl实际项目应用示例2
- 用xml和xsl做网页实例
- XSL
- xsl
- xp文件夹加密及文件加密应用详解
- 无废话C#设计模式之三:Abstract Factory
- .NET中的抽象工厂
- Struts的工作流程
- 《武林外传》之(零) 管理演绎
- xsl 应用实例
- 修改密码
- sqlserver数据还原或者转移后,出现孤立帐号问题的解决方案,表更改用户为DBO
- sql存储过程的 TOP 后跟变量报错的解决办法
- 数据库连接
- Java与.Net环境下RSA加密解密交互不成功的问题解决
- 乱弹之性能调优,程序设计和技术管理
- test
- 我的商业思想的十大变化(原作者: Rob May 原文 译者: ewine)