XSL模板与匹配模式

15 篇文章 0 订阅

/**

*1.我认为匹配模式相比选择模式的好处在于匹配模式将元素分得更细致一些,其中某个元素的表现又可以单独做一个模板来进行表现,而只需添加<xsl:apply-template selelct=”name” />来进行链接就可以了。

2.更重要的是最终的模板能够读取xml属性中对应的所有值而不会产生遗漏。例如在xml中存在<skill>数据库</skill><skill>WEB</skill>这样的多个元素,它可以完全读取而不会遗漏。这是它的一个很重要的优点。

3.匹配模式应该是基于循环的机制,即与模板节点匹配的内容元素进行循环取值,因此如果到最后叶子节点元素肯定能取完。每一个模板都遍历与其匹配的值,每个值又调用子模板来遍历其下的所有与子模板匹配的值,长此以往就能遍历出所有的值了。人写这个程序的作用就是控制它们谁遍历谁的逻辑。这有点儿像递归调用。

4.对于一个值的,直接用<xsl:value-of selelct=”class”/>就可以了,对于多个值的则写为<xsl:apply-template select=”q1”/>这样的形式来调用模板,模板中用<xsl:value-of />来进行循环取值。

 XSL模板与匹配模式 - lishirong - The CTO of LiShirong

*

*/

resume.xml

 

<?xml version="1.0" encoding="gb2312"?>

<?xml-stylesheet type="text/xsl" href="resume.xsl"?>

<document>

       <resume>

              <name>校长</name>

              <sex></sex>

              <birthday>1988.3</birthday>

              <skill>数据库</skill>

              <skill>WEB开发</skill>

       </resume>

       <resume>

              <name>小丽</name>

              <sex></sex>

              <birthday>1990.3</birthday>

              <skill>嵌入式开发</skill>

       </resume>

</document>

 

Resume.xsl

 

<?xml version="1.0" encoding="gb2312"?>

<xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl">

       <xsl:template match="/">

              <html>

                     <head>

                            <title>个人简历</title>

                     </head>

                     <body>

                            <xsl:apply-templates select="document/resume"/>

                     </body>

              </html>

       </xsl:template>

      

       <!--简历模板-->

       <xsl:template match="resume">

              <table border="1" cellspacing="0">

                     <caption>个人简历(<xsl:eval>formatIndex(childNumber(this),"I")</xsl:eval>)</caption>

                     <xsl:apply-templates select="name" />

                     <xsl:apply-templates select="sex" />

                     <xsl:apply-templates select="birthday" />

                     <tr />

                     <td>技能</td><td colspan="5">

                            <table cellspacing="0">

                                   <xsl:apply-templates select="skill" />

                            </table>

                     </td>

              </table>

              <br />

       </xsl:template>

      

       <!--姓名模板-->

       <xsl:template match="name">

              <td>姓名</td><td><xsl:value-of /></td>

       </xsl:template>

      

       <!--性别模板-->

       <xsl:template match="sex">

              <td>性别</td>

              <td><xsl:value-of /></td>

       </xsl:template>

      

       <!--生日模板-->

       <xsl:template match="birthday">

              <td>生日</td><td><xsl:value-of /></td>

       </xsl:template>

      

       <!--技能模板-->

       <xsl:template match="skill">

              <!--<td>技能</td><td><xsl:value-of /></td>-->

              <tr><td><xsl:value-of /></td></tr>

       </xsl:template>

      

</xsl:stylesheet>

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值