XSL学习笔记3 XSLT的模板规则<xsl:value-of>和<xsl:for-each>-阿里云开发者社区

开发者社区> 技术小阿哥> 正文

XSL学习笔记3 XSLT的模板规则<xsl:value-of>和<xsl:for-each>

简介:
+关注继续查看

1、<xsl:value-of>元素
   
<xsl:value-of>元素是选择当前节点的值,用于在结果树中创建一个文本节点。例如<xsl:value-of select="Name" />就是选择Name节点的值。

select属性是必须的,用于指定要计算的表达式,表达式计算的结果将被转换为一个字符串值。如果字符串为空,那么文本节点将不会被创建。
 
注意,每个xsl文件都需要导入xsl的命名空间,[url]http://www.w3.org/TR/WD-xsl[/url],例如在xml头声明之后加入:<p xmlns:xsl="[url]http://www.w3.org/TR/WD-xsl[/url]">
 
2、<xsl:for-each>元素
 
  <xsl:for-each>元素逐个(select)选择某条件,应用条件。select属性是必须的,用于指定一个表达式,该表达式计算结果必须是一个节点集。<xsl:for-each>元素的内容是一个模板,对于每一个被选择的节点,实例化该模板。
 
for-each还支持排序,order-by语句,它的语法是以分号(;)分隔、作为排序标准的列表。在列表元素前添加加号(+)表示按此标记的内容以升序排序,添加减号(-)表示逆序排序。作为一种简化的表示就是,排序标准列表就是由select规定的标记的子标记的序列,每个标记之间以(;)分隔。
 
employee.xml
<?xml version="1.0" encoding="UTF-8"?> 
<?xml-stylesheet type="text/xsl" href="src/employees44.xsl"?> 
<employees> 

    <employee sn="E-200402100001"> 
        <name>zhangsan</name> 
        <age>25</age> 
        <monthly_pay mode="cash"> 
            1200.00 
        </monthly_pay> 
    </employee> 

    <employee sn="E-200402100006"> 
        <name>lisi</name> 
        <age>28</age> 
        <monthly_pay mode="cash"> 
            1600.00 
        </monthly_pay> 
    </employee> 

    <employee sn="E-200503220001"> 
        <name>wangwu</name> 
        <age>30</age> 
        <monthly_pay mode="credit_card"> 
            3500.00 
        </monthly_pay> 
    </employee> 

</employees>
 
employee.xsl
<?xml version="1.0"?> 
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 

    <xsl:template match="/"> 
        <html> 
            <head></head> 
            <xsl:apply-templates/> 
        </html> 
    </xsl:template> 
     
    <xsl:template match="employees"> 
        <body> 
            <table border="1"> 
                <xsl:for-each select="employee"> 
                    <tr> 
                        <td><xsl:value-of select="name"/></td> 
                        <td><xsl:value-of select="age"/></td> 
                        <td><xsl:value-of select="monthly_pay"/></td> 
                    </tr> 
                </xsl:for-each> 
            </table> 
        </body> 
    </xsl:template> 
     
</xsl:stylesheet>
 
通过xslt处理器转换为html结果为:
<html> 
<head> 
    <META http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
</head> 

<body> 
<table border="1"> 
    <tr> 
        <td>zhangsan</td> 
        <td>25</td> 
        <td>1200.00</td> 
    </tr> 
    <tr> 
        <td>lisi</td> 
        <td>28</td> 
        <td>1600.00</td> 
    </tr> 
    <tr> 
        <td>wangwu</td> 
        <td>30</td> 
        <td>3500.00</td> 
    </tr> 
</table> 
</body> 
</html>

 本文转自 leizhimin 51CTO博客,原文链接:http://blog.51cto.com/lavasoft/60416,如需转载请自行联系原作者 

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
[转帖]访问Formview模板内控件
在访问Formview模板内控件时遇到两个问题。 一是调用语句过早而访问不到Formview模板内控件,二是究竟用什么方法或属性来访问。 比如说其中有一个ID为UserNameTextBox的TextBox,我们要把当前已登陆用户的用户名传给它怎么做呢? 注意:formview在Page_Load的时候是不会呈现外观的,也就不会有TextBox了,所以在Page_Load里写程序无论怎么写也找不到formview1控件模板里的子控件UserNameTextBox。
714 0
JAVA多线程高并发学习笔记(三)——Callable、Future和FutureTask
为什么要是用Callable和Future Runnable的局限性 Executor采用Runnable作为基本的表达形式,虽然Runnable的run方法能够写入日志,写入文件,写入数据库等操作,但是它不能返回一个值,或者抛出一个受检查的异常,有些需要返回值的需求就不能满足了。
1335 0
多线程编程学习四(Lock 的使用)
一、前言     本文要介绍使用Java5中 Lock 对象,同样也能实现同步的效果,而且在使用上更加方便、灵活,主要包括 ReentrantLock 类的使用和ReentrantReadWriteLock 类的使用。
814 0
机器学习实战:基于概率论的分类方法:朴素贝叶斯(源码解析,错误分析)
按照惯例,先把代码粘到这里 from numpy import * def LoadDataSet(): postingList = [['my', 'dog', 'has', 'flea', 'proble...
835 0
13694
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载