五. XSL 的索引
如果我需要将元素的显示按一定的顺序排列,应该如何建立XSL的索引呢?
我们还是来看前面的例子,还是这段代码:
?xml version="1.0" encoding="ISO8859-1" ?
CATALOG
CD
TITLEEmpire Burlesque/TITLE
ARTISTBob Dylan/ARTIST
COUNTRYUSA/COUNTRY
COMPANYColumbia/COMPANY
PRICE10.90/PRICE
YEAR1985/YEAR
/CD
当XML文档被转换成HTML文件,索引应该同时建立。简单的办法就是给你的for-each元素增加一个order-by属性,就象这样:
xsl:for-each select="CATALOG/CD" order-by="+ ARTIST"
order-by属性带有一个"+"或者"-" 的符号,用来定义索引的方式,是升序还是降序排列。符号后面的名字就是要索引的关键字。
例如(cd_catalog_sort.xsl):
?xml version='1.0'?
xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl"
xsl:template match="/"
html
body
table border="2" bgcolor="yellow"
tr
thTitle/th
thArtist/th
/tr
(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/webkaifa/)(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/webkaifa/)xsl:for-each select="CATALOG/CD" order-by="+ ARTIST"
tr
tdxsl:value-of select="TITLE"//td
tdxsl:value-of select="ARTIST"//td
/tr
(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/webkaifa/)(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/webkaifa/)/xsl:for-each
/table
/body
/html
/xsl:template
/xsl:stylesheet
最后,我们用下面的HTML代码来显示索引结果,你可以自己尝试一下。
html
body
script language="javascript"
// Load XML
var xml = new ActiveXObject("Microsoft.XMLDOM")
xml.async = false
xml.load("cd_catalog.xml")
// Load the XSL
var xsl = new ActiveXObject("Microsoft.XMLDOM")
xsl.async = false
xsl.load("cd_catalog_sort.xsl")
// Transform
document.write(xml.transformNode(xsl))
/script
/body
/html