XSLT元素 一、<xsl:template> 元素 一个XSL样式表由一套或多套模板组成,每套模板都应用于指定的结点.<xsl:template>元素用于建造模板,它的match属性用于将模板和XML的元素(或整个XML文档)关联起来 。match的属性值是一个XPath表达式。 下面是一个简单的XSL样式表的例子 <?xml version="1.0" encoding="ISO-8859-1"?><xsl:stylesheet version="1.0"xmlns:xsl="http://www.w3.org/1999/XSL/Transform"><xsl:template match="/"> <html> <body> <h2>My CD Collection</h2> <table border="1"> <tr bgcolor="#9acd32"> <th>Title</th> <th>Artist</th> </tr> <tr> <td>.</td> <td>.</td> </tr> </table> </body> </html></xsl:template></xsl:stylesheet> 说明:因为XSL样式表本身就是一个XML文档,所以它总是以XML声明开始,如:<?xml version="1.0" encoding="ISO-8859-1"?>。<xsl:stylesheet>或<xsl:transform>说明文档是一个XSL样式表,<xsl:stylesheet>和<xsl:transform>是同义的。声明一个XSL样式表的正确方法如下: <xsl:stylesheet version="1.0"xmlns:xsl="http://www.w3.org/1999/XSL/Transform">或<xsl:transform version="1.0"xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 二、<xsl:value-of> 元素 <xsl:value-of> 元素用于从被选择的结点中取出相应的值。 示例: <?xml version="1.0" encoding="ISO-8859-1"?><xsl:stylesheet version="1.0"xmlns:xsl="http://www.w3.org/1999/XSL/Transform"><xsl:template match="/"> <html> <body> <h2>My CD Collection</h2> <table border="1"> <tr bgcolor="#9acd32"> <th>Title</th> <th>Artist</th> </tr> <tr> <td><xsl:value-of select="catalog/cd/title"/></td> <td><xsl:value-of select="catalog/cd/artist"/></td> </tr> </table> </body> </html></xsl:template</xsl:stylesheet> <xsl:value-of>的select属性用XPath表达式取出值。 四、<xsl:for-each> 元素 <xsl:for-each> 元素用于选择一个结点集的所有元素。示例如下: <?xml version="1.0" encoding="ISO-8859-1"?><xsl:stylesheet version="1.0"xmlns:xsl="http://www.w3.org/1999/XSL/Transform"><xsl:template match="/"> <html> <body> <h2>My CD Collection</h2> <table border="1"> <tr bgcolor="#9acd32"> <th>Title</th> <th>Artist</th> </tr> <xsl:for-each select="catalog/cd"> <tr> <td><xsl:value-of select="title"/></td> <td><xsl:value-of select="artist"/></td> </tr> </xsl:for-each> </table> </body> </html></xsl:template></xsl:stylesheet> 五、<xsl:sort>元素 <xsl:sort>元素用于将输出排序。要将输出排序,只需将<xsl:sort>元素插入<xsl:for-each>元素中。示例如下: <?xml version="1.0" encoding="ISO-8859-1"?><xsl:stylesheet version="1.0"xmlns:xsl="http://www.w3.org/1999/XSL/Transform"><xsl:template match="/"> <html> <body> <h2>My CD Collection</h2> <table border="1"> <tr bgcolor="#9acd32"> <th>Title</th> <th>Artist</th> </tr> <xsl:for-each select="catalog/cd"> <xsl:sort select="artist"/> <tr> <td><xsl:value-of select="title"/></td> <td><xsl:value-of select="artist"/></td> </tr> </xsl:for-each> </table> </body> </html></xsl:template></xsl:stylesheet> <xsl:sort select="artist"/>将输出中的艺术家排序。 六、<xsl:if> 元素 <xsl:if> 元素用于条件测试,输出符合条件的,需将<xsl:if>元素插入<xsl:for-each>元素中。示例如下: <?xml version="1.0" encoding="ISO-8859-1"?><xsl:stylesheet version="1.0"xmlns:xsl="http://www.w3.org/1999/XSL/Transform"><xsl:template match="/"> <html> <body> <h2>My CD Collection</h2> <table border="1"> <tr bgcolor="#9acd32"> <th>Title</th> <th>Artist</th> </tr> <xsl:for-each select="catalog/cd"> <xsl:if test="price > 10"> <tr> <td><xsl:value-of select="title"/></td> <td><xsl:value-of select="artist"/></td> </tr> </xsl:if> </xsl:for-each> </table> ........................ 七、<xsl:choose> 元素 <xsl:choose> 元素和<xsl:when>及<xsl:otherwise>一起使用,需插入<xsl:for-each>元素中,以实现多 重条件测试,输出符合条件的。语法如下: <xsl:choose> <xsl:when test="expression"> ... 输出 ... </xsl:when> <xsl:otherwise> ... 输出 .... </xsl:otherwise></xsl:choose> 示例1如下: <?xml version="1.0" encoding="ISO-8859-1"?><xsl:stylesheet version="1.0"xmlns:xsl="http://www.w3.org/1999/XSL/Transform"><xsl:template match="/"> <html> <body> <h2>My CD Collection</h2> <table border="1"> <tr bgcolor="#9acd32"> <th>Title</th> <th>Artist</th> </tr> <xsl:for-each select="catalog/cd"> <tr> <td><xsl:value-of select="title"/></td> <xsl:choose> <xsl:when test="price > 10"> <td bgcolor="#ff00ff"> <xsl:value-of select="artist"/></td> </xsl:when> <xsl:otherwise> <td><xsl:value-of select="artist"/></td> </xsl:otherwise> </xsl:choose> </tr> </xsl:for-each> </table> </body> </html></xsl:template></xsl:stylesheet> </body> </html></xsl:template></xsl:stylesheet> 示例2如下(包含两个<xsl:when>) <?xml version="1.0" encoding="ISO-8859-1"?><xsl:stylesheet version="1.0"xmlns:xsl="http://www.w3.org/1999/XSL/Transform"><xsl:template match="/"> <html> <body> <h2>My CD Collection</h2> <table border="1"> <tr bgcolor="#9acd32"> <th>Title</th> <th>Artist</th> </tr> <xsl:for-each select="catalog/cd"> <tr> <td><xsl:value-of select="title"/></td> <xsl:choose> <xsl:when test="price > 10"> <td bgcolor="#ff00ff"> <xsl:value-of select="artist"/></td> </xsl:when> <xsl:when test="price > 9"> <td bgcolor="#cccccc"> <xsl:value-of select="artist"/></td> </xsl:when> <xsl:otherwise> <td><xsl:value-of select="artist"/></td> </xsl:otherwise> </xsl:choose> </tr> </xsl:for-each> </table> </body> </html></xsl:template></xsl:stylesheet> 八、<xsl:apply-templates>元素 <xsl:apply-templates>元素将模板应用到当前元素或当前元素的子元素。 示例如下: <?xml version="1.0" encoding="ISO-8859-1"?><xsl:stylesheet version="1.0"xmlns:xsl="http://www.w3.org/1999/XSL/Transform"><xsl:template match="/"><html><body><h2>My CD Collection</h2> <xsl:apply-templates/> </body></html></xsl:template><xsl:template match="cd"><p><xsl:apply-templates select="title"/> <xsl:apply-templates select="artist"/></p></xsl:template><xsl:template match="title">Title: <span style="color:#ff0000"><xsl:value-of select="."/></span><br /></xsl:template><xsl:template match="artist">Artist: <span style="color:#00ff00"><xsl:value-of select="."/></span><br /></xsl:template></xsl:stylesheet>

评论