今天我们学习XSL的各种运算符,满足编写更大灵活性的XSL样式的要求。
1、运算符与特殊字符
/选择子元素,返回左侧元素的直接子元素;如果“/”位于最左侧表示选择根结点的直接子元素
//递归下降,不论深度,搜索指定的元素;如果位于最左侧表示从根结点出发递归下降搜索指定元素
.表示当前元素
*通配符,选择任意元素,不考虑名字
@取得属性值,作为属性名的前缀
@*通配符,选择任意属性,不考虑名字
:名字作用范围分隔符,将名字作用范围前缀与元素或属性名分隔开来
!*在相关节点上应用指定方法
()*分组,明确指定优先顺序
[]应用过滤样式
[]*下标运算符,用于在集合中指示元素
2、逻辑运算符(比较运算符)
比较运算符可选样式描述
and$and$或&&逻辑与
or$or$或||逻辑或
not()$not$逻辑非
3、关系运算符
=$eq$相等
=$ieq$相等(不区分大小写)
!=$ne$不等
$ine$不等(不区分大小写)
<$lt$小于
$ilt$小于(不区分大小写)
<=$le$小于等于
$ile$小于等于(不区分大小写)
>$gt$大于
$igt$大于(不区分大小写)
>=$ge$大于等于
$ige$大于等于(不区分大小写)
$all$集合运算符,如果集合中所有项目均满足条件则返回“真”
$any$集合运算符,如果集合中任意项目满足条件则返回“真”
|集合运算符,返回两个集合的联合
示例一:
从个人简历中寻找具有具有“爱好交友”爱好的美眉的资料。假设文档结构如下所示[lizi6.xml]:
<?xmlversion="1.0"encoding="GB2312"?>
<?xml:stylesheettype="text/xsl"href="lizi6.xsl"?>
<document>
<resume>
<name>美眉A</name>
<sex>女</sex>
<birthday>2000.1.1</birthday>
<skill>爱好交友</skill>
</resume>
<resume>
<name>美眉B</name>
<sex>女</sex>
<birthday>2000.1.2</birthday>
<skill>爱好上网</skill>
</resume>
</document>
为从以上结构的个人简历中寻找出所有具有“爱好交友”爱好的美眉的资料的XSL文档结构如下[lizi6.xsl]:
<?xmlversion="1.0"encoding="GB2312"?>
<HTMLxmlns:xsl="http://www.w3.org/TR/WD-xsl">
<HEAD>
<TITLE>XML技术@【孟宪会之精彩世界】</TITLE>
</HEAD>
<BODYBGCOLOR="#00CC66">
<xsl:for-eachselect="document">
<xsl:for-eachselect="resume[$any$skill='爱好交友']">
<TABLEborder="2"cellspacing="1"bordercolor="#6666FF"align="center">
<CAPTIONstyle="font-size:150%;font-weight:bold">网上美眉简历</CAPTION>
<TR>
<TH>姓名</TH><TD><xsl:value-ofselect="name"/></TD>
<TH>性别</TH><TD><xsl:value-ofselect="sex"/></TD>
<TH>生日</TH><TD><xsl:value-ofselect="birthday"/></TD>
</TR>
<TR>
<TH>技能</TH><TDcolspan="5"><xsl:value-ofselect="skill"/></TD>
</TR>
<TR>
<TH>照片</TH><TDcolspan="5"><imgsrc="http://elove.heha.net/javabk1.jpg"/></TD>
</TR>
</TABLE>
</xsl:for-each>
</xsl:for-each>
<divalign="center">
<form><inputtype="button"value="关闭本页"onclick="javascript:window.close()"/>
</form></div>
</BODY>
</HTML>
说明:
1.[]───表示选择条件,只有满足条件的个人简历才被显示;
2.$any$──由于每个人有多种技能,故加$any$作为前缀,以使每个人所有技能都能被比较;
3.skill='爱好交友'──筛选条件
[UseMoney=2][/UseMoney]