论坛: 网站建设 标题: xmldom+xml+xslt转换为Html 复制本贴地址    
作者: NetFog [q70213526]    版主   登录
代码:

<%
''===============================================
''@Date          2007-07-10
''@Author        NetFog
''@ModifyTime    2007-07-10
''@Desc          使用XSLT+XML+XMLDOM完成网页的模块化
''===============================================
Class Xslt

Private IsError                    '是否出错
Private Message                    '返回消息
Private XmlObj                    'xml的xmlDom对象
Private XslObj                    'xsl的xmlDom对象
Private OutPutObj                  '用输出HTML的xml对象
Private XmlData                    'XML数据源如果XmlType为File类型,则值为一个路径,XmlType为Para则为变量
Private XslTemplate                'XSL模版
Private XmlType                    'XML源类型,file或者para
Private XmlSaveFolder              '将要生成的XML文档生成目录,必须是在生成XML模式下
Private XmlSaveName                '将要生成的XML文档名称,必须是在生成XML模式下
Private HtmlSaveFolder            '将要生成的HTML文档生成目录,必须是在生成HTML模式下
Private HtmlSaveName              '将要生成的HTML文档的名称,必须是在生成HTML模式下
Private CreateMode                '0表示生成xml文档html文档两者,1表示只生成html,2表示只生成xml,3表示公返回变量

Rem 初始化两个必须对象
Private Sub Class_Initialize()
Set XmlObj = Server.CreateObject("Microsoft.XMLDOM")
XmlObj.async = False
Set XslObj = Server.CreateObject("Microsoft.XMLDOM")
XslObj.async = False
IsError = False
Message = ""
End Sub

Rem 在须要生成HTML时,初始化用于生成HTML的XMLDOM对象
Private Sub IntSaveHtmlXmlDomObj()
Set OutPutObj = Server.CreateObject("Microsoft.XMLDOM")
End Sub

Rem 设置XML数据源,可接受XML文件或者有效的符合XML规范的变量
Public Property Let Data(ByVal Value)
XmlData = Value
End Property

Public Property Let Xsl(ByVal Value)
XslTemplate = Value
End Property

Rem 设置数据源类型,之所以将此属性和上面属性设置分开,是因为后面的生成操作有些不同.
Public Property Let vType(ByVal Value)
Value = Lcase(Cstr(Value))
If Value = "file" Then
XmlType = Value
Else
XmlType = "para"
End If
End Property

Rem 设置生成的XML文件存放目录,前提是必须保证目录存在,否则出错
Public Property Let XmlFolder(ByVal Value)
XmlSaveFolder = Value
End Property

Rem 设置生成的XML文件名,必须指定扩展名
Public Property Let XmlName(ByVal Value)
XmlSaveName = Value
End Property

Rem 设置生成的HTML文件存放目录,前提是必须保证目录存在,否则出错
Public Property Let HtmlFolder(ByVal Value)
HtmlSaveFolder = Value
End Property

Rem 设置生成的HTML文件名,必须指定扩展名
Public Property Let HtmlName(ByVal Value)
HtmlSaveName = Value
End Property

Rem 设置文件生成模式,0表示生成xml文档和html文档两者,1表示只生成html,2表示只生成xml,3表示返回变量
Public Property Let CreateType(ByVal Value)
CreateMode = Value
If IsNumeric(CreateNode) = False Then
IsError = True
Message = "文档生成模式参数错误。"
End If
End Property

Rem 取得是否产生错误的方法,False表示无错,True表示有错
Public Property Get ErrBool()
ErrBool = IsError
End Property

Rem 取得报告,无论出错或者成功,均通过此报告
Public Property Get Report()
Report = Message
End Property

Rem 执行实际操作,ReturnFlg为0表示不将HTML字符返回(在CreateMode为3时,无论如何都会返回。),为1表示HTML字符返回
Public Function ExeCute(ByVal ReturnFlg)

On Error Resume Next
Dim Temp
If IsNumeric(ReturnFlg) = False Then
IsError = True
Message = "ExeCute执行错误,参数必须是数字。本操作失败!"
Exit Function
Else
ReturnFlg = Cint(ReturnFlg)
If ReturnFlg = 0 Then
ReturnFlg = 0
Else
ReturnFlg = 1
End IF
End If
If XmlType = "file" Then
XmlObj.Load(Server.MapPath(XmlData))
If Err.Number <> 0 Then
IsError = True
Message = "您输入的[" & XmlData & "]路径不正确或者不是有效的XML文档。本操作失败!"
Exit Function
End If
Else
XmlObj.LoadXML(XmlData)
If Err.Number <> 0 Then
IsError = True
Message = "您输入的变量不符合有效的XML文档规范。本操作失败!"
Exit Function
End If
End If
XslObj.Load(Server.MapPath(XslTemplate))
If Err.Number <> 0 Then
IsError = True
Message = "您输入的[" & XslTemplate & "]模块不符合有效的Xslt文档规范。本操作失败!"
Exit Function
End If
If CreateMode = 0 Or CreateMode = 2 Then
XmlObj.Save(Server.MapPath(XmlSaveFolder & XmlSaveName))
If Err.Number <> 0 Then
IsError = True
Message = "您指定的生成XML文档的路径不正确。本操作失败!"
Exit Function
Else
IsError = False
Message = "成功生成XML文档!<br>"
End If
End If
If CreateMode = 0 Or CreateMode = 1 Then
Call IntSaveHtmlXmlDomObj()
Call XmlObj.TransFormNodeToObject(XslObj,OutPutObj)
OutPutObj.Save(Server.MapPath(HtmlSaveFolder & HtmlSaveName))
If Err.Number <> 0 Then
IsError = True
Message = "您指定的生成HTML文档的路径不正确。本操作失败!"
Exit Function
Else
IsError = False
Message = Message & "成功生成HTML文档!<br>"
End If
End If
If CreateMode = 3 Or ReturnFlg = 1 Then
Temp = XmlObj.TransFormNode(XslObj)
If Err.Number <> 0 Then
IsError = True
Message = "返回HTML字符变量操作不成功!"
Exit Function
Else
IsError = False
Message = Message & "成功将HTML字符以变量形式返回!<br>"
End If
ExeCute = Temp
End If

End Function

End Class
%>




[此贴被 NetFog(q70213526) 在 07月13日15时29分 编辑过]

地主 发表时间: 07-07-13 15:28

回复: Free [toumings3]   论坛用户   登录
我顶N哥
N哥 知道我是谁了吧

B1层 发表时间: 07-07-29 07:07

回复: NetFog [q70213526]   版主   登录
WHO???

朋友那么多.我怎么晓得是哪个..

B2层 发表时间: 07-07-29 16:15

回复: bking [bking]   版主   登录
历害历害,顶一个。

B3层 发表时间: 07-11-10 22:24

论坛: 网站建设

20CN网络安全小组版权所有
Copyright © 2000-2010 20CN Security Group. All Rights Reserved.
论坛程序编写:NetDemon

粤ICP备05087286号