/**
*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 />来进行循环取值。
*
*/
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>