请看下面的简单例子,并把它应用于清单5-1所示的棒球统计的XML文档中,清单5-2是一个XSL样式单。它提供XML数据将要注入的HTML“模子”。清单5-2:一个XSL样式单<?xml version="1.0"?><xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl"><xsl:template match="/"><HTML xmlns:xsl="http://www.w3.org/TR/WD-xsl"><HEAD><TITLE>Major League Baseball Statistics</TITLE></HEAD><BODY><H1>Major League Baseball Statistics</H1><HR></HR>Copyright 1999<A HREF="http://www.macfaq.com/personal.html">Elliotte Rusty Harold</A><BR /><A HREF="mailto:elharo@metalab.unc.edu">elharo@metalab.unc.edu</A></BODY></HTML></xsl:template></xsl:stylesheet>该清单像一个包含在XSL:template元素中的HTML文件,也就是说它的结构更像是这样:<?xml version="1.0"?><xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl"><xsl:template match="/">HTML file goes here</xsl:template></xsl:stylesheet>清单5-2不仅是一个XSL样式单,同样是一个结构完整的HTML文档。它以一个XML名称开始,文档的根元素是xsl:stylesheet。该样式单包含唯一的模板,把XML数据编码为一个xsl:template元素。xsl:template元素有一个match属性,其值为/,内容是一个结构完整的HTML文档。输出的HTML结构完整不是一种巧合。因为HTML首先必须是一个XSL样式单的一部分,并且XSL样式单是结构完整的XML文档,因此在一个XSL样式单中的所有HTML一定结构完整。Web浏览器尽量使XML文档各部分与每个xsl:template元素相匹配。/模板与文档的根即整个文档本身相匹配。浏览器读取模板并将来自XML中的数据插入XSL指令指明的位置。但是该特定模板不包含XSL指令。因此它的内容只是被逐字逐句地复制到Web浏览器中,产生如图5-4所示的输出结果。请注意该图不显示XML文档的任何数据,只显示XSL模板中的数据。把清单5-2中的XSL样式单与清单5-1中的XML文档连接起来很方便,只需增加一个<?XML-stylesheet?>处理指令,该指令位于XML声明和根元素之间,含有一个值为text/xsl的type属性和一个指向样式单的href属性。例如:<?xml version="1.0"?><?xml-stylesheet type="text/xsl" href="5-2.xsl"?><SEASON YEAR="1998">...这与在文档上连接CSS样式单的方法一样,唯一不同的是type属性的值为text/xsl而不是text/css。图5-4 采用清单5-2中XSL样式单后,XML文档中的数据而不是XSL模板中的数据消失了
第5章 属性、空标记和XSL 5.4.2 文档的主体 |