前面例子中的结果还是有点不太令人满意,因为从XML文档中只复制了一行数据到输出。XSL的<xsl:for-each>元素可以用来将每个XML元素选择到XSL转换的输出流中: <?xml version='1.0'?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl"> <xsl:template match="/"> <html> <body> <table border="1"> <tr> <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:for-each元素在XML文档中查找元素,然后为每个元素重复模板的一部分。 用Internet Explorer 5来看看XML文件、XSL文件以及结果。 客户端XSL 如果浏览器支持XML,,就可以用XSL在浏览器中将文档转换成HTML。 一个JavaScript的解决方法 在前文中,我们解释了如何用XSL将一个文档从XML转换成HTML。窍门就是向XML文件中增加一个XSL样式表,然后让浏览器来进行转换。即使这种方法能奏效,在XML文件中包含一个样式表引用也并非令人满意的方法,并且在不支持XSL的浏览器上这种方法还不能奏效。 一个更通用的方法应该是用一个JavaScript来进行从XML到HTML的转换。使用一个JavaScript,就更有以下可能性: 允许JavaScript进行浏览器细节测试; 根据浏览器和用户需求使用不同的样式表。 这就是XSL的美妙之处。XSL设计目的之一就是使数据从一个格式转换成另一个格式成为可能,从而支持不同的浏览器和不同的用户需求。 客户端XSL转换将成为未来浏览器工作任务的一个主要部分,我们还将看到专业化浏览器市场的成长,比如Braille、 发声网络、网络打印机、手持PC、移动电话等。
|
|
|