xslt 转换例子
来源:互联网 发布:js获取元素name属性值 编辑:程序博客网 时间:2024/06/06 02:05
<?xml version="1.0" encoding="UTF-8"?><!--To change this template, choose Tools | Templatesand open the template in the editor.--><?xml-stylesheet type="text/xsl" href="formnewstylesheet.xsl"?><root> <paraset name="全局参数" rowspan="3"> <paras name="系统参数" colspan="2"> <para name="TPID" opertype="equale">888</para> <para name="BBB" opertype="exist">777,666</para> </paras> <paras name="PON" colspan="2"> <para name="TPID">6666</para> <para name="BBB">5555</para> </paras> </paraset> <paraset name="SNMP" rowspan="2"> <para name="TPID1">1111111111111111</para> <para name="BBB1">2</para> <para name="TPID2">3</para> <para name="BBB2">4</para> </paraset> <paraset name="VLAN" rowspan="2"> <para name="VLANID">1111111111111111</para> <para name="上行口">2</para> <para name="类型">3</para> <para name="属性">4</para> </paraset></root>
转换文件
<?xml version="1.0" encoding="UTF-8"?><!-- Document : newstylesheet.xsl Created on : 2012年2月26日, 上午11:06 Author : Administrator Description: Purpose of transformation follows.--><xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> <xsl:output method="html"/> <!-- TODO customize transformation rules syntax recommendation http://www.w3.org/TR/xslt --> <xsl:template match="/"> <html> <head> <title>newstylesheet.xsl</title> </head> <body> <table border="1"> <xsl:for-each select="root/paraset"> <tr> <!-- 第一列的值是参数 --> <td> <xsl:attribute name="rowspan"> <xsl:value-of select="@rowspan"/> </xsl:attribute> <xsl:value-of select="@name"/> </td> <xsl:choose> <!-- 有paras标签的显示paras名称为标题 --> <xsl:when test="count(paras)>0"> <xsl:for-each select="paras"> <td> <xsl:attribute name="colspan"> <xsl:value-of select="@colspan"/> </xsl:attribute> <xsl:value-of select="@name"/> </td> </xsl:for-each> </xsl:when> <!-- 没有paras的标签显示名称为标题 --> <xsl:otherwise> <xsl:for-each select="para"> <td><xsl:value-of select="@name"/></td> </xsl:for-each> </xsl:otherwise> </xsl:choose> </tr> <!-- 把paras下的para标签名称显示为标题 --> <xsl:choose> <xsl:when test="count(paras)>0"> <tr> <xsl:for-each select="paras/para"> <td ><xsl:value-of select="@name"/></td> </xsl:for-each> </tr> </xsl:when> </xsl:choose> <tr> <!-- 显示para的值 --> <xsl:choose> <!-- 显示paras/para的值 --> <xsl:when test="count(paras)>0"> <xsl:for-each select="paras/para"> <td ><xsl:value-of select="."/></td> </xsl:for-each> </xsl:when> <!-- 显示paras/para的值 --> <xsl:when test="count(paras)=0"> <xsl:for-each select="para"> <td ><xsl:value-of select="."/></td> </xsl:for-each> </xsl:when> </xsl:choose> </tr> </xsl:for-each> </table> </body> </html> </xsl:template></xsl:stylesheet>