XSLT 是Extensible Stylesheet Language Transformations 的缩写,它是用来将XML 文档转换到其它文档类型- 通常是XHTML,XSLT 使用两个输入文件
分别是包含实际数据的XML文档和包含要插入数据与XSLT 命令“架构”的XSL文档.
XSLT是工作大体如下:
1、XML 文档被读入内存当中,并存储为一棵结点树
2、<xsl:template match=“/”> 模板用来选择整个树的根结点
3、模板中的规则被用来进行结点的匹配,从而改变XML 树的结构
4、如果还有其它模板,那么它们必须显示地从主模板中调用
5、XML 树中没有匹配的部分保持原来的状态不变
6、模板应用完成后,树被作为一个新的文本文档输出出来
XSLT 主要语法实现如下:
分别是包含实际数据的XML文档和包含要插入数据与XSLT 命令“架构”的XSL文档.
XSLT是工作大体如下:
1、XML 文档被读入内存当中,并存储为一棵结点树
2、<xsl:template match=“/”> 模板用来选择整个树的根结点
3、模板中的规则被用来进行结点的匹配,从而改变XML 树的结构
4、如果还有其它模板,那么它们必须显示地从主模板中调用
5、XML 树中没有匹配的部分保持原来的状态不变
6、模板应用完成后,树被作为一个新的文本文档输出出来
XSLT 主要语法实现如下:
1、XSLT 模板
<xsl:template> 元素包含了当指定的节点被匹配时所能应用的规则.
2、XSLT <xsl:value-of> 元素
<xsl:value-of> 元素可提取选定节点的值,并把值添加到转换的输出流中。
3、XSLT <xsl:for-each> 元素
<xsl:for-each> 元素允许您在 XSL 中进行循环。
4、XSLT <xsl:sort> 元素
<xsl:sort> 元素用于对输出进行排序。
5、XSLT <xsl:if> 元素
<xsl:if> 元素用于针对 XML 文件的内容放置一个条件测试。
6、XSLT <xsl:choose> 元素
<xsl:choose> 元素被用来与 <xsl:when> 和 <xsl:otherwise> 配合使用,来表达多重的条件检验。
7、XSLT <xsl:apply-templates> 元素
<xsl:apply-templates> 元素可把模板规则应用到当前节点或者当前元素的子节点。
<xsl:for-each> <xsl:value-of><xsl:sort> 示例:
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:msxsl="urn:schemas-microsoft-com:xslt" exclude-result-prefixes="msxsl">
<xsl:output method="xml" indent="yes"/>
<xsl:template match="/">
<table style="background-color:lightgreen">
<xsl:for-each select="./Products/Category">
<!--<xsl:sort select="UnitPrice" order="descending"/>-->
<tr>
<td style="border:solid 1px blank;">
<xsl:value-of select="./SupplierID"/>
</td>
<td style="border:solid 1px blank;">
<ul>
<xsl:for-each select="./ProductName">
<li>
<xsl:value-of select="../ProductName"/>
<xsl:value-of select="../UnitPrice"/>
</li>
</xsl:for-each>
</ul>
</td>
</tr>
</xsl:for-each>
</table>
</xsl:template>
</xsl:stylesheet>
<xsl:if> 元素示例:
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:msxsl="urn:schemas-microsoft-com:xslt" exclude-result-prefixes="msxsl">
<xsl:output method="xml" indent="yes"/>
<xsl:template match="/">
<table style="background-color:lightgreen">
<xsl:for-each select="./Products/Category">
<tr>
<xsl:attribute name="style">
<xsl:if test="UnitPrice > 50"><!--Cost >50-->
background-color:red
</xsl:if>
<xsl:if test="UnitPrice < 50"><!--Cost <=50-->
background-color:green
</xsl:if>
</xsl:attribute>
<td style="border:solid 1px blank;">
<xsl:apply-templates select="ProductName"/>
</td>
<td style="border:solid 1px blank;">
<xsl:apply-templates select="UnitPrice"/>
</td>
</tr>
</xsl:for-each>
</table>
</xsl:template>
</xsl:stylesheet>
<xsl:choose>元素示例:
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:msxsl="urn:schemas-microsoft-com:xslt" exclude-result-prefixes="msxsl">
<xsl:output method="xml" indent="yes"/>
<xsl:template match="/">
<table style="background-color:lightgreen">
<xsl:for-each select="./Products/Category">
<tr>
<xsl:attribute name="style">
<xsl:choose>
<xsl:when test="UnitPrice > 50">
<!--Cost >50-->
background-color:red
</xsl:when>
<xsl:when test="UnitPrice < 10">
<!--Cost <10-->
background-color:blue
</xsl:when>
<xsl:otherwise>
background-color:green
</xsl:otherwise>
</xsl:choose>
</xsl:attribute>
<td style="border:solid 1px blank;">
<xsl:apply-templates select="ProductName"/>
</td>
<td style="border:solid 1px blank;">
<xsl:apply-templates select="UnitPrice"/>
</td>
</tr>
</xsl:for-each>
</table>
</xsl:template>
</xsl:stylesheet>
本文深入解读XSLT的工作原理,包括如何读取和处理XML文档,以及通过使用XSLT模板、值提取、循环、排序、条件测试、模板应用等关键元素,将XML数据转换为各种格式,如XHTML。通过具体示例,展示如何利用XSLT进行复杂的数据操作。
3557

被折叠的 条评论
为什么被折叠?



