今天在看一些招聘前端开发工程师的要求上看到了要求精通XSLT(Extensible Stylesheet Language)的一条,结果发现自己学习前端知识三年的时间了却没有学习这个,今天就开始学习一下吧!

 XSLT是指XML转换

创建一个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 align="left">Title</th>
      <th align="left">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 样式表链接到 XML 文档

向 XML 文档("cdcatalog.xml")添加 XSL 样式表引用:

<?xml-stylesheet type="text/xsl" href="cdcatalog.xsl"?>

<xsl:template> 元素用于构建模板。
<xsl:value-of> 元素用于提取某个选定节点的值,并把值添加到转换的输出流中
<xsl:for-each> 元素可用于选取指定的节点集中的每个 XML 元素。
通过在 <xsl:for-each> 元素中添加一个选择属性的判别式,我们也可以过滤从 XML 文件输出的结果。
<xsl:sort> 元素用于对结果进行排序
<xsl:if> 元素用于放置针对 XML 文件内容的条件测试。

XSLT <xsl:choose> 元素用于结合 <xsl:when> 和 <xsl:otherwise> 来表达多重条件测试。

<xsl:choose> 元素

语法

<xsl:choose>
  <xsl:when test="expression">
    ... 输出 ...
  </xsl:when>
  <xsl:otherwise>
    ... 输出 ....
  </xsl:otherwise>
</xsl:choose>

<xsl:apply-templates> 元素可把一个模板应用于当前的元素或者当前元素的子节点。

在浏览器中用js把 XML 转换为 XHTML

这是用于在客户端把 XML 文件转换为 XHTML 的源代码:

<html>
<body>

<script type="text/javascript">

// Load XML 
var xml = new ActiveXObject("Microsoft.XMLDOM")
xml.async = false
xml.load("cdcatalog.xml")

// Load XSL
var xsl = new ActiveXObject("Microsoft.XMLDOM")
xsl.async = false
xsl.load("cdcatalog.xsl")

// Transform
document.write(xml.transformNode(xsl))

</script>

</body>
</html>

在服务器把 XML 转换为 XHTML

这是在服务器上把 XML 文件转换为 XHTML 的源代码:

<%
'Load XML
set xml = Server.CreateObject("Microsoft.XMLDOM")
xml.async = false
xml.load(Server.MapPath("cdcatalog.xml"))

'Load XSL
set xsl = Server.CreateObject("Microsoft.XMLDOM")
xsl.async = false
xsl.load(Server.MapPath("cdcatalog.xsl"))

'Transform file
Response.Write(xml.transformNode(xsl))
%>




posted on 2012-11-13 22:52  history  阅读(152)  评论(0编辑  收藏  举报