第7章 XSL高级应用

将XML转换为HTML输出

这是一种非常常见的方法,因为如果遇到不支持XML的浏览器,必须用HTML来保持兼容性.
要使用这种方法,就要利用javascript和DOMDocument对象.

一般的方法:
定义两个DOMDocument对象,一般load xml文档,一个load xsl文档,然后用transformNode进行转换输出.

例子:

ex28.xml
None.gif <? xml version="1.0" encoding="gb2312" ?>
None.gif
<!--  注意这里没有对XSL文件的引用  -->
None.gif
< CATALOG >
None.gif    
< CD >
None.gif        
< TITLE > 天空 </ TITLE >
None.gif        
< ARTIST > 王菲 </ ARTIST >
None.gif        
< LANGUAGE > 国语 </ LANGUAGE >
None.gif        
< COMPANY > 福茂唱片 </ COMPANY >
None.gif        
< YEAR > 1995 </ YEAR >
None.gif        
< PRICE > 28元 </ PRICE >
None.gif    
</ CD >
None.gif    
< CD >
None.gif        
< TITLE > 不老的传说 </ TITLE >
None.gif        
< ARTIST > 张学友 </ ARTIST >
None.gif        
< LANGUAGE > 粤语 </ LANGUAGE >
None.gif        
< COMPANY > 宝丽金 </ COMPANY >
None.gif        
< YEAR > 1997 </ YEAR >
None.gif        
< PRICE > 28元 </ PRICE >
None.gif    
</ CD >
None.gif
</ CATALOG >
None.gif

ex28.xsl
None.gif <? xml version="1.0" encoding="gb2312" ?>
None.gif
< xsl:stylesheet  version ="1.0"  xmlns:xsl ="http://www.w3.org/1999/XSL/Transform"  xmlns:fo ="http://www.w3.org/1999/XSL/Format" >
None.gif
< xsl:template  match ="/" >
None.gif    
< html >
None.gif        
< head >
None.gif            
< title > 转换结果 </ title >
None.gif        
</ head >
None.gif        
< body >
None.gif            
< align ="center" >< font  color ="#FF0000"  size ="5" > CD大卖场 </ font ></ p >
None.gif            
< table  width ="95%"  border ="1"  bgcolor ="#00FFFF" >
None.gif                
< tbody >
None.gif                    
< tr >
None.gif                        
< td  width ="20%" >< div  align ="center" > 专辑名称 </ div ></ td >
None.gif                        
< td  width ="15%" >< div  align ="center" > 歌手 </ div ></ td >
None.gif                        
< td  width ="15%" >< div  align ="center" > 语言 </ div ></ td >
None.gif                        
< td  width ="15%" >< div  align ="center" > 发行公司 </ div ></ td >
None.gif                        
< td  width ="15%" >< div  align ="center" > 年份 </ div ></ td >
None.gif                        
< td  width ="15%" >< div  align ="center" > 价格 </ div ></ td >
None.gif                    
</ tr >
None.gif                    
< xsl:for-each  select ="//CD" >
None.gif                        
< tr >
None.gif                            
< td >< div  align ="center" >
None.gif                                
< xsl:value-of  select ="TITLE" />
None.gif                            
</ div ></ td >
None.gif                            
< td >< div  align ="center" >
None.gif                                
< xsl:value-of  select ="ARTIST" />
None.gif                            
</ div ></ td >
None.gif                            
< td >< div  align ="center" >
None.gif                                
< xsl:value-of  select ="LANGUAGE" />
None.gif                            
</ div ></ td >
None.gif                            
< td >< div  align ="center" >
None.gif                                
< xsl:value-of  select ="COMPANY" />
None.gif                            
</ div ></ td >
None.gif                            
< td >< div  align ="center" >
None.gif                                
< xsl:value-of  select ="YEAR" />
None.gif                            
</ div ></ td >
None.gif                            
< td >< div  align ="center" >
None.gif                                
< xsl:value-of  select ="PRICE" />
None.gif                            
</ div ></ td >
None.gif                        
</ tr >
None.gif                    
</ xsl:for-each >
None.gif                
</ tbody >
None.gif            
</ table >
None.gif        
</ body >
None.gif    
</ html >
None.gif
</ xsl:template >
None.gif
</ xsl:stylesheet >
None.gif

output.html
None.gif < html >
None.gif   
< head >
None.gif      
< title > 转换为HTML </ title >
None.gif      
< meta  http-equiv ="Content-Type"  content ="text/html;charset=gb2312" />  
None.gif   
</ head >
None.gif   
< XML  id ="source"  src ="ex28.xml" />
None.gif   
< XML  id ="stylesheet"  src ="ex28.xsl" />
ExpandedBlockStart.gifContractedBlock.gif   
< script  language ="javascript" > dot.gif
InBlock.gif       
function viewxml()
ExpandedSubBlockStart.gifContractedSubBlock.gif       
dot.gif{
InBlock.gif           a.innerText
=source.xml;
ExpandedSubBlockEnd.gif        }

InBlock.gif        
function viewxsl()
ExpandedSubBlockStart.gifContractedSubBlock.gif        
dot.gif{
InBlock.gif            a.innerText
=stylesheet.xml;
ExpandedSubBlockEnd.gif        }

InBlock.gif        
function change()
ExpandedSubBlockStart.gifContractedSubBlock.gif        
dot.gif{
InBlock.gif            
var xmldom=new ActiveXObject("Microsoft.XMLDOM");
InBlock.gif            xmldom.load(
"ex28.xml");
InBlock.gif            
var xsldom=new ActiveXObject("Microsoft.XMLDOM");
InBlock.gif            xsldom.load(
"ex28.xsl");
InBlock.gif            document.write(xmldom.transformNode(xsldom));
ExpandedSubBlockEnd.gif        }

ExpandedBlockEnd.gif   
</ script >
None.gif   
< body >
None.gif      
< p > 单击下面三个按钮查看效果 </ p >
None.gif      
< p > &nbsp; </ p >
None.gif      
< input  name ="button1"  type ="button"  value ="显示XML文件"  onclick ="viewxml()" />
None.gif      
< input  name ="button2"  type ="button"  value ="显示XSL文件"  onclick ="viewxsl()" />
None.gif      
< input  name ="button3"  type ="button"  value ="显示转换文件"  onclick ="change()" />
None.gif      
< div  id ="a" ></ div >
None.gif   
</ body >
None.gif
</ html >

这样输出的HTML就直接用document.write写出转换方法transformNode的返回HTML代码就可以了.

转载于:https://www.cnblogs.com/wddavid/archive/2005/07/21/197259.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值