今天我们学习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]:
<?xml version="1.0" encoding="GB2312"?>
<?xml:stylesheet type="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]:
<?xml version="1.0" encoding="GB2312"?>
<HTML xmlns:xsl="http://www.w3.org/TR/WD-xsl">
<HEAD>
<TITLE>XML 技术 @ 【孟宪会之精彩世界】</TITLE>
</HEAD>
<BODY BGCOLOR="#00CC66">
<xsl:for-each select="document">
<xsl:for-each select="resume [$any$ skill='爱好交友']">
<TABLE border="2" cellspacing="1" bordercolor="#6666FF" align="center">
<CAPTION style="font-size: 150%; font-weight: bold">网上美眉简历</CAPTION>
<TR>
<TH>姓名</TH><TD><xsl:value-of select="name"/></TD>
<TH>性别</TH><TD><xsl:value-of select="sex"/></TD>
<TH>生日</TH><TD><xsl:value-of select="birthday"/></TD>
</TR>
<TR>
<TH>技能</TH><TD colspan="5"><xsl:value-of select="skill"/></TD>
</TR>
<TR>
<TH>照片</TH><TD colspan="5"><img src="http://elove.heha.net/javabk1.jpg"/></TD>
</TR>
</TABLE>
</xsl:for-each>
</xsl:for-each>
<div align="center">
<form><input type="button" value="关闭本页" onclick="javascript:window.close()"/>
</form></div>
</BODY>
</HTML>
说明:
1.[ ] ───表示选择条件,只有满足条件的个人简历才被显示;
2.$any$ ──由于每个人有多种技能,故加$any$作为前缀,以使每个人所有技能都能被比较;
3.skill='爱好交友' ──筛选条件
[UseMoney=2][/UseMoney]