XML 学习(七) XSLT 例子
xslt例子,用到了xslt的元素;xpath
不知道怎么弄连接下载啊,只好把所有代码都贴上来了;
可以把xsl文件里的注释去了看下效果;
测试页面:cd.html
不知道怎么弄连接下载啊,只好把所有代码都贴上来了;
可以把xsl文件里的注释去了看下效果;
测试页面:cd.html
<
html
>
< body >
< script language = " javascript " >
// Load XML
var xml = new ActiveXObject( " Microsoft.XMLDOM " )
xml.async = false
xml.load( " cd.xml " )
// Load the XSL
var xsl = new ActiveXObject( " Microsoft.XMLDOM " )
xsl.async = false
xsl.load( " cd.xsl " )
document.write(xml.transformNode(xsl))
</ script >
</ body >
</ html >
显示样式 cd.xsl
< body >
< script language = " javascript " >
// Load XML
var xml = new ActiveXObject( " Microsoft.XMLDOM " )
xml.async = false
xml.load( " cd.xml " )
// Load the XSL
var xsl = new ActiveXObject( " Microsoft.XMLDOM " )
xsl.async = false
xsl.load( " cd.xsl " )
document.write(xml.transformNode(xsl))
</ script >
</ body >
</ html >
<?
xml version
=
'
1.0
' encoding
=
"
GBK
"
?>
< xsl:stylesheet version = " 1.0 " xmlns:xsl = " http://www.w3.org/1999/XSL/Transform " >
< xsl:template match = " / " >
< html >
< body >
< table border = " 2 " bgcolor = " #dddddd " >
< tr >
< th > Title </ th >
< th > Artist </ th >
< th > Country </ th >
< th > Price </ th >
</ tr >
< xsl: for - each select = " //cd " >
<!-- < xsl: for - each select = " catalog/cd " > -->
< xsl:sort select = " title " />
< tr >
< xsl:apply - templates select = " . " />
<!-- < xsl:apply - templates select = " //cd " /> -->
</ tr >
</ xsl: for - each >
</ table >
</ body >
</ html >
</ xsl:template >
< xsl:template match = " cd " >
< td >< xsl:apply - templates select = " ./title " /></ td >
<!-- < td >< xsl:apply - templates select = " ../cd/title " /></ td > -->
< td >< xsl:apply - templates select = " artist " /></ td >
< td >< xsl:apply - templates select = " country " /></ td >
< td >< xsl:apply - templates select = " price " /></ td >
</ xsl:template >
< xsl:template match = " title " >
< span style = " color:#ff0000 " >
< xsl:value - of select = " . " /></ span >
</ xsl:template >
< xsl:template match = " artist " >
< span style = " color:#00ff00 " >
< xsl:value - of select = " . " /></ span >
</ xsl:template >
< xsl:template match = " country " >
< span style = " color:#0000ff " >
< xsl:value - of select = " . " /></ span >
</ xsl:template >
< xsl:template match = " price " >
< span style = " color:#0000ff " >
< xsl:value - of select = " . " />
< xsl: if test = " . > 10 " > 大于10 </ xsl: if >
< xsl:choose >
< xsl:when test = " . < 8 " > 小于8 </ xsl:when >
< xsl:otherwise >
< xsl:choose >
<!-- 嵌套时 < xsl:otherwise > 不能掉了, & lt后面的分号 -->
< xsl:when test = " . < 9 " > 大于8,小于9 </ xsl:when >
< xsl:otherwise >
< xsl:choose >
< xsl:when test = " . < 10 " > 大于9,小于10 </ xsl:when >
</ xsl:choose >
</ xsl:otherwise >
</ xsl:choose >
</ xsl:otherwise >
</ xsl:choose >
</ span >
</ xsl:template >
</ xsl:stylesheet >
数据 cd.xml
< xsl:stylesheet version = " 1.0 " xmlns:xsl = " http://www.w3.org/1999/XSL/Transform " >
< xsl:template match = " / " >
< html >
< body >
< table border = " 2 " bgcolor = " #dddddd " >
< tr >
< th > Title </ th >
< th > Artist </ th >
< th > Country </ th >
< th > Price </ th >
</ tr >
< xsl: for - each select = " //cd " >
<!-- < xsl: for - each select = " catalog/cd " > -->
< xsl:sort select = " title " />
< tr >
< xsl:apply - templates select = " . " />
<!-- < xsl:apply - templates select = " //cd " /> -->
</ tr >
</ xsl: for - each >
</ table >
</ body >
</ html >
</ xsl:template >
< xsl:template match = " cd " >
< td >< xsl:apply - templates select = " ./title " /></ td >
<!-- < td >< xsl:apply - templates select = " ../cd/title " /></ td > -->
< td >< xsl:apply - templates select = " artist " /></ td >
< td >< xsl:apply - templates select = " country " /></ td >
< td >< xsl:apply - templates select = " price " /></ td >
</ xsl:template >
< xsl:template match = " title " >
< span style = " color:#ff0000 " >
< xsl:value - of select = " . " /></ span >
</ xsl:template >
< xsl:template match = " artist " >
< span style = " color:#00ff00 " >
< xsl:value - of select = " . " /></ span >
</ xsl:template >
< xsl:template match = " country " >
< span style = " color:#0000ff " >
< xsl:value - of select = " . " /></ span >
</ xsl:template >
< xsl:template match = " price " >
< span style = " color:#0000ff " >
< xsl:value - of select = " . " />
< xsl: if test = " . > 10 " > 大于10 </ xsl: if >
< xsl:choose >
< xsl:when test = " . < 8 " > 小于8 </ xsl:when >
< xsl:otherwise >
< xsl:choose >
<!-- 嵌套时 < xsl:otherwise > 不能掉了, & lt后面的分号 -->
< xsl:when test = " . < 9 " > 大于8,小于9 </ xsl:when >
< xsl:otherwise >
< xsl:choose >
< xsl:when test = " . < 10 " > 大于9,小于10 </ xsl:when >
</ xsl:choose >
</ xsl:otherwise >
</ xsl:choose >
</ xsl:otherwise >
</ xsl:choose >
</ span >
</ xsl:template >
</ xsl:stylesheet >
<?
xml version
=
"
1.0
"
encoding
=
"
ISO-8859-1
"
?>
<!-- Edited with XML Spy v2007 (http: // www.altova.com) -->
< catalog >
< cd >
< title > Empire Burlesque </ title >
< artist > Bob Dylan </ artist >
< country > USA </ country >
< company > Columbia </ company >
< price > 10.90 </ price >
< year > 1985 </ year >
</ cd >
< cd >
< title > Hide your heart </ title >
< artist > Bonnie Tyler </ artist >
< country > UK </ country >
< company > CBS Records </ company >
< price > 9.90 </ price >
< year > 1988 </ year >
</ cd >
< cd >
< title > Greatest Hits </ title >
< artist > Dolly Parton </ artist >
< country > USA </ country >
< company > RCA </ company >
< price > 9.90 </ price >
< year > 1982 </ year >
</ cd >
< cd >
< title > Still got the blues </ title >
< artist > Gary Moore </ artist >
< country > UK </ country >
< company > Virgin records </ company >
< price > 10.20 </ price >
< year > 1990 </ year >
</ cd >
< cd >
< title > Eros </ title >
< artist > Eros Ramazzotti </ artist >
< country > EU </ country >
< company > BMG </ company >
< price > 9.90 </ price >
< year > 1997 </ year >
</ cd >
< cd >
< title > One night only </ title >
< artist > Bee Gees </ artist >
< country > UK </ country >
< company > Polydor </ company >
< price > 10.90 </ price >
< year > 1998 </ year >
</ cd >
< cd >
< title > Sylvias Mother </ title >
< artist > Dr.Hook </ artist >
< country > UK </ country >
< company > CBS </ company >
< price > 8.10 </ price >
< year > 1973 </ year >
</ cd >
< cd >
< title > Maggie May </ title >
< artist > Rod Stewart </ artist >
< country > UK </ country >
< company > Pickwick </ company >
< price > 8.50 </ price >
< year > 1990 </ year >
</ cd >
< cd >
< title > Romanza </ title >
< artist > Andrea Bocelli </ artist >
< country > EU </ country >
< company > Polydor </ company >
< price > 10.80 </ price >
< year > 1996 </ year >
</ cd >
< cd >
< title > When a man loves a woman </ title >
< artist > Percy Sledge </ artist >
< country > USA </ country >
< company > Atlantic </ company >
< price > 8.70 </ price >
< year > 1987 </ year >
</ cd >
< cd >
< title > Black angel </ title >
< artist > Savage Rose </ artist >
< country > EU </ country >
< company > Mega </ company >
< price > 10.90 </ price >
< year > 1995 </ year >
</ cd >
< cd >
< title > 1999 Grammy Nominees </ title >
< artist > Many </ artist >
< country > USA </ country >
< company > Grammy </ company >
< price > 10.20 </ price >
< year > 1999 </ year >
</ cd >
< cd >
< title > For the good times </ title >
< artist > Kenny Rogers </ artist >
< country > UK </ country >
< company > Mucik Master </ company >
< price > 8.70 </ price >
< year > 1995 </ year >
</ cd >
< cd >
< title > Big Willie style </ title >
< artist > Will Smith </ artist >
< country > USA </ country >
< company > Columbia </ company >
< price > 9.90 </ price >
< year > 1997 </ year >
</ cd >
< cd >
< title > Tupelo Honey </ title >
< artist > Van Morrison </ artist >
< country > UK </ country >
< company > Polydor </ company >
< price > 8.20 </ price >
< year > 1971 </ year >
</ cd >
< cd >
< title > Soulsville </ title >
< artist > Jorn Hoel </ artist >
< country > Norway </ country >
< company > WEA </ company >
< price > 7.90 </ price >
< year > 1996 </ year >
</ cd >
< cd >
< title > The very best of </ title >
< artist > Cat Stevens </ artist >
< country > UK </ country >
< company > Island </ company >
< price > 8.90 </ price >
< year > 1990 </ year >
</ cd >
< cd >
< title > Stop </ title >
< artist > Sam Brown </ artist >
< country > UK </ country >
< company > A and M </ company >
< price > 8.90 </ price >
< year > 1988 </ year >
</ cd >
< cd >
< title > Bridge of Spies </ title >
< artist > T`Pau </ artist >
< country > UK </ country >
< company > Siren </ company >
< price > 7.90 </ price >
< year > 1987 </ year >
</ cd >
< cd >
< title > Private Dancer </ title >
< artist > Tina Turner </ artist >
< country > UK </ country >
< company > Capitol </ company >
< price > 8.90 </ price >
< year > 1983 </ year >
</ cd >
< cd >
< title > Midt om natten </ title >
< artist > Kim Larsen </ artist >
< country > EU </ country >
< company > Medley </ company >
< price > 7.80 </ price >
< year > 1983 </ year >
</ cd >
< cd >
< title > Pavarotti Gala Concert </ title >
< artist > Luciano Pavarotti </ artist >
< country > UK </ country >
< company > DECCA </ company >
< price > 9.90 </ price >
< year > 1991 </ year >
</ cd >
< cd >
< title > The dock of the bay </ title >
< artist > Otis Redding </ artist >
< country > USA </ country >
< company > Atlantic </ company >
< price > 7.90 </ price >
< year > 1987 </ year >
</ cd >
< cd >
< title > Picture book </ title >
< artist > Simply Red </ artist >
< country > EU </ country >
< company > Elektra </ company >
< price > 7.20 </ price >
< year > 1985 </ year >
</ cd >
< cd >
< title > Red </ title >
< artist > The Communards </ artist >
< country > UK </ country >
< company > London </ company >
< price > 7.80 </ price >
< year > 1987 </ year >
</ cd >
< cd >
< title > Unchain my heart </ title >
< artist > Joe Cocker </ artist >
< country > USA </ country >
< company > EMI </ company >
< price > 8.20 </ price >
< year > 1987 </ year >
</ cd >
</ catalog >
<!-- Edited with XML Spy v2007 (http: // www.altova.com) -->
< catalog >
< cd >
< title > Empire Burlesque </ title >
< artist > Bob Dylan </ artist >
< country > USA </ country >
< company > Columbia </ company >
< price > 10.90 </ price >
< year > 1985 </ year >
</ cd >
< cd >
< title > Hide your heart </ title >
< artist > Bonnie Tyler </ artist >
< country > UK </ country >
< company > CBS Records </ company >
< price > 9.90 </ price >
< year > 1988 </ year >
</ cd >
< cd >
< title > Greatest Hits </ title >
< artist > Dolly Parton </ artist >
< country > USA </ country >
< company > RCA </ company >
< price > 9.90 </ price >
< year > 1982 </ year >
</ cd >
< cd >
< title > Still got the blues </ title >
< artist > Gary Moore </ artist >
< country > UK </ country >
< company > Virgin records </ company >
< price > 10.20 </ price >
< year > 1990 </ year >
</ cd >
< cd >
< title > Eros </ title >
< artist > Eros Ramazzotti </ artist >
< country > EU </ country >
< company > BMG </ company >
< price > 9.90 </ price >
< year > 1997 </ year >
</ cd >
< cd >
< title > One night only </ title >
< artist > Bee Gees </ artist >
< country > UK </ country >
< company > Polydor </ company >
< price > 10.90 </ price >
< year > 1998 </ year >
</ cd >
< cd >
< title > Sylvias Mother </ title >
< artist > Dr.Hook </ artist >
< country > UK </ country >
< company > CBS </ company >
< price > 8.10 </ price >
< year > 1973 </ year >
</ cd >
< cd >
< title > Maggie May </ title >
< artist > Rod Stewart </ artist >
< country > UK </ country >
< company > Pickwick </ company >
< price > 8.50 </ price >
< year > 1990 </ year >
</ cd >
< cd >
< title > Romanza </ title >
< artist > Andrea Bocelli </ artist >
< country > EU </ country >
< company > Polydor </ company >
< price > 10.80 </ price >
< year > 1996 </ year >
</ cd >
< cd >
< title > When a man loves a woman </ title >
< artist > Percy Sledge </ artist >
< country > USA </ country >
< company > Atlantic </ company >
< price > 8.70 </ price >
< year > 1987 </ year >
</ cd >
< cd >
< title > Black angel </ title >
< artist > Savage Rose </ artist >
< country > EU </ country >
< company > Mega </ company >
< price > 10.90 </ price >
< year > 1995 </ year >
</ cd >
< cd >
< title > 1999 Grammy Nominees </ title >
< artist > Many </ artist >
< country > USA </ country >
< company > Grammy </ company >
< price > 10.20 </ price >
< year > 1999 </ year >
</ cd >
< cd >
< title > For the good times </ title >
< artist > Kenny Rogers </ artist >
< country > UK </ country >
< company > Mucik Master </ company >
< price > 8.70 </ price >
< year > 1995 </ year >
</ cd >
< cd >
< title > Big Willie style </ title >
< artist > Will Smith </ artist >
< country > USA </ country >
< company > Columbia </ company >
< price > 9.90 </ price >
< year > 1997 </ year >
</ cd >
< cd >
< title > Tupelo Honey </ title >
< artist > Van Morrison </ artist >
< country > UK </ country >
< company > Polydor </ company >
< price > 8.20 </ price >
< year > 1971 </ year >
</ cd >
< cd >
< title > Soulsville </ title >
< artist > Jorn Hoel </ artist >
< country > Norway </ country >
< company > WEA </ company >
< price > 7.90 </ price >
< year > 1996 </ year >
</ cd >
< cd >
< title > The very best of </ title >
< artist > Cat Stevens </ artist >
< country > UK </ country >
< company > Island </ company >
< price > 8.90 </ price >
< year > 1990 </ year >
</ cd >
< cd >
< title > Stop </ title >
< artist > Sam Brown </ artist >
< country > UK </ country >
< company > A and M </ company >
< price > 8.90 </ price >
< year > 1988 </ year >
</ cd >
< cd >
< title > Bridge of Spies </ title >
< artist > T`Pau </ artist >
< country > UK </ country >
< company > Siren </ company >
< price > 7.90 </ price >
< year > 1987 </ year >
</ cd >
< cd >
< title > Private Dancer </ title >
< artist > Tina Turner </ artist >
< country > UK </ country >
< company > Capitol </ company >
< price > 8.90 </ price >
< year > 1983 </ year >
</ cd >
< cd >
< title > Midt om natten </ title >
< artist > Kim Larsen </ artist >
< country > EU </ country >
< company > Medley </ company >
< price > 7.80 </ price >
< year > 1983 </ year >
</ cd >
< cd >
< title > Pavarotti Gala Concert </ title >
< artist > Luciano Pavarotti </ artist >
< country > UK </ country >
< company > DECCA </ company >
< price > 9.90 </ price >
< year > 1991 </ year >
</ cd >
< cd >
< title > The dock of the bay </ title >
< artist > Otis Redding </ artist >
< country > USA </ country >
< company > Atlantic </ company >
< price > 7.90 </ price >
< year > 1987 </ year >
</ cd >
< cd >
< title > Picture book </ title >
< artist > Simply Red </ artist >
< country > EU </ country >
< company > Elektra </ company >
< price > 7.20 </ price >
< year > 1985 </ year >
</ cd >
< cd >
< title > Red </ title >
< artist > The Communards </ artist >
< country > UK </ country >
< company > London </ company >
< price > 7.80 </ price >
< year > 1987 </ year >
</ cd >
< cd >
< title > Unchain my heart </ title >
< artist > Joe Cocker </ artist >
< country > USA </ country >
< company > EMI </ company >
< price > 8.20 </ price >
< year > 1987 </ year >
</ cd >
</ catalog >