📄 xml技术系列讲座(4)xml的显示—xsl样式单(下) - fanqiang_com.htm
字号:
<TBODY>
<TR>
<TD class=a14><I><XSL:VALUE-OF
/></I></XSL: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>上述第一个模板与XML文档的根元素相匹配,并对根节点以下的所有<EMPLOYEE>元素应用模板规则。然后,一旦遇到<EMPLOYEE>标签,就插入一个
<P>标签作为空白段落,接着对<NAME>元素和<SALARY>元素分别应用模板规则。最后,经过转换显示的结果是36磅字体的职员名字和用斜体字表示的职员薪水。</P></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><I>1. 路径指示符</I></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>● 当前节点指示符为“.”;</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>● 属性指示符为“@”。</TD></TR></TBODY></TABLE>
<TABLE width=620 align=center>
<TBODY>
<TR>
<TD class=a14>上述“@”表示对指定元素中的某个属性进行匹配,如<XSL:APPLY-TEMPLATES
select="“Employee/@ID”"
/>语句表示对<EMPLOYEE>元素中的<ID>属性应用模板规则。</TD></TR></TBODY></TABLE>
<TABLE width=620 align=center>
<TBODY>
<TR>
<TD class=a14><I>2. 过滤匹配符</I></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>●
子元素存在:即//Employee[Salary]存在,选择含有<SALARY>子元素的所有<EMPLOYEE>元素;</TD></TR></TBODY></TABLE>
<TABLE width=620 align=center>
<TBODY>
<TR>
<TD class=a14>● 子元素取值:即Employee[Salary >
25000],选择含有<SALARY>子元素,且Salary取值大于25000的所有<EMPLOYEE>元素;</TD></TR></TBODY></TABLE>
<TABLE width=620 align=center>
<TBODY>
<TR>
<TD class=a14>● 属性存在:
即Employee[@ID]存在,选择含有<ID>属性的<EMPLOYEE>元素;</TD></TR></TBODY></TABLE>
<TABLE width=620 align=center>
<TBODY>
<TR>
<TD class=a14>● 属性取值: 即Employee[@ID
=“1234”],选择所有属性ID值为1234的<EMPLOYEE>元素。</TD></TR></TBODY></TABLE>
<TABLE width=620 align=center>
<TBODY>
<TR>
<TD class=a14><I>3. 其他扩展过滤</I></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>比较操作符的书写格式和功能如下所示:</TD></TR></TBODY></TABLE>
<TABLE width=620 align=center>
<TBODY>
<TR>
<TD class=a14 align=middle>
<TABLE height=152 width="29%" border=1>
<TBODY>
<TR>
<TD width="50%" height=16>操作符</TD>
<TD width="50%" height=16>功能</TD></TR>
<TR>
<TD width="50%" height=14>$eq$</TD>
<TD width="50%" height=14>等于</TD></TR>
<TR>
<TD width="50%" height=16>$ne$</TD>
<TD width="50%" height=16>不等</TD></TR>
<TR>
<TD width="50%" height=16>$lt$</TD>
<TD width="50%" height=16>小于</TD></TR>
<TR>
<TD width="50%" height=16>$le$</TD>
<TD width="50%" height=16>小于或等于</TD></TR>
<TR>
<TD width="50%" height=16>$gt$</TD>
<TD width="50%" height=16>大于</TD></TR>
<TR>
<TD width="50%" height=16>$ge$</TD>
<TD width="50%"
height=16>大于或等于</TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE>
<TABLE width=620 align=center>
<TBODY>
<TR>
<TD
class=a14>需要说明的是:表格中的操作符在比较字符时对大小写是敏感的,如果要忽略大小写的不同含义,在每个操作符前面加上前缀字母“i”即可,如“$ieq”。</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 align=middle>
<TABLE width="29%" border=1>
<TBODY>
<TR>
<TD width="49%">操作符</TD>
<TD width="51%">功能</TD></TR>
<TR>
<TD width="49%">$and$</TD>
<TD width="51%">逻辑与</TD></TR>
<TR>
<TD width="49%">$or$</TD>
<TD width="51%">逻辑或</TD></TR>
<TR>
<TD width="49%">$not$</TD>
<TD
width="51%">取非</TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE>
<TABLE width=620 align=center>
<TBODY>
<TR>
<TD
class=a14>对过滤的结果可以通过集合索引进行再过滤。例如,Employee[Salary][2]就是选择第2个含有<SALARY>子元素的所有<EMPLOYEE>元素。此外,XSL还提供了集合索引函数供用户使用:index方法表示过滤结果的索引号,end方法表示最后一个过滤结果。使用方法如下所示:</TD></TR></TBODY></TABLE>
<TABLE width=620 align=center>
<TBODY>
<TR>
<TD class=a14>Employee[index() $lt$ 2]</TD></TR></TBODY></TABLE>
<TABLE width=620 align=center>
<TBODY>
<TR>
<TD class=a14>Employee[end()]</TD></TR></TBODY></TABLE>
<TABLE width=620 align=center>
<TBODY>
<TR>
<TD
class=a14>上述第一个表达式的选择结果是<EMPLOYEE>元素的第1和第2个子元素,第二个表达式的选择结果是<EMPLOYEE>元素的最后一个子元素。在缺省状态下,模板规则对元素的匹配顺序是按照节点在XML文档中出现的前后次序排定的。但在特定的应用场合中,可能需要对原有的顺序进行调整,此时需要使用order-by属性。使用方法如下所示:</TD></TR></TBODY></TABLE>
<TABLE width=620 align=center>
<TBODY>
<TR>
<TD class=a14><XSL:APPLY-TEMPLATES select="“//Employee”"
order-by="“+Name”/"></TD></TR></TBODY></TABLE>
<TABLE width=620 align=center>
<TBODY>
<TR>
<TD class=a14><XSL:APPLY-TEMPLATES select="“//Employee”" td
<></TD></TR></TBODY></TABLE>
<TABLE width=620 align=center>
<TBODY>
<TR>
<TD
class=a14>order-by=“number(Salary)”/></TD></TR></TBODY></TABLE>
<TABLE width=620 align=center>
<TBODY>
<TR>
<TD
class=a14>上述第一个例子表示应按姓名的字母升序排列,比如“Bob”应当排在“Tom”之前,而第二个例子则表示按照薪水的多少对职员进行排序。</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技术系列讲座(4)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 + -