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>


	
				
		
原创粉丝点击