当前位置: 首页 > 图文教程 > XML家族 > XML > 选择模式 - XSL教程 - 2

XML
XML简易教程之四
XML与HTML的结合(上)
XML与HTML的结合(下)
XML入门的常见问题(一)
XML入门的常见问题(二)
XMLHTTP资料
什么是XML
什么是 XML Web Service
XML正在接管Web服务 成为SOA的基础
怎么样在网页上读取远程xml的数据
XML教程—编写结构完整的XML文档
读写xml文件的2个小函数
XML文档的基本操作
初学者如何开发出一个高质量的J2EE系统
优化 JavaScript 代码
自动更新程序的设计框架
使Firefox对XML的处理兼容IE的节点处理方法
WML学习之四 锚和任务
WML学习之五 显示表单
WML学习之六 事件

XML 中的 选择模式 - XSL教程 - 2


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2010-01-10   浏览: 29 ::
收藏到网摘: n/a

什么是选择模式
选择模式语句将数据从XML中提取出来,是一种简单获得数据的方法,这几个标记都有一个select属性,选取XML中特定的结点名的数据
注意,每个xsl文件都需要导入xsl的命名空间,http://www.w3.org/TR/WD-xsl,例如在xml头声明之后加入:<p xmlns:xsl="http://www.w3.org/TR/WD-xsl">
1、<xsl:for-each>
这个语句是逐个(select)选择某条件,应用条件。例如,有如下数据库的用户列表:
<?xml version="1.0" encoding="GB2312"?>
<Users>
<User>
<Name>5do8</Name>
<ID>1</ID>
<Professional>.NET,PHP Design</Professional>
</User>
<User>
<Name>cjjer</Name>
<ID>2</ID>
<Professional>DataBase Manage</Professional>
</User>
</Users>
需要只输出全部的Name列,这里有两个问题:
1:需要把每个User节点下面的数据都选择,就是需要定位到User节点,我们使用for-each下面的select。
2:需要选择Name节点,我们使用value-of下面的select。
建立xsl文件:
<?xml version="1.0" encoding="GB2312"?>
<p xmlns:xsl="http://www.w3.org/TR/WD-xsl">
<xsl:for-each select="Users">
<BODY>
<xsl:for-each select="User">
<xsl:value-of select="Name" /><hr />
</xsl:for-each>
</BODY>
</xsl:for-each></p>
保存为UserList_for-each.xsl.在xml文件第二行增加:
<?xml:stylesheet type="text/xsl" href="UserList_for-each.xsl"?>
在IE5+以上的浏览器中效果可见。
for-each还支持排序,order-by语句,它的语法是以分号(;)分隔、作为排序标准的列表。在列表元素前添加加号(+)表示按此标记的内容以升序排序,添加减号(-)表示逆序排序。作为一种简化的表示就是,排序标准列表就是由select规定的标记的子标记的序列,每个标记之间以(;)分隔。
2、<xsl:value-of>
value-of是选择当前节点的值
例如如上的例子中选择了<xsl:value-of select="Name" />就是选择Name节点的值。
xsl:sort排序处理
对于用xsl:for-each或xsl:apply-templates匹配的节点,可使用xsl:sort将所选节点内容进行排序
按大小写排序
<xsl:sort case-order="upper-first" select="@id"/> 以id为关键字按大写优先排序
<xsl:sort case-order="lower-first" select="@id"/> 以id为关键字按小写优先排序
按字母顺序排序
<xsl:sort order="ascending" select="@id "/> 以id为关键字按字母升序排序
<xsl:sort order="descending" select="@id "/> 以id为关键字按字母降序排序
按数据类型排序
<xsl:sort data-type="text" select="@id"/> 以id为关键字按文本类型排序,如对于一组id数据101,2,44,305 来说,排序结果是101,2,305,44
<xsl:sort data-type="number" select="@id"/> 以id为关键字按数据类型排序,上面一组数据的排序结果是2,44,101,305
另外,还有一种指定排序的方法,就是在前面学生花名册例中所使用的order-by: <xsl:for-each select="student" order-by="name"> 也可使得输出学生时按名字排序。
3、<xsl:xsl:apply-templates>
xsl:apply-templates是应用已经定义的模板
例如:<xsl:apply-template select="Users/User">……</xsl:apply-template>
如上三者,都有共同的使用方法,就是必须要Select语句选择,关于Select语句的语法,就是XPath,关于XPath的使用规范,将在下一讲中详细描述。