📄 xml技术系列讲座(3)xml的显示——xsl样式单(上) - fanqiang_com.htm
字号:
<TBODY>
<TR>
<TD class=a14><B>三、XSL文档标准格式</B></TD></TR></TBODY></TABLE>
<TABLE width=620 align=center>
<TBODY>
<TR>
<TD class=a14>XSL文档的标准格式如下:</TD></TR></TBODY></TABLE>
<TABLE width=620 align=center>
<TBODY>
<TR>
<TD class=a14><xsl:stylesheet
xmlns:xsl=“http://www.w3.org/TR/WD-xsl”></TD></TR></TBODY></TABLE>
<TABLE width=620 align=center>
<TBODY>
<TR>
<TD class=a14>template rule i</TD></TR></TBODY></TABLE>
<TABLE width=620 align=center>
<TBODY>
<TR>
<TD class=a14>output template</TD></TR></TBODY></TABLE>
<TABLE width=620 align=center>
<TBODY>
<TR>
<TD class=a14></xsl:stylesheet></TD></TR></TBODY></TABLE>
<TABLE width=620 align=center>
<TBODY>
<TR>
<TD
class=a14>XSL文档本身是格式良好的XML文档,所以在书写时要注意标签的匹配问题。<xsl:stylesheet>既是XSL的声明语句,也是根元素,必须位于文件的首部。通常也要利用xmlns属性指明XSL的名称空间。样式单中所有的模板规则都由标签<xsl:temlplate>标明。模板规则可以说明处理的对象(元素/属性)、处理的方式或是转换的结果。此时,我们可以把该标签类似地理解为编程语言中函数的概念。</TD></TR></TBODY></TABLE>
<TABLE width=620 align=center>
<TBODY>
<TR>
<TD class=a14><B>四、XSL的语法结构</B></TD></TR></TBODY></TABLE>
<TABLE width=620 align=center>
<TBODY>
<TR>
<TD
class=a14>XSL的逻辑语法结构包括循环和条件判断。这两种结构使用户能够灵活地书写转换规则。循环判断是通过<xsl:for-each>元素实现的,它的可选属性包括select和order-by。循环结构能够遍历整个结果集合,而不必针对每一条结果都单独书写转换规则。它的标准语法格式为:</TD></TR></TBODY></TABLE>
<TABLE width=620 align=center>
<TBODY>
<TR>
<TD class=a14><xsl:for-each select=“pattern”
order-by=“patternlist”></TD></TR></TBODY></TABLE>
<TABLE width=620 align=center>
<TBODY>
<TR>
<TD class=a14>......</TD></TR></TBODY></TABLE>
<TABLE width=620 align=center>
<TBODY>
<TR>
<TD class=a14></xsl:for-each></TD></TR></TBODY></TABLE>
<TABLE width=620 align=center>
<TBODY>
<TR>
<TD
class=a14>条件判断结构分为if语句和Case语句两种形式。if语句是简单地对条件进行判断,结果为真就执行条件内部的规则,因此可以把if条件与简单的布尔表达式联合使用。下面这个例子就是对薪水超过100万元的职员输出“Overpaid
employee”信息:</TD></TR></TBODY></TABLE>
<TABLE width=620 align=center>
<TBODY>
<TR>
<TD class=a14><xsl:if match=“.[Salary $gt$
1000000]”></TD></TR></TBODY></TABLE>
<TABLE width=620 align=center>
<TBODY>
<TR>
<TD class=a14>Overpaid employee</TD></TR></TBODY></TABLE>
<TABLE width=620 align=center>
<TBODY>
<TR>
<TD class=a14></xsl:if></TD></TR></TBODY></TABLE>
<TABLE width=620 align=center>
<TBODY>
<TR>
<TD
class=a14>Case语句是对多种情况的分支判断。该语句包括<xsl:choose>、<xsl:when>和<xsl:otherwise>三个元素。下面的例子是对薪水不足1万元的职员输出“No
tax”,对超过5万元的职员输出“High tax rate”,对介于其间的职员输出“Normal tax
rate”信息:</TD></TR></TBODY></TABLE>
<TABLE width=620 align=center>
<TBODY>
<TR>
<TD class=a14><xsl:choose></TD></TR></TBODY></TABLE>
<TABLE width=620 align=center>
<TBODY>
<TR>
<TD class=a14><xsl:when match=“.[Salary $lt$ 10000]”>
</TD></TR></TBODY></TABLE>
<TABLE width=620 align=center>
<TBODY>
<TR>
<TD class=a14>No tax </xsl:when></TD></TR></TBODY></TABLE>
<TABLE width=620 align=center>
<TBODY>
<TR>
<TD class=a14><xsl:when match=“.[Salary $gt$ 50000]”>
</TD></TR></TBODY></TABLE>
<TABLE width=620 align=center>
<TBODY>
<TR>
<TD class=a14>High tax rate
</xsl:when></TD></TR></TBODY></TABLE>
<TABLE width=620 align=center>
<TBODY>
<TR>
<TD class=a14><xsl:otherwise> Normal tax rate
</xsl:otherwise></TD></TR></TBODY></TABLE>
<TABLE width=620 align=center>
<TBODY>
<TR>
<TD class=a14></xsl:choose></TD></TR></TBODY></TABLE>
<TABLE width=620 align=center>
<TBODY>
<TR>
<TD class=a14><B>五、XSL的模板规则</B></TD></TR></TBODY></TABLE>
<TABLE width=620 align=center>
<TBODY>
<TR>
<TD
class=a14><xsl:template>标签内的文本内容描述了转换结果的形式,称为输出模板。属性match的取值把模板规则与指定的元素或属性相比较,只有匹配的DOM节点才会被处理,其余的节点将被忽略。整个过程中最先匹配的是树的根节点,根节点用“/”表示:</TD></TR></TBODY></TABLE>
<TABLE width=620 align=center>
<TBODY>
<TR>
<TD class=a14><xsl:template
match=“/”></TD></TR></TBODY></TABLE>
<TABLE width=620 align=center>
<TBODY>
<TR>
<TD class=a14>output template for root
element</TD></TR></TBODY></TABLE>
<TABLE width=620 align=center>
<TBODY>
<TR>
<TD class=a14></xsl:template></TD></TR></TBODY></TABLE>
<TABLE width=620 align=center>
<TBODY>
<TR>
<TD
class=a14>然后匹配其他节点,此时,只要在引号中指明要处理的元素对象名称即可。如果在引号中出现的是“*”,那么表示该规则适用于所有的未单独指定处理的元素节点。比如下例中的第二个模板就表示要处理除<Employee>元素之外的所有节点:</TD></TR></TBODY></TABLE>
<TABLE width=620 align=center>
<TBODY>
<TR>
<TD class=a14><xsl:template
match=“Employee”></TD></TR></TBODY></TABLE>
<TABLE width=620 align=center>
<TBODY>
<TR>
<TD class=a14>output template</TD></TR></TBODY></TABLE>
<TABLE width=620 align=center>
<TBODY>
<TR>
<TD class=a14></xsl:template></TD></TR></TBODY></TABLE>
<TABLE width=620 align=center>
<TBODY>
<TR>
<TD class=a14> </TD></TR></TBODY></TABLE>
<TABLE width=620 align=center>
<TBODY>
<TR>
<TD class=a14><xsl:template
match=“*”></TD></TR></TBODY></TABLE>
<TABLE width=620 align=center>
<TBODY>
<TR>
<TD class=a14>output template</TD></TR></TBODY></TABLE>
<TABLE width=620 align=center>
<TBODY>
<TR>
<TD class=a14></xsl:template></TD></TR></TBODY></TABLE>
<TABLE width=620 align=center>
<TBODY>
<TR>
<TD
class=a14>此外,XSL中还可以使用路径指示符来指定一些特殊位置的元素与模板相匹配。“//”代表任意深度位置,如<xsl:template
match=“//Employee”>用来匹配文档中任何位置的<Employee>元素;而如果是<xsl:template
match=“Employee//Name”>,则表明是匹配<Employee>元素的后继节点中所有<Name>元素。另外一个路径指示符是“/”,表示直接的父子节点关系。将刚才例子中的“//”换为“/”,就意味着匹配的是<Employee>元素子节点中的<Name>元素。</TD></TR></TBODY></TABLE>
<TABLE width=620 align=center>
<TBODY>
<TR>
<TD
class=a14>很显然,某些树节点在XSL中可能会对应多个模板,在这种情况下,只有最后一个对应模板会生效,前面的模板规则都会被XSL处理器忽略掉。</TD></TR></TBODY></TABLE><!--HTML_END--><BR><!-- 正文end --><BR>(http://www.fanqiang.com)<BR></FONT><BR><FONT
color=#999999><SMALL></SMALL></FONT><BR></FONT></TD></TR></TBODY></TABLE><BR></TD></TR></TBODY></TABLE>
<TABLE cellSpacing=0 cellPadding=0 width=750 border=0>
<TBODY>
<TR>
<TD align=middle width=620>
<TABLE cellSpacing=0 cellPadding=0 width=562 border=0>
<TBODY>
<TR>
<TD width=562>
<TABLE cellSpacing=0 cellPadding=0 width=562 border=0>
<TBODY>
<TR>
<TD></TD></TR>
<TR>
<TD height=10></TD></TR></TBODY></TABLE><!--结束:底部-->
<TABLE width=750 border=0>
<TBODY>
<TR>
<TD width="100%" bgColor=#d09f0d colSpan=5 height=2><IMG
height=1
src="XML技术系列讲座(3)XML的显示——XSL样式单(上) - fanqiang_com.files/c.gif"
width=1></TD></TR>
<TR>
<TD vAlign=top width="100%" colSpan=5 height=40>
<P align=center><FONT color=#ffffff>★ 樊强制作
欢迎分享 ★ </FONT></P></TD></TR></TBODY></TABLE>
<CENTER></CENTER></TR></TBODY></TABLE></TR></TBODY></TABLE></CENTER></BODY></HTML>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -