XSLT选择模式详解:for-each、value-of与apply-templates用法
本文详细讲解XSLT中的选择模式,包括使用
什么是XSLT选择模式
XSLT(Extensible Stylesheet Language Transformations)的选择模式主要通过带有select属性的标记,将数据从XML文档中提取出来。这是一种结构清晰且简单的数据处理方法。在使用任何XSLT功能前,必须在样式表头声明命名空间。
标准命名空间声明如下:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" indent="yes"/>
</xsl:stylesheet>
注意:早期的教程可能引用http://www.w3.org/TR/WD-xsl,但现代Web开发应严格遵循W3C标准http://www.w3.org/1999/XSL/Transform。
核心选择与处理语句
第1步:使用xsl:for-each遍历节点
假设源XML文件users.xml内容如下:
<?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>
对应的XSL样式表user_list.xsl写法:
<xsl:for-each select="/Users/User">
Name: <xsl:value-of select="Name" />
<br />
</xsl:for-each>
关键点: select属性支持XPath语法,用于精确定位当前上下文下的子节点或属性。
第2步:使用xsl:value-of获取节点值
<xsl:value-of select="Name" />即取出Name标签内的字符串。此标签通常自闭合,无需闭合标签。
第3步:使用xsl:apply-templates应用模板
for-each那样强制线性执行,而是根据当前节点匹配预定义的xsl:template。这种方式适合复杂结构的XML解析。
<xsl:apply-templates select="/Users/User" />
配合模板定义使用:
<xsl:template match="User">
<p>用户ID: <xsl:value-of select="ID" /></p>
<p>名称: <xsl:value-of select="Name" /></p>
</xsl:template>
XSLT排序处理技巧
在提取数据时,往往需要对结果进行排序。可以使用xsl:sort元素作为xsl:for-each的子元素来实现。
1. 字母顺序排序
通过设置order属性控制升序或降序:
- 升序:
<xsl:sort order="ascending" select="@id" /> - 降序:
<xsl:sort order="descending" select="@id" />
2. 区分大小写排序
利用case-order属性指定大写字母优先或小写字母优先:
- 大写优先:
<xsl:sort case-order="upper-first" select="Name" /> - 小写优先:
<xsl:sort case-order="lower-first" select="Name" />
3. 数据类型排序
默认情况下,数值可能被当作字符串比较(例如"10"排在"2"前面)。若要正确进行数值比较,需指定data-type:
- 文本类型:
<xsl:sort data-type="text" select="@id" />(结果:10, 2, 44...) - 数字类型:
<xsl:sort data-type="number" select="@id" />(结果:2, 10, 44...)
绑定XSL与XML
为了让浏览器正确渲染,需在XML文件的第二行添加样式表引用:
<?xml-stylesheet type="text/xsl" href="user_list.xsl"?>
保存后,在支持XML转换的现代浏览器(如Chrome, Firefox, Edge)中打开XML文件即可看到格式化后的HTML内容。IE系列因版本较老,可能需要特定配置或已不再推荐使用。
以上就是XSLT选择模式与排序处理的详细内容,更多关于XML数据转换的资料请关注本站其它相关文章!
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













