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