关于xsl教程学习经典笔记
一 . Hello world 尝试:
=============Hello.xml:=================
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="test.xsl"?>
<FistNode>
,World
</FistNode>
===============test.xsl:==================
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format">
<xsl:template match="/">
<html>
<head>
<title>First node</title>
</head>
<body>
<p>
<xsl:value-of select="/FistNode"/>
</p>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
运行结果:
Hello,World
二 . XSLT元素列表
元素名 | 含义 |
xsl:apply-imports | 调用重新模板规则 |
xsl:apply-template | 指示XSLT处理器根据每个选定节点的类型和上下文 找到合适的模板 |
xsl:attribute | 创建一个属性节点并将其附加到输出元素上 |
xsl:attribute-set | 定义命名的属性集 |
xsl:call-template | 按名称调用模板 |
xsl:choose | 提供多个与<xsl:otherwise> 元素 和 <xsl:when> 元素有关的条件测试 |
xsl:comment | 在输出中生成注释 |
xsl:copy | 将当前节点从源复制到输出 |
xsl:copy-of | 将子树和结果树片段插入结果树 |
xsl:decimal-fomat | 声明一个小数格式,用于控制formate-number 函数所使用的格式模式解释 |
xsl:element | 在输出中创建指定名称的元素 |
xsl:fallback | 调用可以 为遇到的新的元素的行为 提供合适的替代行为的 模板 |
xsl:for-each | 重复应用模板,对接点集中的每个节点应用模板 |
xsl:if | 允许简单条件模板片段 |
xsl:import | 导入另外一个xslt文件 |
xsl:include | 包含另一个xsl文件 |
xsl:key | 声明一个命名的键,用于XPath表达式中的Key()函数 |
xsl:message | 将文本消息发送到消息缓冲区或者对话框 |
xsl:namespace-alias | 使用其他前缀替换 与给定命名空间关联的前缀 |
xsl:number | 将和格式化的数字插入结果树 |
xsl:otherwise | 提供多个与<xsl:choose>元素和<xsl:when>元素有关的条件测试 |
xsl:ouput | 指定在序列化结果树时使用的选项 |
xsl:param | 声明一个命名参数,在<xsl:stylesheet>元素或者<xsl:template>元素中使用.允许制定默认值 |
xsl:preserve-space | 在文档中保留空白 |
xsl:sort | 指定<xsl:for-each>或者<xsl:apply-template>所选节点列表的排序条件 |
xsl:stylesheet | 指定xslt文件的文档元素.文档元素包含其他XSLT元素 |
xsl:template | 定义一个可以再次使用的模板,用于为特定类型和上下文的节点生成所需要的输出 |
xsl:text | 在输出中生成文本 |
xsl:transform | 执行与<xsl:stylesheet>相同的功能 |
xsl:value-of | 将选定节点的值作为文本插入 |
xsl:variable | 指定表达式中绑定的值 |
xsl:when | 提供多个与<xsl:choose>元素和<xsl:otherwise>有关的测试条件 |
xsl:with-param | 将参数传递给模板 |
xsl:strip-space | 从文档中删除空白 |
三 xsl:template 和 xsl:apply-template
模板有2部分构成:匹配模式 和 执行.
匹配模式 指定了采用哪个模板 xsl:template
执行指定了如何输出 xsl:apply-template
1.xsl:template语法
<xsl:template natch=pattern name=qname priority=number mode=qname>
<!—执行内容à
</xsl:template>
name:唯一的名称,便于引用
match:原节点模式 与name 必有其一
priority :-9-9的数字
mode :允许多次处理某个元素, 每次产生不同的结果. 有match就不可以有mode.
eg:
==========test.xml=============
<?xml version="1.0" encoding="UTF-8"?>
<company>
<department>
<name language="Chinese">Tech Department</name>
<leader>Zhang San</leader>
<quantity>20</quantity>
<target>software develop</target>
</department>
<department>
<name language="Chinese">Sale Department</name>
<leader>Li Si</leader>
<quantity>20</quantity>
<target>Sale work</target>
</department>
</company>
1.匹配所有的部门
<xsl:template match=”department”></xsl:template>
2.匹配所有的领导和所有的人数元素
<xsl:template match=”leader|quantity”></xsl:template>
3.匹配所有父节点为 部门的 领导元素
<xsl:template match=”department//leader”></xsl:template>
3.匹配根节点
<xsl:template match=”/”></xsl:template>
2.xsl:apply-templates
语法:
<xsl:apply-templates select=node set-expression mode=qname></xsl:apply-templates>
用来 表示 哪个节点被模板具体处理.可以理解为 调用子函数 select用来选择确切的节点名字. xsl:apply-templates 总是在 xsl: template中
1.模板匹配整个文档(根节点), 具体执行时 处理根节点下的所有部门元素.
<xsl:template match=”/”>
<xsl:apply-template select=”department”/>
</xsl:template>
2.模板匹配 部门 节点. 具体执行时 部门下所有的子元素都将被处理
<xsl:template match=”para”>
<p><xsl:apply-template /></p>
</xsl:template>
四 xsl:value-of
用来将 文档中的元素 文本 写入到 输出文档中.
1. 提取出部门中每个领导人的名字
<xsl:template match=”department”>
< xsl:value-of select=”leader”/>
</xsl:template>
心得: <xsl:template match=”department”>表示一个范围,然后value-of和apply-template明确指出到底是哪些元素
五 xsl:for-each
循环处理被选择的元素.
1. 提取每个部门的领导人
<xsl:template match=”company”>
<xsl:selct
< xsl:value-of select=”leader”/>
</xsl:template>
六 xsl:if
语法:
<xsl:if test=布尔表达式>
templatebody
</xsl:if>
1. 检测部门节点下的所有元素,如果有领导就将领导输出.
<xsl:template match="department">
<xsl:if test="leader">
<p><xsl:value-of select="leader"/></p>
</xsl:if>
</xsl:template>
七 xsl:choose xsl:when xsl:otherwise
<xsl:template match="department">
<xsl:choose>
<xsl:when test="leader='Li Si'">
<p>
<font color="red">
<xsl:value-of select="leader"/>
</font>
</p>
</xsl:when>
<xsl:when test="leader">
<p>
<font color="green"></font>
</p>
</xsl:when>
<xsl:otherwise>
leader!
</xsl:otherwise>
</xsl:choose>
</xsl:template>
七 xsl:sort
<xsl:template match="company">
<p>
<xsl:apply-templates select="department">
<xsl:sort select="leader"/>
</xsl:apply-templates>
</p>
</xsl:template>
八.综合实例:
============test.xml===============
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="test.xsl"?>
<company>
<department>
<name language="Chinese">Tech Department</name>
<leader>Zhang San</leader>
<quantity>20</quantity>
<target>software develop</target>
</department>
<department>
<name language="Chinese">Sale Department</name>
<leader>Li Si</leader>
<quantity>20</quantity>
<target>Sale work</target>
</department>
</company>
============test.xsl:===========
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format">
<xsl:template match="/">
<html>
<head>
<title>First node</title>
</head>
<body>
<p>
<xsl:value-of select="/company/department"/>
</p>
<p>
<xsl:apply-templates select="company"/>
</p>
</body>
</html>
</xsl:template>
<xsl:template match="company">
<p>
<xsl:apply-templates select="department">
<xsl:sort select="leader"/>
</xsl:apply-templates>
</p>
<xsl:for-each select="child::department">
<p><xsl:value-of select="leader"/></p>
</xsl:for-each>
</xsl:template>
<xsl:template match="department">
<xsl:choose>
<xsl:when test="leader='Li Si'">
<p>
<font color="red">
<xsl:value-of select="leader"/>
</font>
</p>
</xsl:when>
<xsl:when test="leader">
<p>
<font color="green"><xsl:value-of select="leader"/></font>
</p>
</xsl:when>
<xsl:otherwise>
leader!
</xsl:otherwise>
</xsl:choose>
</xsl:template>
</xsl:stylesheet>
===========运行结果==============
Tech Department Zhang San 20 software develop
Li Si
Zhang San
Zhang San
Li Si
本文站长资源库 版权所有,未经批准转载必究