<xsl:template>
元素
<xsl:template>
元素用于构建模板。
match 属性用于关联 XML 元素和模板。match 属性也可用来为整个 XML 文档定义模板。match 属性的值是 XPath 表达式(举例,match="/" 定义整个文档)。
注意:由于 XSL 样式表本身也是一个 XML 文档,因此它总是由 XML 声明起始:<?xml version="1.0" encoding="ISO-8859-1"?>.
下一个元素,<xsl:stylesheet>
, ,定义此文档是一个 XSLT 样式表文档(连同版本号和 XSLT 命名空间属性)。
<xsl:value-of>
元素
<xsl:value-of>
元素用于提取某个 XML 元素的值,并把值添加到转换的输出流中
select 属性的值是一个 XPath 表达式
<xsl:for-each>
元素
XSL <xsl:for-each>
元素可用于选取指定的节点集中的每个 XML 元素
通过在 <xsl:for-each>
元素中添加一个选择属性的判别式,我们也可以过滤从 XML 文件输出的结果。
<xsl:for-each select="catalog/cd[artist='Bob Dylan']">
如需对输出结果进行排序,只要简单地在 XSL 文件中的 <xsl:for-each>
元素内部添加一个 <xsl:sort>
元素
<xsl:sort select="artist"/>
<xsl:if>
元素
<xsl:if test="expression">
...如果条件成立则输出...
</xsl:if>
<xsl:choose>
元素
<xsl:choose>
<xsl:when test="expression">
... some output ...
</xsl:when>
<xsl:otherwise>
... some output ....
</xsl:otherwise>
</xsl:choose>
PHP服务器把 XML 转换为 XHTML
<?php
// 载入 XML 文件
$xml = new DOMDocument;
$xml->load('cdcatalog.xml');
// 载入 XSL 文件
$xsl = new DOMDocument;
$xsl->load('cdcatalog.xsl');
// 设置转换
$proc = new XSLTProcessor;
// 添加 xsl 规则
$proc->importStyleSheet($xsl);
echo $proc->transformToXML($xml);
?>
实例
test.xml
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="decorate.xsl"?>
<messageList>
<message>
<title>go</title>
<author>Tom</author>
<info>time to go</info>
</message>
<message>
<title>back</title>
<author>Jim</author>
<info>time to back</info>
</message>
<message>
<title>run</title>
<author>Jack</author>
<info>time to run</info>
</message>
</messageList>
decorate.xsl
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:fn="http://www.w3.org/2005/xpath-functions">
<xsl:template match="/">
<html>
<head>
</head>
<body>
<h2>Message</h2>
<table>
<tbody>
<tr>
<th>title</th>
<th>author</th>
<th>info</th>
</tr>
<xsl:for-each select="messageList/message">
<tr>
<td><xsl:value-of select="title"/></td>
<td><xsl:value-of select="author"/></td>
<td><xsl:value-of select="info"/></td>
</tr>
<!--注意:在遍历里面的value-of的select属性路径只需要写相对for-each的路径即可!-->
</xsl:for-each>
</tbody>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
效果: