xslt 模板调用示例

本文介绍了XSLT模板的基本概念,并通过实例展示了如何调用XSLT样式表进行XML到HTML的转换,包括设置编码、边框和输出格式等关键步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

<?xml version="1.0" encoding="GB2312"?>
<?xml-stylesheet type="text/xsl" href="newstylesheetTemplate.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="TPID2">6666</para>
            <para name="BBB2">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="3">
        <head>
            <para name="VLANID"></para>
            <para name="上行口"></para>
            <para name="类型"></para>
            <para name="属性"></para>
        </head>
            
        <value>
            <cell name="2"></cell>
            <cell name="0/19/0"></cell>
            <cell name="MUX"></cell>
            <cell name="qinq"></cell>
        </value>
        <value>
            <cell name="3"></cell>
            <cell name="0/19/0"></cell>
            <cell name="smart"></cell>
            <cell name="stacking"></cell>
        </value>
            
    </paraset>
</root>



<?xml version="1.0" encoding="GB2312"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
    <xsl:output method="html"/>
<!--根模板-->
    <xsl:template match="/">
        <HTML>
            <HEAD>
                <TITLE>个人简历</TITLE>
            </HEAD>
            <BODY>
                <TABLE border="1" cellspacing="0">
                    <xsl:apply-templates select="root/paraset[@name='全局参数']"/>
                    <xsl:apply-templates select="root/paraset[@name='SNMP']"/>
                    <xsl:apply-templates select="root/paraset[@name='VLAN']"/>
                </TABLE>

            </BODY>
        </HTML>
    </xsl:template>
    <xsl:template match="paraset[@name='全局参数']">
        
        <xsl:choose>             <!-- 显示paras/para的值 -->
            <xsl:when test="count(paras)>0">
                <xsl:call-template name="show_paras">
                    <xsl:with-param name="catogary" select="@name"/>
                </xsl:call-template>
            </xsl:when>
        </xsl:choose>   
    </xsl:template>
    
    <xsl:template match="paraset[@name='SNMP']">
        <xsl:call-template name="showpara">
            <xsl:with-param name="catogary" select="@name"/>
        </xsl:call-template>
              
    </xsl:template>
    
    <xsl:template  name="show_paras" match="paras">
        <xsl:param name="catogary" />
        <tr>
            <td>
                <xsl:attribute name="rowspan">
                    <xsl:value-of select="@rowspan"/>
                </xsl:attribute>
                <xsl:value-of select="$catogary"/>
            </td>
            <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>
        </tr>
        <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>
          
                            <!-- 显示para的值 -->
        <xsl:choose>
                                 <!-- 显示paras/para的值 -->
            <xsl:when test="count(paras)>0">
                <tr>  
                    <xsl:for-each select="paras/para">
                        <td >
                            <xsl:value-of select="."/>
                        </td>
                    </xsl:for-each>
                </tr>

            </xsl:when>  
        </xsl:choose>
    </xsl:template>
    
    <xsl:template name="showpara" match="para">
        <xsl:param name="catogary" />
        <tr>
            <td>
                <xsl:attribute name="rowspan">
                    <xsl:value-of select="@rowspan"/>
                </xsl:attribute>
                <xsl:value-of select="$catogary"/>
            </td>
            <xsl:for-each select="para">
                <td>
                    <xsl:value-of select="@name"/>
                </td>
            </xsl:for-each>
        </tr>
        <xsl:choose>
                                 <!-- 显示paras/para的值 -->
            <xsl:when test="string-length(.)>0">
                <tr>
                    <xsl:for-each select="para">
                        <td >
                            <xsl:value-of select="."/>
                        </td>
                    </xsl:for-each>
                    
                </tr>           
            </xsl:when>
            </xsl:choose>
            
        </xsl:template>
<!-- vlan多行校对模板 -->
        <xsl:template match="paraset[@name='VLAN']">
            <xsl:choose>             <!-- 显示paras/para的值 -->
                <xsl:when test="count(head)>0">
                    <tr>
                        <TD>
                            <xsl:attribute name="rowspan">
                                <xsl:value-of select="@rowspan"/>
                            </xsl:attribute>
                            <xsl:value-of select="@name"/>
                        </TD>
                        <xsl:for-each select="head/para">
                            <TD>
                                <xsl:value-of  select="@name"/>
                            </TD>
                        </xsl:for-each>
                    </tr>
                </xsl:when>
            </xsl:choose>
        
        <!-- 显示para的值 -->
            <xsl:choose>             <!-- 显示paras/para的值 -->
                <xsl:when test="count(value)>0">
                    <xsl:for-each select="value">
                        <tr>
                            <xsl:for-each select="cell">
                                <td>
                                    <xsl:value-of select="@name"/>
                                </td>
                            </xsl:for-each>
                        </tr>
                    </xsl:for-each>
                </xsl:when> 
            </xsl:choose>
        
            <BR/>
        </xsl:template>

    </xsl:stylesheet>




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值